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
Aland, Sebastian
amdis
Commits
e1bf345b
Commit
e1bf345b
authored
Nov 06, 2012
by
Thomas Witkowski
Browse files
a
parent
7db0b6df
Changes
2
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/parallel/BddcMlSolver.cc
View file @
e1bf345b
...
...
@@ -231,7 +231,7 @@ namespace AMDiS {
// matrix type (set here to unsymmetric)
int
matrixtype
=
0
;
Parameters
::
get
(
"parallel
->bddcml->matrix type"
,
matrixtype
);
Parameters
::
get
(
initFileStr
+
"
->bddcml->matrix type"
,
matrixtype
);
// Non zero structure of matrix
vector
<
int
>
i_sparse
;
...
...
@@ -358,14 +358,15 @@ namespace AMDiS {
int
use_adaptive_int
=
0
;
int
use_user_constraint_int
=
0
;
Parameters
::
get
(
"parallel
->bddcml->arithmetic constraints"
,
use_arithmetic_int
);
Parameters
::
get
(
initFileStr
+
"
->bddcml->arithmetic constraints"
,
use_arithmetic_int
);
// MSG("call to \"bddcml_setup_preconditioner\" with the following arguments (each in one line):\n");
// MSG(" %d\n", matrixtype);
// MSG(" %d\n", use_defaults_int);
// MSG(" %d\n", parallel_division_int);
// MSG(" %d\n", use_arithmetic_int);
// MSG(" %d\n", use_adaptive_int);
MSG
(
"call to
\"
bddcml_setup_preconditioner
\"
with the following arguments (each in one line):
\n
"
);
MSG
(
" matrixtype = %d
\n
"
,
matrixtype
);
MSG
(
" use_defaults_int = %d
\n
"
,
use_defaults_int
);
MSG
(
" parallel_division_int = %d
\n
"
,
parallel_division_int
);
MSG
(
" use_arithmetic_int = %d
\n
"
,
use_arithmetic_int
);
MSG
(
" use_adaptive_int = %d
\n
"
,
use_adaptive_int
);
MSG
(
" use_user_constraint_int = %d
\n
"
,
use_user_constraint_int
);
bddcml_setup_preconditioner
(
&
matrixtype
,
&
use_defaults_int
,
...
...
AMDiS/src/parallel/PetscSolverFeti.cc
View file @
e1bf345b
...
...
@@ -715,6 +715,11 @@ namespace AMDiS {
bool
PetscSolverFeti
::
testWirebasketEdge
(
BoundaryObject
&
edge
,
const
FiniteElemSpace
*
feSpace
)
{
FUNCNAME
(
"PetscSolverFeti::testWirebasketEdge()"
);
if
(
meshDistributor
->
getMesh
()
->
getDim
()
==
2
)
return
true
;
if
(
meshDistributor
->
getIntBoundary
().
getDegreeOwn
(
edge
)
!=
3
)
return
false
;
...
...
@@ -781,6 +786,38 @@ namespace AMDiS {
if
(
it
->
rankObj
.
subObj
==
FACE
)
allFaces
[
it
.
getRank
()].
insert
(
it
->
rankObj
);
for
(
map
<
int
,
std
::
set
<
BoundaryObject
>
>::
iterator
it
=
allFaces
.
begin
();
it
!=
allFaces
.
end
();
++
it
)
{
MSG
(
"SIZE = %d
\n
"
,
it
->
second
.
size
());
if
(
it
->
second
.
size
()
==
2
)
{
vector
<
AtomicBoundary
>
&
bs
=
intBound
.
getOwn
()[
it
->
first
];
for
(
int
i
=
0
;
i
<
static_cast
<
int
>
(
bs
.
size
());
i
++
)
{
if
(
bs
[
i
].
rankObj
.
subObj
==
EDGE
&&
intBound
.
getDegreeOwn
(
bs
[
i
].
rankObj
)
==
3
)
{
MSG
(
"FOUND AN EDGE: %d %d %d
\n
"
,
bs
[
i
].
rankObj
.
elIndex
,
bs
[
i
].
rankObj
.
subObj
,
bs
[
i
].
rankObj
.
ithObj
);
}
}
}
}
int
nBound
=
0
;
int
nInterior
=
0
;
TraverseStack
stack
;
ElInfo
*
elInfo
=
stack
.
traverseFirst
(
meshDistributor
->
getMesh
(),
0
,
Mesh
::
CALL_EL_LEVEL
|
Mesh
::
FILL_BOUND
);
while
(
elInfo
)
{
MSG
(
"INSIDE!
\n
"
);
Element
*
el
=
elInfo
->
getElement
();
for
(
int
i
=
0
;
i
<
el
->
getGeo
(
EDGE
);
i
++
)
{
BoundaryObject
bobj
(
el
,
elInfo
->
getType
(),
EDGE
,
i
);
MSG
(
"CHECK FOR %d/%d/%d (%d)
\n
"
,
el
->
getIndex
(),
EDGE
,
i
,
intBound
.
getDegreeOwn
(
bobj
));
if
(
intBound
.
getDegreeOwn
(
bobj
)
==
1
)
MSG
(
"B = %d (%d)
\n
"
,
elInfo
->
getBoundary
(
EDGE
,
i
),
INTERIOR
);
}
elInfo
=
stack
.
traverseNext
(
elInfo
);
}
int
nEmptyFaces
=
0
;
vector
<
vector
<
BoundaryObject
>
>
data
;
for
(
map
<
int
,
std
::
set
<
BoundaryObject
>
>::
iterator
it
=
allFaces
.
begin
();
...
...
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