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
iwr
amdis
Commits
e94a82ee
Commit
e94a82ee
authored
Feb 18, 2010
by
Thomas Witkowski
Browse files
Bugfix for DOFVector::getGradient()
parent
0776d6f4
Changes
1
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/DOFVector.cc
View file @
e94a82ee
...
...
@@ -81,26 +81,26 @@ namespace AMDiS {
std
::
vector
<
int
>
numNodePreDOFs
;
std
::
vector
<
DimVec
<
double
>*>
bary
;
int
n
um
Nodes
=
0
;
int
n
umDOF
s
=
0
;
int
nNodes
=
0
;
int
n
Dof
s
=
0
;
for
(
int
i
=
0
;
i
<
dim
+
1
;
i
++
)
{
GeoIndex
geoIndex
=
INDEX_OF_DIM
(
i
,
dim
);
int
n
um
Position
Node
s
=
mesh
->
getGeo
(
geoIndex
);
int
nPositions
=
mesh
->
getGeo
(
geoIndex
);
int
numPreDOFs
=
admin
->
getNumberOfPreDOFs
(
i
);
for
(
int
j
=
0
;
j
<
n
um
Position
Node
s
;
j
++
)
{
for
(
int
j
=
0
;
j
<
nPositions
;
j
++
)
{
int
dofs
=
basFcts
->
getNumberOfDOFs
(
geoIndex
);
numNodeDOFs
.
push_back
(
dofs
);
n
umDOF
s
+=
dofs
;
n
Dof
s
+=
dofs
;
numNodePreDOFs
.
push_back
(
numPreDOFs
);
}
n
um
Nodes
+=
n
um
Position
Node
s
;
nNodes
+=
nPositions
;
}
TEST_EXIT_DBG
(
n
umDOF
s
==
basFcts
->
getNumber
())
TEST_EXIT_DBG
(
n
Dof
s
==
basFcts
->
getNumber
())
(
"number of dofs != number of basis functions
\n
"
);
for
(
int
i
=
0
;
i
<
n
umDOF
s
;
i
++
)
for
(
int
i
=
0
;
i
<
n
Dof
s
;
i
++
)
bary
.
push_back
(
basFcts
->
getCoords
(
i
));
double
*
localUh
=
new
double
[
basFcts
->
getNumber
()];
...
...
@@ -117,9 +117,9 @@ namespace AMDiS {
getLocalVector
(
elInfo
->
getElement
(),
localUh
);
int
localDOFNr
=
0
;
for
(
int
i
=
0
;
i
<
n
um
Nodes
;
i
++
)
{
// for all nodes
for
(
int
i
=
0
;
i
<
nNodes
;
i
++
)
{
// for all nodes
for
(
int
j
=
0
;
j
<
numNodeDOFs
[
i
];
j
++
)
{
// for all dofs at this node
DegreeOfFreedom
dofIndex
=
dof
[
i
][
numNodePreDOFs
[
localDOFNr
]
+
j
];
DegreeOfFreedom
dofIndex
=
dof
[
i
][
numNodePreDOFs
[
i
]
+
j
];
if
(
!
visited
[
dofIndex
])
{
basFcts
->
evalGrdUh
(
*
(
bary
[
localDOFNr
]),
grdLambda
,
localUh
,
&
((
*
result
)[
dofIndex
]));
...
...
@@ -646,8 +646,8 @@ namespace AMDiS {
std
::
vector
<
int
>
numNodePreDOFs
;
std
::
vector
<
DimVec
<
double
>*>
bary
;
int
n
um
Nodes
=
0
;
int
n
umDOF
s
=
0
;
int
nNodes
=
0
;
int
n
Dof
s
=
0
;
for
(
int
i
=
0
;
i
<
dim
+
1
;
i
++
)
{
GeoIndex
geoIndex
=
INDEX_OF_DIM
(
i
,
dim
);
...
...
@@ -656,16 +656,16 @@ namespace AMDiS {
for
(
int
j
=
0
;
j
<
numPositionNodes
;
j
++
)
{
int
dofs
=
basFcts
->
getNumberOfDOFs
(
geoIndex
);
numNodeDOFs
.
push_back
(
dofs
);
n
umDOF
s
+=
dofs
;
n
Dof
s
+=
dofs
;
numNodePreDOFs
.
push_back
(
numPreDOFs
);
}
n
um
Nodes
+=
numPositionNodes
;
nNodes
+=
numPositionNodes
;
}
TEST_EXIT_DBG
(
n
umDOF
s
==
basFcts
->
getNumber
())
TEST_EXIT_DBG
(
n
Dof
s
==
basFcts
->
getNumber
())
(
"number of dofs != number of basis functions
\n
"
);
for
(
int
i
=
0
;
i
<
n
umDOF
s
;
i
++
)
for
(
int
i
=
0
;
i
<
n
Dof
s
;
i
++
)
bary
.
push_back
(
basFcts
->
getCoords
(
i
));
// traverse mesh
...
...
@@ -681,9 +681,9 @@ namespace AMDiS {
const
DimVec
<
WorldVector
<
double
>
>
&
grdLambda
=
elInfo
->
getGrdLambda
();
int
localDOFNr
=
0
;
for
(
int
i
=
0
;
i
<
n
um
Nodes
;
i
++
)
{
// for all nodes
for
(
int
i
=
0
;
i
<
nNodes
;
i
++
)
{
// for all nodes
for
(
int
j
=
0
;
j
<
numNodeDOFs
[
i
];
j
++
)
{
// for all dofs at this node
DegreeOfFreedom
dofIndex
=
dof
[
i
][
numNodePreDOFs
[
localDOFNr
]
+
j
];
DegreeOfFreedom
dofIndex
=
dof
[
i
][
numNodePreDOFs
[
i
]
+
j
];
if
(
!
visited
[
dofIndex
])
{
basFcts
->
evalGrdUh
(
*
(
bary
[
localDOFNr
]),
grdLambda
,
localUh
,
&
grd
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment