Commit e1bf345b authored by Thomas Witkowski's avatar Thomas Witkowski

a

parent 7db0b6df
......@@ -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,
......
......@@ -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();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment