Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Backofen, Rainer
amdis
Commits
28431695
Commit
28431695
authored
Aug 11, 2010
by
Thomas Witkowski
Browse files
Fixed some bugs with dual mesh. Some more code refactoring.
parent
f213d5b9
Changes
14
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/Assembler.cc
View file @
28431695
...
@@ -80,6 +80,7 @@ namespace AMDiS {
...
@@ -80,6 +80,7 @@ namespace AMDiS {
const
ElInfo
*
colElInfo
,
const
ElInfo
*
colElInfo
,
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
largeElInfo
,
const
ElInfo
*
largeElInfo
,
bool
rowColFeSpaceEqual
,
ElementMatrix
&
userMat
,
ElementMatrix
&
userMat
,
double
factor
)
double
factor
)
{
{
...
@@ -93,9 +94,9 @@ namespace AMDiS {
...
@@ -93,9 +94,9 @@ namespace AMDiS {
if
((
el
!=
lastMatEl
&&
el
!=
lastVecEl
)
||
!
operat
->
isOptimized
())
{
if
((
el
!=
lastMatEl
&&
el
!=
lastVecEl
)
||
!
operat
->
isOptimized
())
{
if
(
smallElInfo
==
colElInfo
)
if
(
smallElInfo
==
colElInfo
)
initElement
(
smallElInfo
);
initElement
(
smallElInfo
);
else
else
initElement
(
smallElInfo
,
largeElInfo
);
initElement
(
smallElInfo
,
largeElInfo
);
}
}
if
(
el
!=
lastMatEl
||
!
operat
->
isOptimized
())
{
if
(
el
!=
lastMatEl
||
!
operat
->
isOptimized
())
{
...
@@ -118,65 +119,70 @@ namespace AMDiS {
...
@@ -118,65 +119,70 @@ namespace AMDiS {
ElementMatrix
&
m
=
ElementMatrix
&
m
=
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
if
(
smallElInfo
==
colElInfo
)
if
(
!
rowColFeSpaceEqual
)
{
tmpMat
=
m
*
mat
;
if
(
smallElInfo
==
colElInfo
)
else
tmpMat
=
m
*
mat
;
tmpMat
=
mat
*
trans
(
m
);
else
tmpMat
=
mat
*
trans
(
m
);
mat
=
tmpMat
;
mat
=
tmpMat
;
}
}
}
if
(
firstOrderAssemblerGrdPsi
)
{
if
(
firstOrderAssemblerGrdPsi
)
{
firstOrderAssemblerGrdPsi
->
calculateElementMatrix
(
smallElInfo
,
mat
);
firstOrderAssemblerGrdPsi
->
calculateElementMatrix
(
smallElInfo
,
mat
);
if
(
largeElInfo
==
rowElInfo
)
{
if
(
!
rowColFeSpaceEqual
)
{
ElementMatrix
&
m
=
if
(
largeElInfo
==
rowElInfo
)
{
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
ElementMatrix
&
m
=
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
tmpMat
=
m
*
mat
;
}
else
{
tmpMat
=
m
*
mat
;
ElementMatrix
&
m
=
}
else
{
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
ElementMatrix
&
m
=
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
tmpMat
=
mat
*
trans
(
m
);
}
tmpM
at
=
mat
*
trans
(
m
)
;
m
at
=
tmpMat
;
}
}
mat
=
tmpMat
;
}
}
if
(
firstOrderAssemblerGrdPhi
)
{
if
(
firstOrderAssemblerGrdPhi
)
{
firstOrderAssemblerGrdPhi
->
calculateElementMatrix
(
smallElInfo
,
mat
);
firstOrderAssemblerGrdPhi
->
calculateElementMatrix
(
smallElInfo
,
mat
);
if
(
largeElInfo
==
colElInfo
)
{
if
(
!
rowColFeSpaceEqual
)
{
ElementMatrix
&
m
=
if
(
largeElInfo
==
colElInfo
)
{
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
ElementMatrix
&
m
=
smallElInfo
->
getSubElemGradCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
tmpMat
=
mat
*
trans
(
m
);
}
else
{
tmpMat
=
mat
*
trans
(
m
);
ElementMatrix
&
m
=
}
else
{
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
ElementMatrix
&
m
=
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
tmpMat
=
m
*
mat
;
}
tmpM
at
=
m
*
m
at
;
m
at
=
tmpM
at
;
}
}
mat
=
tmpMat
;
}
}
if
(
zeroOrderAssembler
)
{
if
(
zeroOrderAssembler
)
{
zeroOrderAssembler
->
calculateElementMatrix
(
smallElInfo
,
mat
);
zeroOrderAssembler
->
calculateElementMatrix
(
smallElInfo
,
mat
);
ElementMatrix
&
m
=
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
if
(
smallElInfo
==
colElInfo
)
tmpMat
=
m
*
mat
;
else
tmpMat
=
mat
;
// else
if
(
!
rowColFeSpaceEqual
)
{
// tmpMat = mat * trans(m);
ElementMatrix
&
m
=
smallElInfo
->
getSubElemCoordsMat
(
rowFeSpace
->
getBasisFcts
()
->
getDegree
());
mat
=
tmpMat
;
if
(
smallElInfo
==
colElInfo
)
tmpMat
=
m
*
mat
;
else
tmpMat
=
mat
*
trans
(
m
);
mat
=
tmpMat
;
}
}
}
if
(
rememberElMat
&&
&
userMat
!=
&
elementMatrix
)
if
(
rememberElMat
&&
&
userMat
!=
&
elementMatrix
)
...
@@ -342,7 +348,7 @@ namespace AMDiS {
...
@@ -342,7 +348,7 @@ namespace AMDiS {
if
(
mainEl
!=
lastMatEl
)
{
if
(
mainEl
!=
lastMatEl
)
{
set_to_zero
(
elementMatrix
);
set_to_zero
(
elementMatrix
);
calculateElementMatrix
(
mainElInfo
,
auxElInfo
,
smallElInfo
,
largeElInfo
,
calculateElementMatrix
(
mainElInfo
,
auxElInfo
,
smallElInfo
,
largeElInfo
,
elementMatrix
);
false
,
elementMatrix
);
}
}
for
(
int
i
=
0
;
i
<
nBasFcts
;
i
++
)
{
for
(
int
i
=
0
;
i
<
nBasFcts
;
i
++
)
{
...
...
AMDiS/src/Assembler.h
View file @
28431695
...
@@ -69,6 +69,7 @@ namespace AMDiS {
...
@@ -69,6 +69,7 @@ namespace AMDiS {
const
ElInfo
*
colElInfo
,
const
ElInfo
*
colElInfo
,
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
largeElInfo
,
const
ElInfo
*
largeElInfo
,
bool
rowColFeSpaceEqual
,
ElementMatrix
&
userMat
,
ElementMatrix
&
userMat
,
double
factor
=
1.0
);
double
factor
=
1.0
);
...
...
AMDiS/src/DOFMatrix.cc
View file @
28431695
...
@@ -286,13 +286,16 @@ namespace AMDiS {
...
@@ -286,13 +286,16 @@ namespace AMDiS {
if
(
op
)
{
if
(
op
)
{
op
->
getElementMatrix
(
rowElInfo
,
colElInfo
,
smallElInfo
,
largeElInfo
,
op
->
getElementMatrix
(
rowElInfo
,
colElInfo
,
smallElInfo
,
largeElInfo
,
elementMatrix
);
false
,
elementMatrix
);
}
else
{
}
else
{
std
::
vector
<
Operator
*>::
iterator
it
=
operators
.
begin
();
std
::
vector
<
Operator
*>::
iterator
it
=
operators
.
begin
();
std
::
vector
<
double
*>::
iterator
factorIt
=
operatorFactor
.
begin
();
std
::
vector
<
double
*>::
iterator
factorIt
=
operatorFactor
.
begin
();
for
(;
it
!=
operators
.
end
();
++
it
,
++
factorIt
)
for
(;
it
!=
operators
.
end
();
++
it
,
++
factorIt
)
(
*
it
)
->
getElementMatrix
(
rowElInfo
,
colElInfo
,
(
*
it
)
->
getElementMatrix
(
rowElInfo
,
smallElInfo
,
largeElInfo
,
colElInfo
,
smallElInfo
,
largeElInfo
,
false
,
elementMatrix
,
elementMatrix
,
*
factorIt
?
**
factorIt
:
1.0
);
*
factorIt
?
**
factorIt
:
1.0
);
}
}
...
@@ -328,8 +331,11 @@ namespace AMDiS {
...
@@ -328,8 +331,11 @@ namespace AMDiS {
it
!=
operators
.
end
();
it
!=
operators
.
end
();
++
it
,
++
factorIt
)
{
++
it
,
++
factorIt
)
{
if
((
*
it
)
->
getNeedDualTraverse
())
{
if
((
*
it
)
->
getNeedDualTraverse
())
{
(
*
it
)
->
getElementMatrix
(
mainElInfo
,
auxElInfo
,
(
*
it
)
->
getElementMatrix
(
mainElInfo
,
smallElInfo
,
largeElInfo
,
auxElInfo
,
smallElInfo
,
largeElInfo
,
rowFeSpace
==
colFeSpace
,
elementMatrix
,
elementMatrix
,
*
factorIt
?
**
factorIt
:
1.0
);
*
factorIt
?
**
factorIt
:
1.0
);
}
}
...
...
AMDiS/src/DOFVector.cc
View file @
28431695
...
@@ -776,7 +776,8 @@ namespace AMDiS {
...
@@ -776,7 +776,8 @@ namespace AMDiS {
double
val
=
0.0
;
double
val
=
0.0
;
for
(
int
k
=
0
;
k
<
nBasFcts
;
k
++
)
for
(
int
k
=
0
;
k
<
nBasFcts
;
k
++
)
val
+=
m
[
j
][
k
]
*
(
*
(
basFcts
->
getPhi
(
k
)))(
quad
->
getLambda
(
i
));
val
+=
m
[
j
][
k
]
*
(
*
(
basFcts
->
getPhi
(
k
)))(
quad
->
getLambda
(
i
));
vecAtQPs
[
i
]
+=
val
;
vecAtQPs
[
i
]
+=
localVec
[
j
]
*
val
;
}
}
}
}
}
}
...
...
AMDiS/src/ElInfo2d.cc
View file @
28431695
...
@@ -108,19 +108,11 @@ namespace AMDiS {
...
@@ -108,19 +108,11 @@ namespace AMDiS {
ElInfo2d
::
ElInfo2d
(
Mesh
*
aMesh
)
ElInfo2d
::
ElInfo2d
(
Mesh
*
aMesh
)
:
ElInfo
(
aMesh
)
:
ElInfo
(
aMesh
)
{
{}
e1
=
new
WorldVector
<
double
>
;
e2
=
new
WorldVector
<
double
>
;
normal
=
new
WorldVector
<
double
>
;
}
ElInfo2d
::~
ElInfo2d
()
ElInfo2d
::~
ElInfo2d
()
{
{}
delete
e1
;
delete
e2
;
delete
normal
;
}
void
ElInfo2d
::
fillMacroInfo
(
const
MacroElement
*
mel
)
void
ElInfo2d
::
fillMacroInfo
(
const
MacroElement
*
mel
)
...
@@ -585,7 +577,7 @@ namespace AMDiS {
...
@@ -585,7 +577,7 @@ namespace AMDiS {
}
}
}
}
double
ElInfo2d
::
calcGrdLambda
(
DimVec
<
WorldVector
<
double
>
>&
grd
_lam
)
double
ElInfo2d
::
calcGrdLambda
(
DimVec
<
WorldVector
<
double
>
>&
grd
)
{
{
FUNCNAME
(
"ElInfo2d::calcGrdLambda()"
);
FUNCNAME
(
"ElInfo2d::calcGrdLambda()"
);
...
@@ -595,31 +587,30 @@ namespace AMDiS {
...
@@ -595,31 +587,30 @@ namespace AMDiS {
int
dim
=
mesh
->
getDim
();
int
dim
=
mesh
->
getDim
();
for
(
int
i
=
0
;
i
<
dimOfWorld
;
i
++
)
{
for
(
int
i
=
0
;
i
<
dimOfWorld
;
i
++
)
{
(
*
e1
)
[
i
]
=
coord
[
1
][
i
]
-
coord
[
0
][
i
];
e1
[
i
]
=
coord
[
1
][
i
]
-
coord
[
0
][
i
];
(
*
e2
)
[
i
]
=
coord
[
2
][
i
]
-
coord
[
0
][
i
];
e2
[
i
]
=
coord
[
2
][
i
]
-
coord
[
0
][
i
];
}
}
if
(
dimOfWorld
==
2
)
{
if
(
dimOfWorld
==
2
)
{
double
sdet
=
(
*
e1
)
[
0
]
*
(
*
e2
)
[
1
]
-
(
*
e1
)
[
1
]
*
(
*
e2
)
[
0
];
double
sdet
=
e1
[
0
]
*
e2
[
1
]
-
e1
[
1
]
*
e2
[
0
];
adet
=
abs
(
sdet
);
adet
=
abs
(
sdet
);
if
(
adet
<
1.0E-25
)
{
if
(
adet
<
1.0E-25
)
{
MSG
(
"abs(det) = %f
\n
"
,
adet
);
MSG
(
"abs(det) = %f
\n
"
,
adet
);
for
(
int
i
=
0
;
i
<=
dim
;
i
++
)
for
(
int
i
=
0
;
i
<=
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
dimOfWorld
;
j
++
)
grd
[
i
].
set
(
0.0
);
grd_lam
[
i
][
j
]
=
0.0
;
}
else
{
}
else
{
double
det1
=
1.0
/
sdet
;
double
det1
=
1.0
/
sdet
;
grd
_lam
[
1
][
0
]
=
(
*
e2
)
[
1
]
*
det1
;
// a11: (a_ij) = A^{-T}
grd
[
1
][
0
]
=
e2
[
1
]
*
det1
;
// a11: (a_ij) = A^{-T}
grd
_lam
[
1
][
1
]
=
-
(
*
e2
)
[
0
]
*
det1
;
// a21
grd
[
1
][
1
]
=
-
e2
[
0
]
*
det1
;
// a21
grd
_lam
[
2
][
0
]
=
-
(
*
e1
)
[
1
]
*
det1
;
// a12
grd
[
2
][
0
]
=
-
e1
[
1
]
*
det1
;
// a12
grd
_lam
[
2
][
1
]
=
(
*
e1
)
[
0
]
*
det1
;
// a22
grd
[
2
][
1
]
=
e1
[
0
]
*
det1
;
// a22
grd
_lam
[
0
][
0
]
=
-
grd
_lam
[
1
][
0
]
-
grd
_lam
[
2
][
0
];
grd
[
0
][
0
]
=
-
grd
[
1
][
0
]
-
grd
[
2
][
0
];
grd
_lam
[
0
][
1
]
=
-
grd
_lam
[
1
][
1
]
-
grd
_lam
[
2
][
1
];
grd
[
0
][
1
]
=
-
grd
[
1
][
1
]
-
grd
[
2
][
1
];
}
}
}
else
{
}
else
{
vectorProduct
(
*
e1
,
*
e2
,
*
normal
);
vectorProduct
(
e1
,
e2
,
normal
);
adet
=
norm
(
normal
);
adet
=
norm
(
normal
);
...
@@ -627,21 +618,21 @@ namespace AMDiS {
...
@@ -627,21 +618,21 @@ namespace AMDiS {
MSG
(
"abs(det) = %lf
\n
"
,
adet
);
MSG
(
"abs(det) = %lf
\n
"
,
adet
);
for
(
int
i
=
0
;
i
<=
dim
;
i
++
)
for
(
int
i
=
0
;
i
<=
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
dimOfWorld
;
j
++
)
for
(
int
j
=
0
;
j
<
dimOfWorld
;
j
++
)
grd
_lam
[
i
][
j
]
=
0.0
;
grd
[
i
][
j
]
=
0.0
;
}
else
{
}
else
{
vectorProduct
(
*
e2
,
*
normal
,
grd
_lam
[
1
]);
vectorProduct
(
e2
,
normal
,
grd
[
1
]);
vectorProduct
(
*
normal
,
*
e1
,
grd
_lam
[
2
]);
vectorProduct
(
normal
,
e1
,
grd
[
2
]);
double
adet2
=
1.0
/
(
adet
*
adet
);
double
adet2
=
1.0
/
(
adet
*
adet
);
for
(
int
i
=
0
;
i
<
dimOfWorld
;
i
++
)
{
for
(
int
i
=
0
;
i
<
dimOfWorld
;
i
++
)
{
grd
_lam
[
1
][
i
]
*=
adet2
;
grd
[
1
][
i
]
*=
adet2
;
grd
_lam
[
2
][
i
]
*=
adet2
;
grd
[
2
][
i
]
*=
adet2
;
}
}
grd
_lam
[
0
][
0
]
=
-
grd
_lam
[
1
][
0
]
-
grd
_lam
[
2
][
0
];
grd
[
0
][
0
]
=
-
grd
[
1
][
0
]
-
grd
[
2
][
0
];
grd
_lam
[
0
][
1
]
=
-
grd
_lam
[
1
][
1
]
-
grd
_lam
[
2
][
1
];
grd
[
0
][
1
]
=
-
grd
[
1
][
1
]
-
grd
[
2
][
1
];
grd
_lam
[
0
][
2
]
=
-
grd
_lam
[
1
][
2
]
-
grd
_lam
[
2
][
2
];
grd
[
0
][
2
]
=
-
grd
[
1
][
2
]
-
grd
[
2
][
2
];
}
}
}
}
...
@@ -710,7 +701,7 @@ namespace AMDiS {
...
@@ -710,7 +701,7 @@ namespace AMDiS {
normal
[
0
]
=
coord
[
i1
][
1
]
-
coord
[
i0
][
1
];
normal
[
0
]
=
coord
[
i1
][
1
]
-
coord
[
i0
][
1
];
normal
[
1
]
=
coord
[
i0
][
0
]
-
coord
[
i1
][
0
];
normal
[
1
]
=
coord
[
i0
][
0
]
-
coord
[
i1
][
0
];
}
else
{
// dow == 3
}
else
{
// dow == 3
WorldVector
<
double
>
e0
,
e1
,
e2
,
elementNormal
;
WorldVector
<
double
>
e0
,
elementNormal
;
e0
=
coord
[
i1
];
e0
=
coord
[
i1
];
e0
-=
coord
[
i0
];
e0
-=
coord
[
i0
];
...
...
AMDiS/src/ElInfo2d.h
View file @
28431695
...
@@ -64,7 +64,7 @@ namespace AMDiS {
...
@@ -64,7 +64,7 @@ namespace AMDiS {
protected:
protected:
/// Temp vectors for function \ref calcGrdLambda.
/// Temp vectors for function \ref calcGrdLambda.
WorldVector
<
double
>
*
e1
,
*
e2
,
*
normal
;
WorldVector
<
double
>
e1
,
e2
,
normal
;
static
double
mat_d1_left_val
[
3
][
3
];
static
double
mat_d1_left_val
[
3
][
3
];
static
mtl
::
dense2D
<
double
>
mat_d1_left
;
static
mtl
::
dense2D
<
double
>
mat_d1_left
;
...
...
AMDiS/src/FirstOrderTerm.cc
View file @
28431695
...
@@ -44,17 +44,17 @@ namespace AMDiS {
...
@@ -44,17 +44,17 @@ namespace AMDiS {
void
VecAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VecAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
if
(
bOne
>
-
1
)
{
if
(
bOne
>
-
1
)
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb_one
(
Lambda
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
lb_one
(
grd
Lambda
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
}
else
if
(
b
)
{
}
else
if
(
b
)
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
*
b
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
lb
(
grd
Lambda
,
*
b
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
}
else
{
}
else
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
l1
(
Lambda
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
l1
(
grd
Lambda
,
Lb
[
iq
],
(
*
f
)(
vecAtQPs
[
iq
]));
}
}
}
}
...
@@ -92,9 +92,9 @@ namespace AMDiS {
...
@@ -92,9 +92,9 @@ namespace AMDiS {
void
CoordsAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
CoordsAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
l1
(
Lambda
,
Lb
[
iq
],
(
*
g
)(
coordsAtQPs
[
iq
]));
l1
(
grd
Lambda
,
Lb
[
iq
],
(
*
g
)(
coordsAtQPs
[
iq
]));
}
}
void
CoordsAtQP_FOT
::
eval
(
int
nPoints
,
void
CoordsAtQP_FOT
::
eval
(
int
nPoints
,
...
@@ -130,9 +130,9 @@ namespace AMDiS {
...
@@ -130,9 +130,9 @@ namespace AMDiS {
void
VecCoordsAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VecCoordsAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
*
b
,
Lb
[
iq
],
(
*
g
)(
coordsAtQPs
[
iq
]));
lb
(
grd
Lambda
,
*
b
,
Lb
[
iq
],
(
*
g
)(
coordsAtQPs
[
iq
]));
}
}
void
VecCoordsAtQP_FOT
::
eval
(
int
nPoints
,
void
VecCoordsAtQP_FOT
::
eval
(
int
nPoints
,
...
@@ -178,13 +178,13 @@ namespace AMDiS {
...
@@ -178,13 +178,13 @@ namespace AMDiS {
void
VectorGradient_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VectorGradient_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
if
(
f
)
{
if
(
f
)
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
(
*
f
)(
gradAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
(
*
f
)(
gradAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
}
else
{
}
else
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
gradAtQPs
[
iq
],
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
gradAtQPs
[
iq
],
Lb
[
iq
],
1.0
);
}
}
}
}
...
@@ -230,9 +230,9 @@ namespace AMDiS {
...
@@ -230,9 +230,9 @@ namespace AMDiS {
void
VectorFct_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VectorFct_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
(
*
vecFct
)(
vecAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
(
*
vecFct
)(
vecAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
}
}
void
VectorFct_FOT
::
eval
(
int
nPoints
,
void
VectorFct_FOT
::
eval
(
int
nPoints
,
...
@@ -264,9 +264,9 @@ namespace AMDiS {
...
@@ -264,9 +264,9 @@ namespace AMDiS {
void
VecFctAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VecFctAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
(
*
g
)(
coordsAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
(
*
g
)(
coordsAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
}
}
void
VecFctAtQP_FOT
::
eval
(
int
nPoints
,
void
VecFctAtQP_FOT
::
eval
(
int
nPoints
,
...
@@ -322,9 +322,9 @@ namespace AMDiS {
...
@@ -322,9 +322,9 @@ namespace AMDiS {
void
VecGrad_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
VecGrad_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
(
*
vecFct
)(
vecAtQPs
[
iq
],
gradAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
(
*
vecFct
)(
vecAtQPs
[
iq
],
gradAtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
}
}
void
VecGrad_FOT
::
eval
(
int
nPoints
,
void
VecGrad_FOT
::
eval
(
int
nPoints
,
...
@@ -356,9 +356,9 @@ namespace AMDiS {
...
@@ -356,9 +356,9 @@ namespace AMDiS {
void
FctGrad2_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
FctGrad2_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
lb
(
Lambda
,
(
*
vecFct
)(
grad1AtQPs
[
iq
],
grad2AtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
lb
(
grd
Lambda
,
(
*
vecFct
)(
grad1AtQPs
[
iq
],
grad2AtQPs
[
iq
]),
Lb
[
iq
],
1.0
);
}
}
void
FctGrad2_FOT
::
eval
(
int
nPoints
,
void
FctGrad2_FOT
::
eval
(
int
nPoints
,
...
@@ -402,12 +402,12 @@ namespace AMDiS {
...
@@ -402,12 +402,12 @@ namespace AMDiS {
}
}
void
Vec2AndGradAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
void
Vec2AndGradAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
{
const
DimVec
<
WorldVector
<
double
>
>
&
Lambda
=
elInfo
->
getGrdLambda
();
const
DimVec
<
WorldVector
<
double
>
>
&
grd
Lambda
=
elInfo
->
getGrdLambda
();
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
{
for
(
int
iq
=
0
;
iq
<
nPoints
;
iq
++
)
{
if
(
b
)
if
(
b
)
lb
(
Lambda
,
*
b
,
Lb
[
iq
],
(
*
f
)(
vec1AtQPs
[
iq
],
vec2AtQPs
[
iq
],
gradAtQPs1
[
iq
]));
lb
(
grd
Lambda
,
*
b
,
Lb
[
iq
],
(
*
f
)(
vec1AtQPs
[
iq
],
vec2AtQPs
[
iq
],
gradAtQPs1
[
iq
]));
else
else
l1
(
Lambda
,
Lb
[
iq
],
(
*
f
)(
vec1AtQPs
[
iq
],
vec2AtQPs
[
iq
],
gradAtQPs1
[
iq
]));
l1
(
grd
Lambda
,
Lb
[
iq
],
(
*
f
)(
vec1AtQPs
[
iq
],
vec2AtQPs
[
iq
],
gradAtQPs1
[
iq
]));
}
}
}
}
...
@@ -448,12 +448,12 @@ namespace AMDiS {
...
@@ -448,12 +448,12 @@ namespace AMDiS {
void
FctVecAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
void
FctVecAtQP_FOT
::
getLb
(
const
ElInfo
*
elInfo
,
int
nPoints
,
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const
VectorOfFixVecs
<
DimVec
<
double
>
>&
Lb
)
const