diff --git a/AMDiS/bin/Makefile.am b/AMDiS/bin/Makefile.am index 66f1fe5ef28a3c70bc5936e3835f908fa4afe5d6..800f126018510ad909568c16e734bee575d1e3ac 100644 --- a/AMDiS/bin/Makefile.am +++ b/AMDiS/bin/Makefile.am @@ -38,7 +38,7 @@ INCLUDES = $(AMDIS_INCLUDES) $(PARALLEL_INCLUDES) if AMDIS_DEBUG libamdis_la_CXXFLAGS += -g -O0 -Wall -DDEBUG=1 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic else - libamdis_la_CXXFLAGS += -O3 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic + libamdis_la_CXXFLAGS += -O2 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic endif diff --git a/AMDiS/bin/Makefile.in b/AMDiS/bin/Makefile.in index 5a344dab4e41f227649b97a7a777955a184b6e82..aa26c1cae64e416aefcde4599d96702e52cfee64 100644 --- a/AMDiS/bin/Makefile.in +++ b/AMDiS/bin/Makefile.in @@ -42,7 +42,7 @@ host_triplet = @host@ @ENABLE_UMFPACK_TRUE@ -I$(LIB_DIR)/UMFPACK/Include @AMDIS_DEBUG_TRUE@am__append_3 = -g -O0 -Wall -DDEBUG=1 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic -@AMDIS_DEBUG_FALSE@am__append_4 = -O3 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic +@AMDIS_DEBUG_FALSE@am__append_4 = -O2 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic subdir = bin DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc index a3fab99fb3751492ad638afbd00a379987a22567..544553551a623ef3db9ed5d039bf69ec83ff6f4e 100644 --- a/AMDiS/src/Assembler.cc +++ b/AMDiS/src/Assembler.cc @@ -150,7 +150,7 @@ namespace AMDiS { const DOFVectorBase<double>* vec = dv ? dv : owner->operat->getUhOld(); - TEST_EXIT(vec)("no dof vector!\n"); + TEST_EXIT_DBG(vec)("no dof vector!\n"); if (valuesAtQPs[vec] && valuesAtQPs[vec]->valid) return valuesAtQPs[vec]->values.getValArray(); @@ -206,7 +206,7 @@ namespace AMDiS { const DOFVectorBase<double>* vec = dv ? dv : owner->operat->getUhOld(); - TEST_EXIT(vec)("no dof vector!\n"); + TEST_EXIT_DBG(vec)("no dof vector!\n"); if (gradientsAtQPs[vec] && gradientsAtQPs[vec]->valid) return gradientsAtQPs[vec]->values.getValArray(); diff --git a/AMDiS/src/Assembler.h b/AMDiS/src/Assembler.h index c3cf09d4ecdf6718f9e84b76365bdedd1100f2e8..301eb2b3799abfc734d230feef8ac90ca9fb5050 100644 --- a/AMDiS/src/Assembler.h +++ b/AMDiS/src/Assembler.h @@ -132,7 +132,6 @@ namespace AMDiS { * Sets \ref quadrature to q. */ inline void setQuadrature(Quadrature* q) { - /* TEST_EXIT(!quadrature)("quadrature already set\n"); */ quadrature = q; }; @@ -1015,22 +1014,22 @@ namespace AMDiS { Quadrature *quad1GrdPhi, Quadrature *quad0) { - if(secondOrderAssembler) { + if (secondOrderAssembler) { TEST_EXIT(!secondOrderAssembler->getQuadrature()) ("quadrature already existing\n"); secondOrderAssembler->setQuadrature(quad2); } - if(firstOrderAssemblerGrdPsi) { + if (firstOrderAssemblerGrdPsi) { TEST_EXIT(!firstOrderAssemblerGrdPsi->getQuadrature()) ("quadrature already existing\n"); firstOrderAssemblerGrdPsi->setQuadrature(quad1GrdPsi); } - if(firstOrderAssemblerGrdPhi) { + if (firstOrderAssemblerGrdPhi) { TEST_EXIT(!firstOrderAssemblerGrdPhi->getQuadrature()) ("quadrature already existing\n"); firstOrderAssemblerGrdPhi->setQuadrature(quad1GrdPhi); } - if(zeroOrderAssembler) { + if (zeroOrderAssembler) { TEST_EXIT(!zeroOrderAssembler->getQuadrature()) ("quadrature already existing\n"); zeroOrderAssembler->setQuadrature(quad0); diff --git a/AMDiS/src/CoarseningManager1d.h b/AMDiS/src/CoarseningManager1d.h index 605f0bc24145d96f224fad22c3915974f15c039c..1f08d97d4bb2b07ae35779f256746c0a2b20f7b7 100644 --- a/AMDiS/src/CoarseningManager1d.h +++ b/AMDiS/src/CoarseningManager1d.h @@ -43,10 +43,7 @@ namespace AMDiS { /** \brief * Calls base class constructor and checks dimension of mesh. */ - CoarseningManager1d() : CoarseningManager() { - // FUNCNAME("CoarseningManager1d::CoarseningManager1d"); - // TEST_EXIT(mesh->getDim()==1)("mesh->dim != 1\n"); - }; + CoarseningManager1d() : CoarseningManager() {}; /** \brief * destructor diff --git a/AMDiS/src/CoarseningManager2d.cc b/AMDiS/src/CoarseningManager2d.cc index 8893093990b5250df071e620299fa514ae7a41c9..694ef0e22c63693df908239f50352ddbf3d5c60d 100644 --- a/AMDiS/src/CoarseningManager2d.cc +++ b/AMDiS/src/CoarseningManager2d.cc @@ -25,7 +25,7 @@ namespace AMDiS { child[0] = dynamic_cast<Triangle*>(const_cast<Element*>( el->getChild(0))); child[1] = dynamic_cast<Triangle*>(const_cast<Element*>( el->getChild(1))); - TEST_EXIT(child[0]->getMark() < 0 && child[1]->getMark() < 0) + TEST_EXIT_DBG(child[0]->getMark() < 0 && child[1]->getMark() < 0) ("element %d with children[%d,%d] must not be coarsend!\n", el->getIndex(), child[0]->getIndex(), child[1]->getIndex()); @@ -202,57 +202,53 @@ namespace AMDiS { int CoarseningManager2d::coarsenFunction(ElInfo *el_info) { - Triangle *el = dynamic_cast<Triangle*>(const_cast<Element*>( el_info->getElement())); + Triangle *el = dynamic_cast<Triangle*>(const_cast<Element*>( el_info->getElement())); DegreeOfFreedom *edge[2]; - int n_neigh, bound = 0; + int n_neigh, bound = 0; RCNeighbourList coarse_list(2); coarse_list.setCoarseningManager(this); - if (el->getMark() >= 0) return 0; // el must not be coarsend, return - if (!(el->getChild(0))) return 0; // single leaves don't get coarsened - - if (el->getChild(0)->getMark() >= 0 || el->getChild(1)->getMark() >= 0) - { - /****************************************************************************/ - /* one of the children must not be coarsend; return :-( */ - /****************************************************************************/ - el->setMark(0); - return 0; - } + if (el->getMark() >= 0) + return 0; // el must not be coarsend, return + if (!(el->getChild(0))) + return 0; // single leaves don't get coarsened + + if (el->getChild(0)->getMark() >= 0 || el->getChild(1)->getMark() >= 0) { + /****************************************************************************/ + /* one of the children must not be coarsend; return :-( */ + /****************************************************************************/ + el->setMark(0); + return 0; + } - if (!el->getChild(0)->isLeaf() || !el->getChild(1)->isLeaf()) - { - /****************************************************************************/ - /* one of the children is not a leaf element; try again later on */ - /****************************************************************************/ - doMore = true; - return 0; - } + if (!el->getChild(0)->isLeaf() || !el->getChild(1)->isLeaf()) { + /****************************************************************************/ + /* one of the children is not a leaf element; try again later on */ + /****************************************************************************/ + doMore = true; + return 0; + } /****************************************************************************/ /* give the refinement edge the right orientation */ /****************************************************************************/ - if (el->getDOF(0,0) < el->getDOF(1,0)) - { - edge[0] = const_cast<int*>( el->getDOF(0)); - edge[1] = const_cast<int*>( el->getDOF(1)); - } - else - { - edge[1] = const_cast<int*>( el->getDOF(0)); - edge[0] = const_cast<int*>( el->getDOF(1)); - } + if (el->getDOF(0,0) < el->getDOF(1,0)) { + edge[0] = const_cast<int*>( el->getDOF(0)); + edge[1] = const_cast<int*>( el->getDOF(1)); + } else { + edge[1] = const_cast<int*>( el->getDOF(0)); + edge[0] = const_cast<int*>( el->getDOF(1)); + } coarse_list.setElement(0, el, true); n_neigh = 1; - if (coarse_list.setElement(1, el_info->getNeighbour(2))) - { - n_neigh = 2; - coarse_list.setCoarsePatch(1, el_info->getOppVertex(2) == 2); - } + if (coarse_list.setElement(1, el_info->getNeighbour(2))) { + n_neigh = 2; + coarse_list.setCoarsePatch(1, el_info->getOppVertex(2) == 2); + } /****************************************************************************/ /* check wether we can coarsen the patch or not */ @@ -262,20 +258,20 @@ namespace AMDiS { // === check for periodic boundary ========================================== // ========================================================================== - if(coarse_list.doCoarsePatch(n_neigh)) { + if (coarse_list.doCoarsePatch(n_neigh)) { int n_neigh_periodic; DegreeOfFreedom *next_edge[2]; RCNeighbourList *periodicList; - while(edge[0] != NULL) { + while (edge[0] != NULL) { periodicList = coarse_list.periodicSplit(edge, next_edge, &n_neigh, &n_neigh_periodic); - TEST_EXIT(periodicList)("periodicList = NULL\n"); + TEST_EXIT_DBG(periodicList)("periodicList = NULL\n"); coarsenPatch(periodicList, n_neigh_periodic, bound); diff --git a/AMDiS/src/CoarseningManager3d.cc b/AMDiS/src/CoarseningManager3d.cc index d85bd42f3d17c6ac3dd888b121a45ec6b5083d7d..80e555bf9b1e93b5bceb5e2704923f98c289ecd6 100644 --- a/AMDiS/src/CoarseningManager3d.cc +++ b/AMDiS/src/CoarseningManager3d.cc @@ -49,11 +49,11 @@ namespace AMDiS { /****************************************************************************/ if (el->getDOF(0,0) < el->getDOF(1,0)) { - edge[0] = const_cast<int*>( el->getDOF(0)); - edge[1] = const_cast<int*>( el->getDOF(1)); + edge[0] = const_cast<int*>(el->getDOF(0)); + edge[1] = const_cast<int*>(el->getDOF(1)); } else { - edge[1] = const_cast<int*>( el->getDOF(0)); - edge[0] = const_cast<int*>( el->getDOF(1)); + edge[1] = const_cast<int*>(el->getDOF(0)); + edge[0] = const_cast<int*>(el->getDOF(1)); } coarsenList->setElement(0, el, true); @@ -72,51 +72,24 @@ namespace AMDiS { /* check wether we can coarsen the patch or not */ /****************************************************************************/ - // // ========================================================================== - // // === check for periodic boundary ========================================== - // // ========================================================================== - - // DegreeOfFreedom *periodic_edge[2]; - // int n_neigh_periodic; - - // RCNeighbourList *periodicList = coarsenList->periodicSplit(edge, - // &n_neigh, - // periodic_edge, - // &n_neigh_periodic); - - // bool doCoarsening = coarsenList->doCoarsePatch(n_neigh); - - // if(periodicList && doCoarsening) { - // if (periodicList->doCoarsePatch(n_neigh_periodic)) { - // coarsenPatch(periodicList, n_neigh_periodic, bound); - // } else { - // doCoarsening = false; - // } - // DELETE periodicList; - // } - - // if (coarsenList->doCoarsePatch(n_neigh)/*doCoarsening*/) { - // coarsenPatch(coarsenList, n_neigh, bound); - // } - // ========================================================================== // === check for periodic boundary ========================================== // ========================================================================== - if(coarsenList->doCoarsePatch(n_neigh)) { + if (coarsenList->doCoarsePatch(n_neigh)) { int n_neigh_periodic; DegreeOfFreedom *next_edge[2]; RCNeighbourList *periodicList; - while(edge[0] != NULL) { + while (edge[0] != NULL) { periodicList = coarsenList->periodicSplit(edge, next_edge, &n_neigh, &n_neigh_periodic); - TEST_EXIT(periodicList)("periodicList = NULL\n"); + TEST_EXIT_DBG(periodicList)("periodicList = NULL\n"); coarsenPatch(periodicList, n_neigh_periodic, bound); @@ -255,7 +228,7 @@ namespace AMDiS { opp_v = el_info->getOppVertex(3-dir); neigh_info = stack->traverseNeighbour3d(el_info, 3-dir); - TEST_EXIT(neigh == neigh_info->getElement()) + TEST_EXIT_DBG(neigh == neigh_info->getElement()) ("neigh %d and neigh_info->el %d are not identical\n", neigh->getIndex(), neigh_info->getElement()->getIndex()); /****************************************************************************/ @@ -280,7 +253,7 @@ namespace AMDiS { for (k = 0; k < n_vertices; k++) if (mesh->associated(neigh->getDOF(k, 0), edge[1][0])) break; - TEST_EXIT(j < n_vertices && k < n_vertices) + TEST_EXIT_DBG(j < n_vertices && k < n_vertices) ("dof %d or dof %d not found on element %d with nodes (%d %d %d %d)\n", edge[0][0], edge[1][0], neigh->getIndex(), neigh->getDOF(0,0), neigh->getDOF(1,0), neigh->getDOF(2,0), neigh->getDOF(3,0)); @@ -302,7 +275,7 @@ namespace AMDiS { opp_v = neigh_info->getOppVertex(i); if ((neigh = dynamic_cast<Tetrahedron*>(const_cast<Element*>( neigh_info->getNeighbour(i))))) { neigh_info = stack->traverseNeighbour3d(neigh_info, i); - TEST_EXIT(neigh == neigh_info->getElement()) + TEST_EXIT_DBG(neigh == neigh_info->getElement()) ("neigh %d and neigh_info->el %d are not identical\n", neigh->getIndex(), neigh_info->getElement()->getIndex()); /****************************************************************************/ @@ -326,7 +299,7 @@ namespace AMDiS { i = *n_neigh-1; opp_v = coarsenList->getOppVertex(i, 0); do { - TEST_EXIT(neigh_info->getNeighbour(opp_v) && i > 0) + TEST_EXIT_DBG(neigh_info->getNeighbour(opp_v) && i > 0) ("while looping back domains boundary was reached or i == 0\n"); opp_v = coarsenList->getOppVertex(i--, 0); neigh_info = stack->traverseNeighbour3d(neigh_info, opp_v); diff --git a/AMDiS/src/CoarseningManager3d.h b/AMDiS/src/CoarseningManager3d.h index cb009cd66dbc6eb587becfa7e5e875d2d168ee73..c568615a9779c10863ea39e03856388749e10c52 100644 --- a/AMDiS/src/CoarseningManager3d.h +++ b/AMDiS/src/CoarseningManager3d.h @@ -43,10 +43,7 @@ namespace AMDiS { /** \brief * Calls base class constructor and checks dimension of mesh. */ - CoarseningManager3d() : CoarseningManager() { - // FUNCNAME("CoarseningManager3d::CoarseningManager3d"); - // TEST_EXIT(mesh->getDim()==3)("mesh->dim != 3\n"); - }; + CoarseningManager3d() : CoarseningManager() {}; /** \brief * destructor diff --git a/AMDiS/src/ConditionalEstimator.cc b/AMDiS/src/ConditionalEstimator.cc index 82e8c081bea41662ffa654bb9260b65d27b33af4..4e527aed1d259515ae3596a123e1cb386d616fd3 100644 --- a/AMDiS/src/ConditionalEstimator.cc +++ b/AMDiS/src/ConditionalEstimator.cc @@ -26,10 +26,10 @@ namespace AMDiS { PartitionElementData *elData = dynamic_cast<PartitionElementData*> (elInfo->getElement()->getElementData(PARTITION_ED)); - TEST_EXIT(elInfo->getElement()->isLeaf())("element not leaf\n"); - TEST_EXIT(elData)("no partitoin data on leaf element %d (rank %d)\n", - elInfo->getElement()->getIndex(), - MPI::COMM_WORLD.Get_rank()); + TEST_EXIT_DBG(elInfo->getElement()->isLeaf())("element not leaf\n"); + TEST_EXIT_DBG(elData)("no partitoin data on leaf element %d (rank %d)\n", + elInfo->getElement()->getIndex(), + MPI::COMM_WORLD.Get_rank()); PartitionStatus status = elData->getPartitionStatus(); diff --git a/AMDiS/src/ConditionalMarker.h b/AMDiS/src/ConditionalMarker.h index 64f174a07535cb6a31b4f95879ddebe6e50e2cda..2667a33bb4e1bcc8dd085cdc4a74375e3629c3a1 100644 --- a/AMDiS/src/ConditionalMarker.h +++ b/AMDiS/src/ConditionalMarker.h @@ -89,30 +89,22 @@ namespace AMDiS { void markElement(AdaptInfo *adaptInfo, ElInfo *elInfo) { FUNCNAME("ConditionalMarker::markElement()"); - if(decoratedMarker_) { + if (decoratedMarker_) { PartitionElementData *elData = dynamic_cast<PartitionElementData*>(elInfo->getElement()-> getElementData(PARTITION_ED)); - TEST_EXIT(elData)("no partition data\n"); + TEST_EXIT_DBG(elData)("no partition data\n"); decoratedMarker_->markElement(adaptInfo, elInfo); - if(elData->getPartitionStatus() == OUT) { - //if(elData->getPartitionStatus() != IN) { - // allow coarsening, forbid refinement + if (elData->getPartitionStatus() == OUT) { Element *element = elInfo->getElement(); - if(element->getMark() > 0) { + if (element->getMark() > 0) { element->setMark(0); } } - // if(elInfo->getElement()->getMark() != 0) { - // MSG("rank %d , index %d, mark %d\n", - // MPI::COMM_WORLD.Get_rank(), elInfo->getElement()->getIndex(), - // elInfo->getElement()->getMark()); - // } - int minLevel = elData->getPartitionStatus() != OUT ? localCoarseGridLevel_ : diff --git a/AMDiS/src/DOFAdmin.cc b/AMDiS/src/DOFAdmin.cc index 6783cab26dc40d9d1e9c382b369e8890de960ac0..42e33204126987cac476f0e49115deb7aeb6d677 100755 --- a/AMDiS/src/DOFAdmin.cc +++ b/AMDiS/src/DOFAdmin.cc @@ -39,22 +39,20 @@ namespace AMDiS { DOFAdmin& DOFAdmin::operator=(const DOFAdmin& src) { - int i; - - if (this!=&src) { - mesh=src.mesh; - name=src.name; - dofFree=src.dofFree; - firstHole=src.firstHole; - size=src.size; - usedCount=src.usedCount; - holeCount=src.holeCount; - sizeUsed=src.sizeUsed; - for(i=0;i<4;nrDOF[i]=src.nrDOF[i++]) { - nr0DOF[i]=src.nr0DOF[i]; + if (this != &src) { + mesh = src.mesh; + name = src.name; + dofFree = src.dofFree; + firstHole = src.firstHole; + size = src.size; + usedCount = src.usedCount; + holeCount = src.holeCount; + sizeUsed = src.sizeUsed; + for (int i = 0; i < 4; nrDOF[i] = src.nrDOF[i++]) { + nr0DOF[i] = src.nr0DOF[i]; }; - dofIndexedList=src.dofIndexedList; - dofContainerList=src.dofContainerList; + dofIndexedList = src.dofIndexedList; + dofContainerList = src.dofContainerList; } return *this; } @@ -65,8 +63,11 @@ namespace AMDiS { bool DOFAdmin::operator==(const DOFAdmin& ad) const { - if (name!=ad.name) return false; - if (mesh!=ad.mesh) return false; + if (name != ad.name) + return false; + if (mesh != ad.mesh) + return false; + return true; } @@ -75,10 +76,10 @@ namespace AMDiS { {} void DOFAdmin::freeDOFIndex(int dof) { - FUNCNAME("DOFAdmin::freeDOFIndex"); + FUNCNAME("DOFAdmin::freeDOFIndex()"); - TEST_EXIT(usedCount > 0)("no dofs in use\n"); - TEST_EXIT((dof >= 0)&&(dof < size))("invalid dof index %d\n",dof); + TEST_EXIT_DBG(usedCount > 0)("no dofs in use\n"); + TEST_EXIT_DBG((dof >= 0) && (dof < size))("invalid dof index %d\n",dof); ::std::list<DOFIndexedBase*>::iterator di; ::std::list<DOFIndexedBase*>::iterator end = dofIndexedList.end(); @@ -107,30 +108,29 @@ namespace AMDiS { int DOFAdmin::getDOFIndex() { FUNCNAME("DOFAdmin::getDOFIndex"); - int i, dof = 0; + int dof = 0; // if there is a hole if (firstHole < static_cast<int>(dofFree.size())) { - TEST_EXIT(dofFree[firstHole])("no hole at firstHole!\n"); + TEST_EXIT_DBG(dofFree[firstHole])("no hole at firstHole!\n"); // its no longer a hole dofFree[firstHole] = false; dof = firstHole; // search new hole int dfsize = static_cast<int>(dofFree.size()); - for (i = firstHole+1; i < dfsize; i++) { + int i = 0; + for (i = firstHole + 1; i < dfsize; i++) { if (dofFree[i]) { break; } } firstHole = i; - } - // if there is no hole - else { + } else { // if there is no hole // enlarge dof-list enlargeDOFLists(0); - TEST_EXIT(firstHole < static_cast<int>(dofFree.size())) + TEST_EXIT_DBG(firstHole < static_cast<int>(dofFree.size())) ("no free entry after enlargeDOFLists\n"); - TEST_EXIT(dofFree[firstHole]) + TEST_EXIT_DBG(dofFree[firstHole]) ("no free bit at firstHole\n"); dofFree[firstHole] = false; dof = firstHole; @@ -138,8 +138,9 @@ namespace AMDiS { } usedCount++; - if (holeCount > 0) holeCount--; - sizeUsed = max(sizeUsed, dof+1); + if (holeCount > 0) + holeCount--; + sizeUsed = max(sizeUsed, dof + 1); return(dof); } @@ -180,8 +181,8 @@ namespace AMDiS { } void DOFAdmin::addDOFIndexed(DOFIndexedBase* dofIndexed) { - FUNCNAME("DOFAdmin::addDOFIndexed"); - TEST_EXIT(dofIndexed)("no dofIndexed\n"); + FUNCNAME("DOFAdmin::addDOFIndexed()"); + TEST_EXIT_DBG(dofIndexed)("no dofIndexed\n"); if (dofIndexed->getSize() < size) { dofIndexed->resize(size); @@ -209,7 +210,7 @@ namespace AMDiS { void DOFAdmin::addDOFContainer(DOFContainer* cont) { FUNCNAME("DOFAdmin::addDOFContainer()"); - TEST_EXIT(cont)("no container\n"); + TEST_EXIT_DBG(cont)("no container\n"); dofContainerList.push_back(cont); } @@ -233,8 +234,8 @@ namespace AMDiS { void DOFAdmin::compress(::std::vector<DegreeOfFreedom> &new_dof) { - FUNCNAME("DOFAdmin::compress"); - int i,n,first,last=0; + FUNCNAME("DOFAdmin::compress()"); + int i,n,first,last=0; // nothing to do ? if (size < 1) return; @@ -258,7 +259,7 @@ namespace AMDiS { } } - TEST_EXIT(n == usedCount)("count %d != usedCount %d\n", n, usedCount); + TEST_EXIT_DBG(n == usedCount)("count %d != usedCount %d\n", n, usedCount); // mark used dofs in compressed dofFree for(i=0; i < n; i++) { @@ -303,19 +304,19 @@ namespace AMDiS { } const int DOFAdmin::getNumberOfPreDOFs(int i) const { - TEST_EXIT((0 <= i) && (4 > i))(""); + TEST_EXIT_DBG((0 <= i) && (4 > i))(""); return nr0DOF[i]; } void DOFAdmin::setNumberOfDOFs(int i,int v) { - TEST_EXIT((0 <= i) && (4 > i))(""); + TEST_EXIT_DBG((0 <= i) && (4 > i))(""); nrDOF[i] = v; } void DOFAdmin::setNumberOfPreDOFs(int i, int v) { - TEST_EXIT((0 <= i) && (4 > i))(""); + TEST_EXIT_DBG((0 <= i) && (4 > i))(""); nr0DOF[i] = v; } diff --git a/AMDiS/src/DOFMatrix.cc b/AMDiS/src/DOFMatrix.cc index 099fecc29468694bcf08680d666e2f20279c4687..7b8a2a0660c09184e47f3f6ff21623659eead209 100644 --- a/AMDiS/src/DOFMatrix.cc +++ b/AMDiS/src/DOFMatrix.cc @@ -318,7 +318,9 @@ namespace AMDiS { int i, freeCol = -1, rowSize = static_cast<int>( row->size()); - TEST_EXIT(jcol>=0&&jcol<colFESpace->getAdmin()->getUsedSize())("Column index %d out of range 0-%d\n",jcol,colFESpace->getAdmin()->getUsedSize()-1); + TEST_EXIT_DBG(jcol >= 0 && + jcol < colFESpace->getAdmin()->getUsedSize()) + ("Column index %d out of range 0-%d\n", jcol, colFESpace->getAdmin()->getUsedSize() - 1); // first entry is diagonal entry if(rowFESpace==colFESpace) @@ -498,21 +500,18 @@ namespace AMDiS { WARNING("implementation not finished!!!\n"); - int i,j; - - //TEST_EXIT(bTranspose == NoTranspose)("not yet for transposed matrix b"); - - TEST_EXIT(a.getColFESpace() == b.getRowFESpace()) + TEST_EXIT_DBG(a.getColFESpace() == b.getRowFESpace()) ("a.colFESpace != b.rowFESpace\n"); - TEST_EXIT(rowFESpace == a.getRowFESpace()) + TEST_EXIT_DBG(rowFESpace == a.getRowFESpace()) ("rowFESpace != a.rowFESpace\n"); - TEST_EXIT(colFESpace == b.getColFESpace()) + TEST_EXIT_DBG(colFESpace == b.getColFESpace()) ("colFESpace != b.colFESpace\n"); clear(); + int i, j; - if(aTranspose == NoTranspose && bTranspose == NoTranspose) { + if (aTranspose == NoTranspose && bTranspose == NoTranspose) { int cols = b.getColFESpace()->getAdmin()->getUsedSize(); DOFMatrix::Iterator rowIterator(this, USED_DOFS); @@ -562,40 +561,6 @@ namespace AMDiS { } } } else if(aTranspose == NoTranspose && bTranspose == Transpose) { - // DOFMatrix::Iterator aIterator(&a, USED_DOFS); - // DOFMatrix::Iterator bIterator(&b, USED_DOFS); - // ::std::vector<MatEntry>::const_iterator aRowIt; - // ::std::vector<MatEntry>::const_iterator aRowBegin; - // ::std::vector<MatEntry>::const_iterator aRowEnd; - // ::std::vector<MatEntry>::const_iterator bRowIt; - // ::std::vector<MatEntry>::const_iterator bRowBegin; - // ::std::vector<MatEntry>::const_iterator bRowEnd; - // int row, col; - - // for(aIterator.reset(); !aIterator.end(); ++aIterator) { - // row = aIterator.getDOFIndex(); - // aRowBegin = aIterator->begin(); - // aRowEnd = aIterator->end(); - // for(bIterator.reset(); !bIterator.end(); ++bIterator) { - // col = bIterator.getDOFIndex(); - // double *entry = NULL; - // bRowBegin = bIterator->begin(); - // for(aRowIt = aRowBegin, bRowIt = bRowBegin; - // aRowIt != aRowEnd; - // ++aRowIt, ++bRowIt) - // { - // TEST_EXIT(aRowIt->col == bRowIt->col)("invalid col\n"); - // if(aRowIt->col == UNUSED_ENTRY) continue; - // if(aRowIt->col == NO_MORE_ENTRIES) break; - // double val = aRowIt->entry * bRowIt->entry; - // if(!entry) - // entry = addSparseDOFEntry(1.0, row, col, - // aRowIt->entry * bRowIt->entry, false); - // else - // (*entry) += aRowIt->entry * bRowIt->entry; - // } - // } - // } ERROR_EXIT("not yet\n"); } else if(aTranspose == Transpose && bTranspose == Transpose) { ERROR_EXIT("not yet\n"); @@ -606,14 +571,15 @@ namespace AMDiS { const DOFMatrix& x, const DOFMatrix& y) { - FUNCNAME("DOFMatrix::axpy"); - TEST_EXIT(x.getRowFESpace() == y.getRowFESpace() && - rowFESpace == x.getRowFESpace()) + FUNCNAME("DOFMatrix::axpy()"); + + TEST_EXIT_DBG(x.getRowFESpace() == y.getRowFESpace() && + rowFESpace == x.getRowFESpace()) ("row fe-spaces not equal\n"); - TEST_EXIT(x.getColFESpace() == y.getColFESpace() && - colFESpace == x.getColFESpace()) + TEST_EXIT_DBG(x.getColFESpace() == y.getColFESpace() && + colFESpace == x.getColFESpace()) ("col fe-spaces not equal\n"); - + DOFMatrix::Iterator rowIterator(this, USED_DOFS); DOFMatrix::Iterator xIterator(const_cast<DOFMatrix*>(&x), USED_DOFS); DOFMatrix::Iterator yIterator(const_cast<DOFMatrix*>(&y), USED_DOFS); @@ -699,13 +665,13 @@ namespace AMDiS { for (int i = 0; i < static_cast<int>(matrix.size()); i++) { int pi = static_cast<int>(static_cast<double>(i) * scalFactor); - TEST_EXIT((pi >= 0) && (pi < dim))("PI"); + TEST_EXIT_DBG((pi >= 0) && (pi < dim))("PI"); for (int j = 0; j < static_cast<int>(matrix[i].size()); j++) { int pj = static_cast<int>(static_cast<double>(matrix[i][j].col) * scalFactor); - TEST_EXIT((pj >= 0) && (pj < dim))("PJ"); + TEST_EXIT_DBG((pj >= 0) && (pj < dim))("PJ"); rowPointers[pi][pj] = 0; } diff --git a/AMDiS/src/DOFMatrix.h b/AMDiS/src/DOFMatrix.h index 5e002e69b9ecadc43a16d30d2897c602e88a22d8..ae0208b8aa27962cb9e9de7a0c57ea060c7aeb80 100644 --- a/AMDiS/src/DOFMatrix.h +++ b/AMDiS/src/DOFMatrix.h @@ -447,7 +447,7 @@ namespace AMDiS { * Resizes \ref matrix to n rows */ inline void resize(int n) { - TEST_EXIT(n >= 0)("Can't resize DOFMatrix to negative size\n"); + TEST_EXIT_DBG(n >= 0)("Can't resize DOFMatrix to negative size\n"); matrix.resize(n); }; @@ -455,8 +455,8 @@ namespace AMDiS { * Returns \ref matrix[i] which is the i-th row */ inline const ::std::vector<MatEntry>& operator[](int i) const { - TEST_EXIT((i >= 0) && (i < (static_cast<int>(matrix.size())))) - ("Illegal matrix index %d.\n",i); + TEST_EXIT_DBG((i >= 0) && (i < (static_cast<int>(matrix.size())))) + ("Illegal matrix index %d.\n",i); return matrix[i]; }; @@ -464,15 +464,15 @@ namespace AMDiS { * Returns \ref matrix[i] which is the i-th row */ inline ::std::vector<MatEntry>& operator[](int i) { - TEST_EXIT((i >= 0) && (i < (static_cast<int>(matrix.size())))) - ("Illegal vector index %d.\n", i); + TEST_EXIT_DBG((i >= 0) && (i < (static_cast<int>(matrix.size())))) + ("Illegal vector index %d.\n", i); return matrix[i]; }; /** \brief * Access to \ref matrix[a][b].entry */ - inline double physAcc(DegreeOfFreedom a,DegreeOfFreedom b) const { + inline double physAcc(DegreeOfFreedom a, DegreeOfFreedom b) const { return matrix[a][b].entry; }; diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index 7428c46bce7369bc4f5a92bdf5d50f5efb1e7dd5..4b8fca2c0cce261efd8a42c8a154da481c2e95b6 100644 --- a/AMDiS/src/DOFVector.cc +++ b/AMDiS/src/DOFVector.cc @@ -94,12 +94,12 @@ namespace AMDiS { numNodes += numPositionNodes; } - TEST_EXIT(numNodes == mesh->getNumberOfNodes()) + TEST_EXIT_DBG(numNodes == mesh->getNumberOfNodes()) ("invalid number of nodes\n"); - TEST_EXIT(numDOFs == nBasFcts) + TEST_EXIT_DBG(numDOFs == nBasFcts) ("number of dofs != number of basis functions\n"); - + for(i = 0; i < numDOFs; i++) { bary.push_back(basFcts->getCoords(i)); } @@ -232,14 +232,14 @@ namespace AMDiS { { FUNCNAME("DOFVector<double>::getGrdAtQPs()"); - TEST_EXIT(quad || quadFast)("neither quad nor quadFast defined\n"); + TEST_EXIT_DBG(quad || quadFast)("neither quad nor quadFast defined\n"); - if(quad && quadFast) { - TEST_EXIT(quad == quadFast->getQuadrature()) - ("quad != quadFast->quadrature\n"); + if (quad && quadFast) { + TEST_EXIT_DBG(quad == quadFast->getQuadrature()) + ("quad != quadFast->quadrature\n"); } - TEST_EXIT(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) + TEST_EXIT_DBG(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) ("invalid basis functions"); Element *el = elInfo->getElement(); @@ -325,14 +325,14 @@ namespace AMDiS { { FUNCNAME("DOFVector<double>::getD2AtQPs()"); - TEST_EXIT(quad || quadFast)("neither quad nor quadFast defined\n"); + TEST_EXIT_DBG(quad || quadFast)("neither quad nor quadFast defined\n"); - if(quad && quadFast) { - TEST_EXIT(quad == quadFast->getQuadrature()) - ("quad != quadFast->quadrature\n"); + if (quad && quadFast) { + TEST_EXIT_DBG(quad == quadFast->getQuadrature()) + ("quad != quadFast->quadrature\n"); } - TEST_EXIT(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) + TEST_EXIT_DBG(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) ("invalid basis functions"); Element *el = elInfo->getElement(); @@ -623,12 +623,12 @@ namespace AMDiS { numNodes += numPositionNodes; } - TEST_EXIT(numNodes == mesh->getNumberOfNodes()) + TEST_EXIT_DBG(numNodes == mesh->getNumberOfNodes()) ("invalid number of nodes\n"); - TEST_EXIT(numDOFs == nBasFcts) + TEST_EXIT_DBG(numDOFs == nBasFcts) ("number of dofs != number of basis functions\n"); - + for (i = 0; i < numDOFs; i++) { bary.push_back(basFcts->getCoords(i)); } @@ -698,15 +698,14 @@ namespace AMDiS { { FUNCNAME("transform()"); - TEST_EXIT(vec)("no vector\n"); - - int i, j, dow = Global::getGeo(WORLD); + TEST_EXIT_DBG(vec)("no vector\n"); + int dow = Global::getGeo(WORLD); static WorldVector<DOFVector<double>*> *result = NULL; - if(!res && !result) { + if (!res && !result) { result = NEW WorldVector<DOFVector<double>*>; - for(i = 0; i < dow; i++) { + for (int i = 0; i < dow; i++) { (*result)[i] = NEW DOFVector<double>(vec->getFESpace(), "transform"); } } @@ -714,8 +713,8 @@ namespace AMDiS { WorldVector<DOFVector<double>*> *r = res ? res : result; int vecSize = vec->getSize(); - for(i = 0; i < vecSize; i++) { - for(j = 0; j < dow; j++) { + for (int i = 0; i < vecSize; i++) { + for (int j = 0; j < dow; j++) { (*((*r)[j]))[i] = (*vec)[i][j]; } } diff --git a/AMDiS/src/DOFVector.h b/AMDiS/src/DOFVector.h index 28b3927ad84c216740a09a276866a4832f80df48..290d14e89c7cb3af3dbd864f1d41fd049ab7eab4 100644 --- a/AMDiS/src/DOFVector.h +++ b/AMDiS/src/DOFVector.h @@ -402,8 +402,8 @@ namespace AMDiS { * Resizes \ref vec to n */ inline void resize(int n) { - FUNCNAME("DOFVector<T>::resize"); - TEST_EXIT((n>=0))("Can't resize DOFVector to negative size\n"); + FUNCNAME("DOFVector<T>::resize()"); + TEST_EXIT_DBG((n >= 0))("Can't resize DOFVector to negative size\n"); vec.resize(n); }; @@ -411,8 +411,8 @@ namespace AMDiS { * Resizes \ref vec to n and inits new values with init */ inline void resize(int n, T init) { - FUNCNAME("DOFVector<T>::resize"); - TEST_EXIT((n>=0))("Can't resize DOFVector to negative size\n"); + FUNCNAME("DOFVector<T>::resize()"); + TEST_EXIT_DBG((n >= 0))("Can't resize DOFVector to negative size\n"); vec.resize(n, init); }; @@ -421,7 +421,8 @@ namespace AMDiS { */ inline const T& operator[](DegreeOfFreedom i) const { FUNCNAME("DOFVector<T>::operator[]"); - TEST_EXIT((i>=0)&&(i<static_cast<int>(vec.size())))("Illegal vector index %d.\n",i); + TEST_EXIT_DBG((i>= 0) && (i < static_cast<int>(vec.size()))) + ("Illegal vector index %d.\n",i); return vec[i]; }; @@ -434,7 +435,8 @@ namespace AMDiS { */ inline T& operator[](DegreeOfFreedom i) { FUNCNAME("DOFVector<T>::operator[]"); - TEST_EXIT((i>=0)&&(i<static_cast<int>(vec.size())))("Illegal vector index %d.\n",i); + TEST_EXIT_DBG((i >= 0) && (i < static_cast<int>(vec.size()))) + ("Illegal vector index %d.\n",i); return vec[i]; }; diff --git a/AMDiS/src/DOFVector.hh b/AMDiS/src/DOFVector.hh index 78624c2b856326facea6599b998cacb042e6aa0b..1758edb21ef7bd1b1f8c10f6bc081c32576af104 100644 --- a/AMDiS/src/DOFVector.hh +++ b/AMDiS/src/DOFVector.hh @@ -16,9 +16,6 @@ namespace AMDiS { - // template<typename T> - // void DOFVector<T>::coarseRestrict(RCNeighbourList& list, int n) {} - template<typename T> void DOFVectorBase<T>::addElementVector(T factor, const ElementVector &elVec, @@ -44,7 +41,6 @@ namespace AMDiS { template<typename T> DOFVector<T>::DOFVector(const FiniteElemSpace* f,::std::string n) : DOFVectorBase<T>(f, n), - //elementVector(NULL), refineInter(false), coarsenOperation(NO_OPERATION) { @@ -90,17 +86,14 @@ namespace AMDiS { double DOFVector<T>::nrm2() const { FUNCNAME("DOFVector<T>::nrm2()"); - double nrm; - const DOFAdmin *admin = NULL; - TEST_EXIT(feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", feSpace,admin); - TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) + TEST_EXIT_DBG(feSpace)("feSpace is NULL\n"); + TEST_EXIT_DBG(feSpace->getAdmin())("admin is NULL\n"); + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); - - nrm = 0.0; - + feSpace->getAdmin()->getUsedSize()); + + double nrm = 0.0; Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(this)), USED_DOFS); for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) nrm += (*vecIterator) * (*vecIterator); @@ -112,17 +105,14 @@ namespace AMDiS { double DOFVector<T>::squareNrm2() const { FUNCNAME("DOFVector<T>::nrm2()"); - double nrm; - const DOFAdmin *admin = NULL; - TEST_EXIT(feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", feSpace,admin); - TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) + TEST_EXIT_DBG(feSpace)("feSpace is NULL\n"); + TEST_EXIT_DBG(feSpace->getAdmin())("admin is NULL\n"); + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); - - nrm = 0.0; - + feSpace->getAdmin()->getUsedSize()); + + double nrm = 0.0; Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(this)), USED_DOFS); for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) nrm += (*vecIterator) * (*vecIterator); @@ -133,17 +123,15 @@ namespace AMDiS { template<typename T> T DOFVector<T>::asum() const { - FUNCNAME("DOFVector<T>::asum"); - double nrm; - const DOFAdmin *admin = NULL; - TEST_EXIT(feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", feSpace, admin); - TEST_EXIT(vec.size() >= admin->getUsedSize()) - ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); + FUNCNAME("DOFVector<T>::asum()"); - nrm = 0.0; + TEST_EXIT_DBG(feSpace)("feSpace is NULL\n"); + TEST_EXIT_DBG(feSpace->getAdmin())("admin is NULL\n"); + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) + ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), + feSpace->getAdmin()->getUsedSize()); + double nrm = 0.0; Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(this)), USED_DOFS); for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) nrm += abs(*vecIterator); @@ -151,22 +139,18 @@ namespace AMDiS { return(nrm); } - // Andreas ergaenzte .. - template<typename T> T DOFVector<T>::sum() const { - FUNCNAME("DOFVector<T>::sum"); - double nrm; - const DOFAdmin *admin = NULL; - TEST_EXIT(feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", feSpace, admin); - TEST_EXIT(vec.size() >= admin->getUsedSize()) - ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); + FUNCNAME("DOFVector<T>::sum()"); - nrm = 0.0; + TEST_EXIT_DBG(feSpace)("feSpace is NULL\n"); + TEST_EXIT_DBG(feSpace->getAdmin())("admin is NULL\n"); + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) + ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), + feSpace->getAdmin()->getUsedSize()); + double nrm = 0.0; Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(this)), USED_DOFS); for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) nrm += *vecIterator; @@ -174,205 +158,89 @@ namespace AMDiS { return(nrm); } - // .. bis hier (Andreas) - - template<typename T> void DOFVector<T>::set(T alpha) { - FUNCNAME("DOFVector<T>::set"); - const DOFAdmin *admin = NULL; + FUNCNAME("DOFVector<T>::set()"); - TEST_EXIT(feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", feSpace, admin); - TEST_EXIT(static_cast<int>( vec.size()) >= admin->getUsedSize()) + TEST_EXIT_DBG(feSpace)("feSpace is NULL\n"); + TEST_EXIT_DBG(feSpace->getAdmin())("admin is NULL\n"); + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); - + feSpace->getAdmin()->getUsedSize()); + Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(this), USED_DOFS); for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) { *vecIterator = alpha ; }; } - // template<typename T> - // void DOFVector<T>::scal(T alpha) - // { - // FUNCNAME("DOFVector<T>::scal"); - // const DOFAdmin *admin = NULL; - - // TEST_EXIT( feSpace && (admin = feSpace->getAdmin())) - // ("pointer is NULL: %8X, %8X\n", this, admin); - // TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) - // ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - // admin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) { - // (*vecIterator) *= alpha ; - // }; - // } - template<typename T> void DOFVector<T>::copy(const DOFVector<T>& x) { - FUNCNAME("DOFVector<T>::copy"); - const DOFAdmin *admin = NULL; - - TEST_EXIT(feSpace && x.feSpace) - ("feSpace is NULL: %8X, %8X\n", feSpace,x.feSpace); - TEST_EXIT((admin = feSpace->getAdmin()) && (admin == x.feSpace->getAdmin())) + FUNCNAME("DOFVector<T>::copy()"); + + TEST_EXIT_DBG(feSpace && x.feSpace) + ("feSpace is NULL: %8X, %8X\n", feSpace, x.feSpace); + TEST_EXIT_DBG(feSpace->getAdmin() && (feSpace->getAdmin() == x.feSpace->getAdmin())) ("no admin or different admins: %8X, %8X\n", feSpace->getAdmin(), x.feSpace->getAdmin()); - TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(vec.size()) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); - TEST_EXIT(static_cast<int>(x.vec.size()) >= admin->getUsedSize()) + feSpace->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>(x.vec.size()) >= feSpace->getAdmin()->getUsedSize()) ("x.size = %d too small: admin->sizeUsed = %d\n", x.vec.size(), - admin->getUsedSize()); - + feSpace->getAdmin()->getUsedSize()); + Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(this), USED_DOFS); Iterator xIterator(dynamic_cast<DOFVector<T>*>(const_cast<DOFVector<T>*>(&x)), USED_DOFS); - for(vecIterator.reset(), xIterator.reset(); - !vecIterator.end(); - ++vecIterator, ++xIterator) - { - *vecIterator = *xIterator; - }; + for (vecIterator.reset(), xIterator.reset(); + !vecIterator.end(); + ++vecIterator, ++xIterator) { + + *vecIterator = *xIterator; + }; } - // template<typename T> - // void DOFVector<T>::axpy(T alpha, const DOFVector<T>& x) - // { - // FUNCNAME("DOFVector<T>::axpy"); - // const DOFAdmin *admin; - - // TEST_EXIT(feSpace && x.feSpace) - // ("feSpace is NULL: %8X, %8X\n", feSpace,x.feSpace); - // TEST_EXIT((admin = feSpace->getAdmin()) && (admin == x.feSpace->getAdmin())) - // ("no admin or different admins: %8X, %8X\n", - // feSpace->getAdmin(), x.feSpace->getAdmin()); - // TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) - // ("size = %d too small: admin->size = %d\n", vec.size(), - // admin->getUsedSize()); - // TEST_EXIT(static_cast<int>(x.vec.size()) >= admin->getUsedSize()) - // ("x.size = %d too small: admin->size = %d\n", x.vec.size(), - // admin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // Iterator xIterator((DOFIndexed<T>*) &x, USED_DOFS); - // for(vecIterator.reset(), xIterator.reset(); - // !vecIterator.end(); - // ++vecIterator, ++xIterator) - // { - // *vecIterator += alpha * (*xIterator); - // }; - // } - - // template<typename T> - // void DOFVector<T>::axpy(T alpha, - // const DOFVector<T>& x, - // const DOFVector<T>& y) - // { - // FUNCNAME("DOFVector<T>::axpy"); - // const DOFAdmin *admin; - - // TEST_EXIT(feSpace && x.feSpace && y.feSpace) - // ("feSpace is NULL: %8X, %8X, %8X\n", feSpace, x.feSpace, y.feSpace); - // TEST_EXIT((admin = feSpace->getAdmin()) && - // (admin == x.feSpace->getAdmin()) && - // (admin == y.feSpace->getAdmin())) - // ("no admin or different admins: %8X, %8X, %8X\n", - // feSpace->getAdmin(), x.feSpace->getAdmin(), y.feSpace->getAdmin()); - // TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) - // ("size = %d too small: admin->size = %d\n", vec.size(), - // admin->getUsedSize()); - // TEST_EXIT(static_cast<int>(x.vec.size()) >= admin->getUsedSize()) - // ("x.size = %d too small: admin->size = %d\n", x.vec.size(), - // admin->getUsedSize()); - // TEST_EXIT(static_cast<int>(y.vec.size()) >= admin->getUsedSize()) - // ("y.size = %d too small: admin->size = %d\n", y.vec.size(), - // admin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // Iterator xIterator((DOFIndexed<T>*) &x, USED_DOFS); - // Iterator yIterator((DOFIndexed<T>*) &y, USED_DOFS); - // for(vecIterator.reset(), xIterator.reset(), yIterator.reset(); - // !vecIterator.end(); - // ++vecIterator, ++xIterator, ++yIterator) - // { - // *vecIterator = alpha * (*xIterator) + (*yIterator); - // }; - // } - - // template<typename T> - // void DOFVector<T>::xpay(T alpha, const DOFVector<T>& x) - // { - // FUNCNAME("DOFVector<T>::xpay"); - // const DOFAdmin *admin; - - // TEST_EXIT(feSpace && x.feSpace) - // ("feSpace is NULL: %8X, %8X\n", feSpace,x.feSpace); - // TEST_EXIT((admin = feSpace->getAdmin()) && (admin == x.feSpace->getAdmin())) - // ("no admin or different admins: %8X, %8X\n", - // feSpace->getAdmin(), x.feSpace->getAdmin()); - // TEST_EXIT(static_cast<int>(vec.size()) >= admin->getUsedSize()) - // ("size = %d too small: admin->sizeUsed = %d\n", - // vec.size(), admin->getUsedSize()); - // TEST_EXIT(static_cast<int>(x.vec.size()) >= admin->getUsedSize()) - // ("x.size = %d too small: admin->sizeUsed = %d\n", - // x.vec.size(), admin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // Iterator xIterator((DOFIndexed<T>*) &x, USED_DOFS); - // for(vecIterator.reset(), xIterator.reset(); - // !vecIterator.end(); - // ++vecIterator, ++xIterator) - // { - // *vecIterator = (*xIterator) + alpha * (*vecIterator); - // }; - // } template<typename T> T DOFVector<T>::min() const { - FUNCNAME("DOFVector<T>::min"); - T m; - const DOFAdmin *admin = NULL; - - TEST_EXIT( feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", this, admin); - TEST_EXIT((static_cast<int>( vec.size())) >= admin->getUsedSize()) + FUNCNAME("DOFVector<T>::min()"); + + TEST_EXIT_DBG(feSpace && feSpace->getAdmin()) + ("pointer is NULL: %8X, %8X\n", this, feSpace->getAdmin()); + TEST_EXIT_DBG((static_cast<int>(vec.size())) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); - + feSpace->getAdmin()->getUsedSize()); + + T m; Iterator vecIterator(const_cast<DOFIndexed<T>*>(dynamic_cast<const DOFIndexed<T>*>(this)), USED_DOFS); - for(vecIterator.reset(), m = *vecIterator; !vecIterator.end(); ++vecIterator) - { - m = ::std::min(m, *vecIterator); - } + for (vecIterator.reset(), m = *vecIterator; !vecIterator.end(); ++vecIterator) { + m = ::std::min(m, *vecIterator); + } + return m; } template<typename T> T DOFVector<T>::max() const { - FUNCNAME("DOFVector<T>::max"); - T m; - const DOFAdmin *admin = NULL; - - TEST_EXIT( feSpace && (admin = feSpace->getAdmin())) - ("pointer is NULL: %8X, %8X\n", this, admin); - TEST_EXIT((static_cast<int>( vec.size())) >= admin->getUsedSize()) + FUNCNAME("DOFVector<T>::max()"); + + TEST_EXIT_DBG(feSpace && feSpace->getAdmin()) + ("pointer is NULL: %8X, %8X\n", this, feSpace->getAdmin()); + TEST_EXIT_DBG((static_cast<int>(vec.size())) >= feSpace->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", vec.size(), - admin->getUsedSize()); + feSpace->getAdmin()->getUsedSize()); + T m; Iterator vecIterator(const_cast<DOFIndexed<T>*>(dynamic_cast<const DOFIndexed<T>*>(this)), USED_DOFS); - for(vecIterator.reset(), m = *vecIterator; !vecIterator.end(); ++vecIterator) - { - m = ::std::max(m, *vecIterator); - } + for (vecIterator.reset(), m = *vecIterator; !vecIterator.end(); ++vecIterator) { + m = ::std::max(m, *vecIterator); + } + return m; } @@ -381,45 +249,51 @@ namespace AMDiS { const DOFMatrix& a, const DOFVector<T>& x, T beta, DOFVector<T>& y) { - FUNCNAME("gemv"); - int j, jcol, ysize; - T sum, ax; + FUNCNAME("DOFVector<T>::gemv()"); + + int j, jcol, ysize; + T sum, ax; const DOFMatrix::MatrixRow *row; - const DOFAdmin *cadmin,*radmin; - - TEST_EXIT(a.getRowFESpace() && a.getColFESpace() && x.getFESpace() && y.getFESpace()) - ("feSpace is NULL: %8X, %8X, %8X, %8X\n", a.getRowFESpace(),a.getColFESpace(),x.getFESpace(),y.getFESpace()); - TEST_EXIT((radmin=a.getRowFESpace()->getAdmin()) && - (cadmin = a.getColFESpace()->getAdmin()) && - (((transpose == NoTranspose) && (cadmin == x.getFESpace()->getAdmin()) && - (radmin == y.getFESpace()->getAdmin()))|| - ((transpose == Transpose) && (radmin == x.getFESpace()->getAdmin()) && - (cadmin == y.getFESpace()->getAdmin())))) + + TEST_EXIT_DBG(a.getRowFESpace() && + a.getColFESpace() && + x.getFESpace() && + y.getFESpace()) + ("feSpace is NULL: %8X, %8X, %8X, %8X\n", + a.getRowFESpace(), a.getColFESpace(), x.getFESpace(), y.getFESpace()); + TEST_EXIT_DBG(a.getRowFESpace()->getAdmin() && + a.getColFESpace()->getAdmin() && + (((transpose == NoTranspose) && + (a.getColFESpace()->getAdmin() == x.getFESpace()->getAdmin()) && + (a.getRowFESpace()->getAdmin() == y.getFESpace()->getAdmin()))|| + ((transpose == Transpose) && + (a.getRowFESpace()->getAdmin() == x.getFESpace()->getAdmin()) && + (a.getColFESpace()->getAdmin() == y.getFESpace()->getAdmin())))) ("no admin or different admins: %8X, %8X, %8X, %8X\n", a.getRowFESpace()->getAdmin(), a.getColFESpace()->getAdmin(), x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - + if (transpose == NoTranspose) { - TEST_EXIT(static_cast<int>(x.getSize()) >= cadmin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= a.getColFESpace()->getAdmin()->getUsedSize()) ("x.size = %d too small: admin->sizeUsed = %d\n", - x.getSize(), cadmin->getUsedSize()); - TEST_EXIT(static_cast<int>(y.getSize()) >= radmin->getUsedSize()) + x.getSize(), a.getColFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>(y.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("y.size = %d too small: admin->sizeUsed = %d\n", - y.getSize(), radmin->getUsedSize()); - TEST_EXIT(static_cast<int>( a.getSize()) >= radmin->getUsedSize()) + y.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( a.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("a.size = %d too small: admin->sizeUsed = %d\n", - a.getSize(), radmin->getUsedSize()); + a.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); } else if (transpose == Transpose) { - TEST_EXIT(static_cast<int>(x.getSize()) >= radmin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("x.size = %d too small: admin->sizeUsed = %d\n", - x.getSize(), radmin->getUsedSize()); - TEST_EXIT(static_cast<int>(y.getSize()) >= cadmin->getUsedSize()) + x.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>(y.getSize()) >= a.getColFESpace()->getAdmin()->getUsedSize()) ("y.size = %d too small: admin->sizeUsed = %d\n", - y.getSize(), cadmin->getUsedSize()); - TEST_EXIT(static_cast<int>( a.getSize()) >= radmin->getUsedSize()) + y.getSize(), a.getColFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( a.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("a.size = %d too small: admin->sizeUsed = %d\n", - a.getSize(), radmin->getUsedSize()); + a.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); } ysize = y.getSize(); @@ -483,99 +357,6 @@ namespace AMDiS { } } - - // /****************************************************************************/ - - // template<typename T> - // void DOFVector<T>::mv(MatrixTranspose transpose, - // const DOFMatrix&a, const DOFVector<T>&x) - // { - // FUNCNAME("DOFVector<T>::mv"); - // int jcol; - // T sum, ax; - // const DOFAdmin *radmin,*cadmin = NULL; - - // TEST_EXIT(a.getRowFESpace() && a.getColFESpace() && x.feSpace && feSpace) - // ("feSpace is NULL: %8X, %8X, %8X, %8X\n", - // a.getRowFESpace(), a.getColFESpace(), x.feSpace,feSpace); - // TEST_EXIT((radmin=a.getRowFESpace()->getAdmin()) && - // (cadmin = a.getColFESpace()->getAdmin()) && - // (((transpose == NoTranspose) && (cadmin == x.feSpace->getAdmin()) && - // (radmin == feSpace->getAdmin()))|| - // ((transpose == Transpose) && (radmin == x.feSpace->getAdmin()) && - // (cadmin == feSpace->getAdmin())))) - // ("no admin or different admins: %8X, %8X, %8X, %8X\n", - // a.getRowFESpace()->getAdmin(), a.getColFESpace()->getAdmin(), - // x.feSpace->getAdmin(), feSpace->getAdmin()); - - // if (transpose == NoTranspose) { - // TEST_EXIT(static_cast<int>(x.vec.size()) >= cadmin->getUsedSize()) - // ("x.size = %d too small: admin->sizeUsed = %d\n", - // x.vec.size(), cadmin->getUsedSize()); - // TEST_EXIT(static_cast<int>(vec.size()) >= radmin->getUsedSize()) - // ("size = %d too small: admin->sizeUsed = %d\n", - // vec.size(), radmin->getUsedSize()); - // TEST_EXIT(static_cast<int>( a.getSize()) >= radmin->getUsedSize()) - // ("a.size = %d too small: admin->sizeUsed = %d\n", - // a.getSize(), radmin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // DOFMatrix::Iterator rowIterator((DOFMatrix*) &a, USED_DOFS); - // for(vecIterator.reset(), rowIterator.reset(); - // !rowIterator.end(); - // ++rowIterator, ++vecIterator) { - // sum = 0; - // for(::std::vector<MatEntry>::iterator colIterator = rowIterator->begin(); - // colIterator != rowIterator->end(); - // colIterator++) { - // jcol = colIterator->col; - // if (jcol >= 0) { // entry used? - // sum += ((T) colIterator->entry) * x[jcol]; - // } else { - // if (jcol == DOFMatrix::NO_MORE_ENTRIES) - // break; - // } - // } - // *vecIterator = sum; - // } - // } else if (transpose == Transpose) { - // TEST_EXIT(static_cast<int>(x.vec.size()) >= radmin->getUsedSize()) - // ("x.size = %d too small: admin->sizeUsed = %d\n", - // x.vec.size(), radmin->getUsedSize()); - // TEST_EXIT(static_cast<int>(vec.size()) >= cadmin->getUsedSize()) - // ("size = %d too small: admin->sizeUsed = %d\n", - // vec.size(), cadmin->getUsedSize()); - // TEST_EXIT(static_cast<int>( a.getSize()) >= radmin->getUsedSize()) - // ("a.size = %d too small: admin->sizeUsed = %d\n", - // a.getSize(), radmin->getUsedSize()); - - // Iterator vecIterator((DOFIndexed<T>*) this, USED_DOFS); - // for(vecIterator.reset(); - // !vecIterator.end(); ++vecIterator) { - // *vecIterator = 0; - // }; - - // Iterator xIterator((DOFIndexed<T>*) &x, USED_DOFS); - // DOFMatrix::Iterator rowIterator((DOFMatrix*) &a, USED_DOFS); - // for(xIterator.reset(), rowIterator.reset(); - // !rowIterator.end(); - // ++rowIterator, ++xIterator) { - // ax = (*xIterator); - // for(::std::vector<MatEntry>::iterator colIterator = rowIterator->begin(); - // colIterator != rowIterator->end(); - // colIterator++) { - // jcol = colIterator->col; - // if (jcol >= 0) // entry used? - // vec[jcol] += ax * ((T) colIterator->entry); - // else - // if (jcol == DOFMatrix::NO_MORE_ENTRIES) break; - // } - // } - // } else { - // ERROR_EXIT("transpose=%d\n", transpose); - // } - // } - template<typename T> void DOFVector<T>::print() const { @@ -649,7 +430,9 @@ namespace AMDiS { { FUNCNAME("DOFVector<T>::interpol()"); - TEST_EXIT(interFct = fct)("no function to interpolate\n"); + TEST_EXIT_DBG(fct)("no function to interpolate\n"); + + interFct = fct; if (!this->getFESpace()) { MSG("no dof admin in vec %s, skipping interpolation\n", @@ -967,24 +750,11 @@ namespace AMDiS { { FUNCNAME("DOFVector::assemble"); - //TEST_EXIT(op || operators.size())("no rhs operator\n"); - if(!(op || this->operators.size())) return NULL; + if (!(op || this->operators.size())) + return NULL; Operator *operat = op ? op : this->operators[0]; - // const DegreeOfFreedom *rowDOF; - // const Element *el = elInfo->getElement(); - - // const BasisFunction *psi = operat->getRowFESpace()->getBasisFcts(); - - // DOFAdmin *rowAdmin = operat->getRowFESpace()->getAdmin(); - - // int nRow = psi->getNumber(); - - // if(!elementVector) elementVector = operat->createElementVector(); - - // operat->resetElementVector(elementVector); - this->elementVector = operat->getAssembler()->initElementVector(this->elementVector, elInfo); @@ -1003,8 +773,6 @@ namespace AMDiS { } } - // rowDOF = psi->getLocalIndices(el, rowAdmin, NULL); - addElementVector(factor, *this->elementVector, bound); @@ -1047,16 +815,16 @@ namespace AMDiS { template<typename T> const DOFVector<T>& operator*=(DOFVector<T>& x, T scal) { - FUNCNAME("operator*=(DOFVector<T>& x, T scal)"); - const DOFAdmin *admin = NULL; + FUNCNAME("DOFVector<T>::operator*=(DOFVector<T>& x, T scal)"); - TEST_EXIT( x.getFESpace() && (admin = x.getFESpace()->getAdmin())) - ("pointer is NULL: %8X, %8X\n", x.getFESpace(), admin); + TEST_EXIT_DBG(x.getFESpace() && x.getFESpace()->getAdmin()) + ("pointer is NULL: %8X, %8X\n", x.getFESpace(), x.getFESpace()->getAdmin()); typename DOFVector<T>::Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(&x), USED_DOFS); - for(vecIterator.reset(); !vecIterator.end(); ++vecIterator) { + for (vecIterator.reset(); !vecIterator.end(); ++vecIterator) { (*vecIterator) *= scal; }; + return x; } @@ -1064,109 +832,95 @@ namespace AMDiS { template<typename T> const DOFVector<T>& operator+=(DOFVector<T>& x, const DOFVector<T>& y) { - FUNCNAME("operator*=(DOFVector<T>& x, const DOFVector<T>& y)"); - const DOFAdmin *admin; - - TEST_EXIT(x.getFESpace() && y.getFESpace()) + FUNCNAME("DOFVector<T>::operator+=(DOFVector<T>& x, const DOFVector<T>& y)"); + + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - TEST_EXIT((admin = x.getFESpace()->getAdmin()) && - (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(x.getSize() == y.getSize())("different sizes\n"); - + TEST_EXIT_DBG(x.getSize() == y.getSize())("different sizes\n"); + typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(&x), USED_DOFS); typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&y)), USED_DOFS); - for(xIterator.reset(), yIterator.reset(); - !xIterator.end(); - ++xIterator, ++yIterator) - { - *xIterator += *yIterator; - } + for (xIterator.reset(), yIterator.reset(); + !xIterator.end(); + ++xIterator, ++yIterator) { + *xIterator += *yIterator; + } + return x; } - // F.H. 17/3/2006 template<typename T> const DOFVector<T>& operator-=(DOFVector<T>& x, const DOFVector<T>& y) { - FUNCNAME("operator*=(DOFVector<T>& x, const DOFVector<T>& y)"); - const DOFAdmin *admin; + FUNCNAME("DOFVector<T>::operator-=(DOFVector<T>& x, const DOFVector<T>& y)"); - TEST_EXIT(x.getFESpace() && y.getFESpace()) + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - TEST_EXIT((admin = x.getFESpace()->getAdmin()) && - (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(x.getSize() == y.getSize())("different sizes\n"); - + TEST_EXIT_DBG(x.getSize() == y.getSize())("different sizes\n"); + typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(&x), USED_DOFS); typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&y)), USED_DOFS); - for(xIterator.reset(), yIterator.reset(); - !xIterator.end(); - ++xIterator, ++yIterator) - { - *xIterator -= *yIterator; - } + for (xIterator.reset(), yIterator.reset(); + !xIterator.end(); + ++xIterator, ++yIterator) { + *xIterator -= *yIterator; + } return x; } - - - template<typename T> const DOFVector<T>& operator*=(DOFVector<T>& x, const DOFVector<T>& y) { - FUNCNAME("operator*=(DOFVector<T>& x, const DOFVector<T>& y)"); - const DOFAdmin *admin; - - TEST_EXIT(x.getFESpace() && y.getFESpace()) + FUNCNAME("DOFVector<T>::operator*=(DOFVector<T>& x, const DOFVector<T>& y)"); + + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - TEST_EXIT((admin = x.getFESpace()->getAdmin()) && - (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(x.getSize() == y.getSize())("different sizes\n"); - + TEST_EXIT_DBG(x.getSize() == y.getSize())("different sizes\n"); + typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(&x), USED_DOFS); typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&y)), USED_DOFS); - for(xIterator.reset(), yIterator.reset(); - !xIterator.end(); - ++xIterator, ++yIterator) - { - *xIterator *= *yIterator; - } + for (xIterator.reset(), yIterator.reset(); + !xIterator.end(); + ++xIterator, ++yIterator) { + *xIterator *= *yIterator; + } return x; } - // F.H. 17/3/2006 - template<typename T> T operator*(DOFVector<T>& x, DOFVector<T>& y) { FUNCNAME("DOFVector<T>::operator*(DOFVector<T>& x, DOFVector<T>& y)"); - T dot; - const DOFAdmin *admin = NULL; - TEST_EXIT(x.getFESpace() && y.getFESpace()) + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - TEST_EXIT((admin = x.getFESpace()->getAdmin()) && (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(x.getSize() == y.getSize())("different sizes\n"); - - dot = 0; + TEST_EXIT_DBG(x.getSize() == y.getSize())("different sizes\n"); + T dot = 0; typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(&x), USED_DOFS); typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(&y), USED_DOFS); for (xIterator.reset(), yIterator.reset(); !xIterator.end(); - ++xIterator, ++yIterator) - { - dot += (*xIterator) * (*yIterator); - }; + ++xIterator, ++yIterator) { + dot += (*xIterator) * (*yIterator); + }; return(dot); } @@ -1180,33 +934,32 @@ namespace AMDiS { { FUNCNAME("DOFVector<T>::mv()"); - TEST_EXIT(a.getRowFESpace() && a.getColFESpace() && x.getFESpace() && result.getFESpace()) + TEST_EXIT_DBG(a.getRowFESpace() && a.getColFESpace() && x.getFESpace() && result.getFESpace()) ("getFESpace() is NULL: %8X, %8X, %8X, %8X\n", a.getRowFESpace(), a.getColFESpace(), x.getFESpace(), result.getFESpace()); - - const DOFAdmin *rowAdmin = a.getRowFESpace()->getAdmin(); - const DOFAdmin *colAdmin = a.getColFESpace()->getAdmin(); - - TEST_EXIT((rowAdmin && colAdmin) && - (((transpose == NoTranspose) && (colAdmin == x.getFESpace()->getAdmin()) && - (rowAdmin == result.getFESpace()->getAdmin()))|| - ((transpose == Transpose) && (rowAdmin == x.getFESpace()->getAdmin()) && - (colAdmin == result.getFESpace()->getAdmin())))) + + TEST_EXIT_DBG((a.getRowFESpace()->getAdmin() && a.getColFESpace()->getAdmin()) && + (((transpose == NoTranspose) && + (a.getColFESpace()->getAdmin() == x.getFESpace()->getAdmin()) && + (a.getRowFESpace()->getAdmin() == result.getFESpace()->getAdmin())) || + ((transpose == Transpose) && + (a.getRowFESpace()->getAdmin() == x.getFESpace()->getAdmin()) && + (a.getColFESpace()->getAdmin() == result.getFESpace()->getAdmin())))) ("no admin or different admins: %8X, %8X, %8X, %8X\n", a.getRowFESpace()->getAdmin(), a.getColFESpace()->getAdmin(), x.getFESpace()->getAdmin(), result.getFESpace()->getAdmin()); - + if (transpose == NoTranspose) { - TEST_EXIT(static_cast<int>(x.getSize()) >= colAdmin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= a.getColFESpace()->getAdmin()->getUsedSize()) ("x.size = %d too small: admin->sizeUsed = %d\n", - x.getSize(), colAdmin->getUsedSize()); - TEST_EXIT(static_cast<int>( result.getSize()) >= rowAdmin->getUsedSize()) + x.getSize(), a.getColFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( result.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", - result.getSize(), rowAdmin->getUsedSize()); - TEST_EXIT(static_cast<int>( a.getSize()) >= rowAdmin->getUsedSize()) + result.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( a.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("a.size = %d too small: admin->sizeUsed = %d\n", - a.getSize(), rowAdmin->getUsedSize()); - + a.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + typename DOFVector<T>::Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(&result), USED_DOFS); DOFMatrix::Iterator rowIterator(const_cast<DOFMatrix*>(&a), USED_DOFS); @@ -1233,16 +986,16 @@ namespace AMDiS { } } else if (transpose == Transpose) { - TEST_EXIT(static_cast<int>(x.getSize()) >= rowAdmin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("x.size = %d too small: admin->sizeUsed = %d\n", - x.getSize(), rowAdmin->getUsedSize()); - TEST_EXIT(static_cast<int>( result.getSize()) >= colAdmin->getUsedSize()) + x.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( result.getSize()) >= a.getColFESpace()->getAdmin()->getUsedSize()) ("size = %d too small: admin->sizeUsed = %d\n", - result.getSize(), colAdmin->getUsedSize()); - TEST_EXIT(static_cast<int>( a.getSize()) >= rowAdmin->getUsedSize()) + result.getSize(), a.getColFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>( a.getSize()) >= a.getRowFESpace()->getAdmin()->getUsedSize()) ("a.size = %d too small: admin->sizeUsed = %d\n", - a.getSize(), rowAdmin->getUsedSize()); - + a.getSize(), a.getRowFESpace()->getAdmin()->getUsedSize()); + if(!add) { typename DOFVector<T>::Iterator vecIterator(dynamic_cast<DOFIndexed<T>*>(&result), USED_DOFS); for(vecIterator.reset(); @@ -1279,21 +1032,20 @@ namespace AMDiS { { FUNCNAME("DOFVector<T>::axpy()"); - TEST_EXIT(x.getFESpace() && y.getFESpace()) + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - const DOFAdmin *admin = x.getFESpace()->getAdmin(); - - TEST_EXIT((admin) && (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(static_cast<int>(x.getSize()) >= admin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= x.getFESpace()->getAdmin()->getUsedSize()) ("size = %d too small: admin->size = %d\n", x.getSize(), - admin->getUsedSize()); - TEST_EXIT(static_cast<int>(y.getSize()) >= admin->getUsedSize()) + x.getFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>(y.getSize()) >= x.getFESpace()->getAdmin()->getUsedSize()) ("y.size = %d too small: admin->size = %d\n", y.getSize(), - admin->getUsedSize()); - + x.getFESpace()->getAdmin()->getUsedSize()); + // This is the old implementation of the mv-multiplication. It have been changed // because of the OpenMP-parallelization: // typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&x)), USED_DOFS); @@ -1312,7 +1064,7 @@ namespace AMDiS { #pragma omp parallel for schedule(dynamic, 25000) default(shared) private(i) #endif for (i = 0; i < maxI; i++) { - if (!admin->isDOFFree(i)) { + if (!x.getFESpace()->getAdmin()->isDOFFree(i)) { y[i] += alpha * x[i]; } } @@ -1347,21 +1099,20 @@ namespace AMDiS { { FUNCNAME("DOFVector<T>::xpay()"); - TEST_EXIT(x.getFESpace() && y.getFESpace()) + TEST_EXIT_DBG(x.getFESpace() && y.getFESpace()) ("feSpace is NULL: %8X, %8X\n", x.getFESpace(), y.getFESpace()); - const DOFAdmin *admin = x.getFESpace()->getAdmin(); - - TEST_EXIT(admin && (admin == y.getFESpace()->getAdmin())) + TEST_EXIT_DBG(x.getFESpace()->getAdmin() && + (x.getFESpace()->getAdmin() == y.getFESpace()->getAdmin())) ("no admin or different admins: %8X, %8X\n", x.getFESpace()->getAdmin(), y.getFESpace()->getAdmin()); - TEST_EXIT(static_cast<int>(x.getSize()) >= admin->getUsedSize()) + TEST_EXIT_DBG(static_cast<int>(x.getSize()) >= x.getFESpace()->getAdmin()->getUsedSize()) ("size = %d too small: admin->size = %d\n", x.getSize(), - admin->getUsedSize()); - TEST_EXIT(static_cast<int>(y.getSize()) >= admin->getUsedSize()) + x.getFESpace()->getAdmin()->getUsedSize()); + TEST_EXIT_DBG(static_cast<int>(y.getSize()) >= x.getFESpace()->getAdmin()->getUsedSize()) ("y.size = %d too small: admin->size = %d\n", y.getSize(), - admin->getUsedSize()); - + x.getFESpace()->getAdmin()->getUsedSize()); + // This is the old implementation of the mv-multiplication. It have been changed // because of the OpenMP-parallelization: // typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&x)), USED_DOFS); @@ -1376,6 +1127,8 @@ namespace AMDiS { int i; int maxI = y.getSize(); + const DOFAdmin* admin = x.getFESpace()->getAdmin(); + #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 25000) default(shared) private(i) #endif @@ -1474,14 +1227,14 @@ namespace AMDiS { { FUNCNAME("DOFVector<T>::getVecAtQPs()"); - TEST_EXIT(quad || quadFast)("neither quad nor quadFast defined\n"); + TEST_EXIT_DBG(quad || quadFast)("neither quad nor quadFast defined\n"); - if(quad && quadFast) { - TEST_EXIT(quad == quadFast->getQuadrature()) - ("quad != quadFast->quadrature\n"); + if (quad && quadFast) { + TEST_EXIT_DBG(quad == quadFast->getQuadrature()) + ("quad != quadFast->quadrature\n"); } - TEST_EXIT(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) + TEST_EXIT_DBG(!quadFast || quadFast->getBasisFunctions() == feSpace->getBasisFcts()) ("invalid basis functions"); Element *el = elInfo->getElement(); diff --git a/AMDiS/src/DiagonalPreconditioner.cc b/AMDiS/src/DiagonalPreconditioner.cc index a0bf3108d335ab7aa79561f8921daf4f17cddab1..1678fabc84f9494515812afdea1f94e446eda05a 100644 --- a/AMDiS/src/DiagonalPreconditioner.cc +++ b/AMDiS/src/DiagonalPreconditioner.cc @@ -11,8 +11,8 @@ namespace AMDiS { { FUNCNAME("DiagonalPreconditioner::precon()"); - TEST_EXIT(matrix[row])("no matrix\n"); - TEST_EXIT(x)("no solution vector\n"); + TEST_EXIT_DBG(matrix[row])("no matrix\n"); + TEST_EXIT_DBG(x)("no solution vector\n"); DOFMatrix::Iterator rowIterator((*matrix[row]), USED_DOFS); DOFVector<double>::Iterator vecIterator(x, USED_DOFS); @@ -30,33 +30,30 @@ namespace AMDiS { } else { for (vecIterator.reset(), rowIterator.reset(); !vecIterator.end(); - ++vecIterator, ++rowIterator) - { - if (rowIterator->size() != 0) { - (*vecIterator) /= (*rowIterator)[0].entry; - } - } + ++vecIterator, ++rowIterator) { + if (rowIterator->size() != 0) { + (*vecIterator) /= (*rowIterator)[0].entry; + } + } } } - void DiagonalPreconditionerStd::precon(::std::vector<double>* x) - { - FUNCNAME("DiagonalPreconditionerStd::precon()"); - - TEST_EXIT(x)("no solution vector\n"); - TEST_EXIT(x->size() == matrix->size())("solution vector and matrix have different size\n"); - - ::std::vector<double>::iterator vecIt; - ::std::vector< ::std::vector<MatEntry> >::iterator matrixIt; + void DiagonalPreconditionerStd::precon(::std::vector<double>* x) + { + FUNCNAME("DiagonalPreconditionerStd::precon()"); - for (vecIt = x->begin(), matrixIt = matrix->begin(); + TEST_EXIT_DBG(x)("no solution vector\n"); + TEST_EXIT_DBG(x->size() == matrix->size())("solution vector and matrix have different size\n"); + + ::std::vector<double>::iterator vecIt; + ::std::vector< ::std::vector<MatEntry> >::iterator matrixIt; + + for (vecIt = x->begin(), matrixIt = matrix->begin(); vecIt < x->end(); - ++vecIt, ++matrixIt) - { - if (matrixIt->size() != 0) { - (*vecIt) /= (*matrixIt)[0].entry; - } - } + ++vecIt, ++matrixIt) { + if (matrixIt->size() != 0) { + (*vecIt) /= (*matrixIt)[0].entry; + } } - + } } diff --git a/AMDiS/src/DirichletBC.cc b/AMDiS/src/DirichletBC.cc index 3b4a924f953db31839fe81122f93d309e0cced58..e86656152b07e18f5d8d16ca2a642a4f1835d32a 100644 --- a/AMDiS/src/DirichletBC.cc +++ b/AMDiS/src/DirichletBC.cc @@ -21,7 +21,7 @@ namespace AMDiS { { FUNCNAME("DirichletBC::fillBoundaryCondition()"); - TEST_EXIT(matrix->getRowFESpace() == rowFESpace) + TEST_EXIT_DBG(matrix->getRowFESpace() == rowFESpace) ("invalid row fe space\n"); } @@ -33,7 +33,7 @@ namespace AMDiS { { FUNCNAME("DirichletBC::fillBoundaryCondition()"); - TEST_EXIT(vector->getFESpace() == rowFESpace) + TEST_EXIT_DBG(vector->getFESpace() == rowFESpace) ("invalid row fe space\n"); const BasisFunction *basFcts = rowFESpace->getBasisFcts(); diff --git a/AMDiS/src/DualTraverse.cc b/AMDiS/src/DualTraverse.cc index 80833addf298c4a761bbce37e3a7f474290cf17d..799d46c2a05731578eceed9cf74a996ad289981f 100644 --- a/AMDiS/src/DualTraverse.cc +++ b/AMDiS/src/DualTraverse.cc @@ -62,8 +62,8 @@ namespace AMDiS { *elInfo2 = stack2.traverseNext(*elInfo2); // finished ? - if(*elInfo1 == NULL || *elInfo2 == NULL) { - TEST_EXIT(*elInfo1 == *elInfo2)("invalid dual traverse\n"); + if (*elInfo1 == NULL || *elInfo2 == NULL) { + TEST_EXIT_DBG(*elInfo1 == *elInfo2)("invalid dual traverse\n"); return false; } @@ -103,8 +103,8 @@ namespace AMDiS { } // finished ? - if(*elInfo1 == NULL || *elInfo2 == NULL) { - TEST_EXIT(*elInfo1 == *elInfo2)("invalid dual traverse\n"); + if (*elInfo1 == NULL || *elInfo2 == NULL) { + TEST_EXIT_DBG(*elInfo1 == *elInfo2)("invalid dual traverse\n"); return false; } diff --git a/AMDiS/src/ElInfo.cc b/AMDiS/src/ElInfo.cc index 48bae890301ae3fa68d00898fa8f7349d42aa217..7a32f5ed3699d3490e51a65cbf71994705686051 100644 --- a/AMDiS/src/ElInfo.cc +++ b/AMDiS/src/ElInfo.cc @@ -101,7 +101,7 @@ namespace AMDiS { int dim = coords.getSize() - 1; int dow = Global::getGeo(WORLD); - TEST_EXIT(dim <= dow)("dim > dow\n"); + TEST_EXIT_DBG(dim <= dow)("dim > dow\n"); double det = 0.0; @@ -161,7 +161,7 @@ namespace AMDiS { void ElInfo::testFlag(const Flag& flags) const { - TEST_EXIT(fillFlag_.isSet(flags))("flag not set\n"); + TEST_EXIT_DBG(fillFlag_.isSet(flags))("flag not set\n"); } diff --git a/AMDiS/src/ElInfo1d.cc b/AMDiS/src/ElInfo1d.cc index ac72bca6670dca5345d2c74a69c15749e08c1a45..c6a134d6950b7a1c39c4cd13dadb168c64104852 100644 --- a/AMDiS/src/ElInfo1d.cc +++ b/AMDiS/src/ElInfo1d.cc @@ -122,28 +122,26 @@ namespace AMDiS { static DimVec<double> vec(dim, NO_INIT); - TEST_EXIT(lambda)("lambda must not be NULL\n"); - TEST_EXIT(dim==1)("dim!=1\n"); - TEST_EXIT(Global::getGeo(WORLD)==dim)("not yet for DIM != DIM_OF_WORLD\n"); + TEST_EXIT_DBG(lambda)("lambda must not be NULL\n"); + TEST_EXIT_DBG(dim == 1)("dim!=1\n"); + TEST_EXIT_DBG(Global::getGeo(WORLD) == dim)("not yet for DIM != DIM_OF_WORLD\n"); if (abs(length) < DBL_TOL) { ERROR_EXIT("length = %le; abort\n", length); return 0; } - (*lambda)[1] = (x[0]-a)/length; + (*lambda)[1] = (x[0] - a) / length; (*lambda)[0] = 1.0 - (*lambda)[1]; int k = -1; lmin = 0.0; - int j = 0; for (int i = 0; i <= dim; i++) { if ((*lambda)[i] < -1.E-5) { if ((*lambda)[i] < lmin) { k = i; lmin = (*lambda)[i]; } - j++; } } @@ -159,7 +157,7 @@ namespace AMDiS { { normal = coord_[side] - coord_[(side + 1) % 2]; double det = norm(&normal); - TEST_EXIT(det > 1.e-30)("det = 0 on side %d\n", side); + TEST_EXIT_DBG(det > 1.e-30)("det = 0 on side %d\n", side); normal *= 1.0 / det; return(det); @@ -178,14 +176,14 @@ namespace AMDiS { double det = 0.0; int dow = Global::getGeo(WORLD); - TEST_EXIT(dow = 2)(" element normal only well defined for DIM_OF_WORLD = DIM + 1 !!"); + TEST_EXIT_DBG(dow == 2)(" element normal only well defined for DIM_OF_WORLD = DIM + 1 !!"); elementNormal[0] = coord_[1][1] - coord_[0][1]; elementNormal[1] = coord_[0][0] - coord_[1][0]; det = norm(&elementNormal); - TEST_EXIT(det > 1.e-30)("det = 0"); + TEST_EXIT_DBG(det > 1.e-30)("det = 0"); elementNormal *= 1.0 / det; @@ -200,9 +198,10 @@ namespace AMDiS { Element *nb; Element *elem = elinfo_old->element_; - TEST_EXIT(elem->getChild(0))("no children?\n"); - TEST_EXIT((element_ = const_cast<Element*>( elem->getChild(ichild)))) - ("missing child %d?\n", ichild); + TEST_EXIT_DBG(elem->getChild(0))("no children?\n"); + element_ = const_cast<Element*>(elem->getChild(ichild)); + + TEST_EXIT_DBG(element_)("missing child %d?\n", ichild); macroElement_ = elinfo_old->macroElement_; fillFlag_ = elinfo_old->fillFlag_; @@ -231,7 +230,7 @@ namespace AMDiS { if (fillFlag_.isSet(Mesh::FILL_NEIGH) || fillFlag_.isSet(Mesh::FILL_OPP_COORDS)) { WorldVector<double> oppC; - TEST_EXIT(fillFlag_.isSet(Mesh::FILL_COORDS)) + TEST_EXIT_DBG(fillFlag_.isSet(Mesh::FILL_COORDS)) ("FILL_OPP_COORDS only with FILL_COORDS\n"); for (int i = 0; i < neighbours; i++) { diff --git a/AMDiS/src/ElInfo2d.cc b/AMDiS/src/ElInfo2d.cc index e7e4d1f677843905fecb4218ad46655e770ff024..893e96f55d8489df0efc6672f394fc10e454d565 100644 --- a/AMDiS/src/ElInfo2d.cc +++ b/AMDiS/src/ElInfo2d.cc @@ -141,11 +141,11 @@ namespace AMDiS { Flag fill_flag = elinfo_old->fillFlag_; - TEST_EXIT(elem->getFirstChild())("no children?\n"); - TEST_EXIT(element_ = const_cast<Element*>((ichild == 0) ? - elem->getFirstChild() : - elem->getSecondChild())) - ("missing child %d?\n", ichild); + TEST_EXIT_DBG(elem->getFirstChild())("no children?\n"); + element_ = const_cast<Element*>((ichild == 0) ? + elem->getFirstChild() : + elem->getSecondChild()); + TEST_EXIT_DBG(element_)("missing child %d?\n", ichild); macroElement_ = elinfo_old->macroElement_; fillFlag_ = fill_flag; @@ -231,8 +231,8 @@ namespace AMDiS { nb = elinfo_old->neighbour_[2]; if (nb) { TEST(elinfo_old->oppVertex_[2] == 2)("invalid neighbour\n"); - TEST_EXIT(nb->getFirstChild())("missing first child?\n"); - TEST_EXIT(nb->getSecondChild())("missing second child?\n"); + TEST_EXIT_DBG(nb->getFirstChild())("missing first child?\n"); + TEST_EXIT_DBG(nb->getSecondChild())("missing second child?\n"); nb = nb->getSecondChild(); @@ -399,9 +399,7 @@ namespace AMDiS { double ElInfo2d::calcGrdLambda(DimVec<WorldVector<double> >& grd_lam) const { - FUNCNAME("ElInfo2d::calcGrdLambda"); - // TEST_EXIT(Global::getGeo(WORLD) == 2) - // ("dim != dim_of_world ! use parametric elements!\n"); + FUNCNAME("ElInfo2d::calcGrdLambda()"); WorldVector<double> e1, e2; double adet = 0.0; @@ -476,7 +474,7 @@ namespace AMDiS { { FUNCNAME("ElInfo::worldToCoord()"); - TEST_EXIT(lambda)("lambda must not be NULL\n"); + TEST_EXIT_DBG(lambda)("lambda must not be NULL\n"); DimVec<WorldVector<double> > edge(mesh_->getDim(), NO_INIT); WorldVector<double> x; @@ -548,7 +546,7 @@ namespace AMDiS { double det = norm(&normal); - TEST_EXIT(det > 1.e-30)("det = 0 on face %d\n", side); + TEST_EXIT_DBG(det > 1.e-30)("det = 0 on face %d\n", side); normal *= 1.0 / det; @@ -565,7 +563,7 @@ namespace AMDiS { { FUNCNAME("ElInfo::getElementNormal()"); - TEST_EXIT(Global::getGeo(WORLD) == 3)(" element normal only well defined for DIM_OF_WORLD = DIM + 1 !!"); + TEST_EXIT_DBG(Global::getGeo(WORLD) == 3)(" element normal only well defined for DIM_OF_WORLD = DIM + 1 !!"); WorldVector<double> e0 = coord_[1] - coord_[0]; WorldVector<double> e1 = coord_[2] - coord_[0]; @@ -574,7 +572,7 @@ namespace AMDiS { double det = norm(&elementNormal); - TEST_EXIT(det > 1.e-30)("det = 0"); + TEST_EXIT_DBG(det > 1.e-30)("det = 0"); elementNormal *= 1.0 / det; diff --git a/AMDiS/src/ElInfo3d.cc b/AMDiS/src/ElInfo3d.cc index 138e7f04bde0f530d378ca7f94b9f56b849ff530..9114c498864ef5957fc584494a8a7944f471794b 100644 --- a/AMDiS/src/ElInfo3d.cc +++ b/AMDiS/src/ElInfo3d.cc @@ -118,13 +118,13 @@ namespace AMDiS { { FUNCNAME("ElInfo3d::calcGrdLambda()"); - TEST_EXIT(Global::getGeo(WORLD) == 3) + TEST_EXIT_DBG(Global::getGeo(WORLD) == 3) ("dim != dim_of_world ! use parametric elements!\n"); - WorldVector<double> e1, e2, e3; - WorldVector<double> v0; - double det, adet; - double a11, a12, a13, a21, a22, a23, a31, a32, a33; + WorldVector<double> e1, e2, e3; + WorldVector<double> v0; + double det, adet; + double a11, a12, a13, a21, a22, a23, a31, a32, a33; testFlag(Mesh::FILL_COORDS); @@ -187,12 +187,12 @@ namespace AMDiS { static DimVec<double> vec(mesh_->getDim(), NO_INIT); - TEST_EXIT(lambda)("lambda must not be NULL\n"); + TEST_EXIT_DBG(lambda)("lambda must not be NULL\n"); int dim = mesh_->getDim(); int dimOfWorld = Global::getGeo(WORLD); - TEST_EXIT(dim == dimOfWorld)("dim!=dimOfWorld not yet implemented\n"); + TEST_EXIT_DBG(dim == dimOfWorld)("dim!=dimOfWorld not yet implemented\n"); /* wir haben das gleichungssystem zu loesen: */ /* ( q1x q2x q3x) (lambda1) (qx) */ @@ -297,7 +297,7 @@ namespace AMDiS { } } } - TEST_EXIT(k >= 0)("neighbour dof not found\n"); + TEST_EXIT_DBG(k >= 0)("neighbour dof not found\n"); if (nb->isNewCoordSet()) oppCoord_[ineigh] = *(nb->getNewCoord()); @@ -340,7 +340,7 @@ namespace AMDiS { normal[i] = -normal[i]; det = norm(&normal); - TEST_EXIT(det > 1.e-30)("det = 0 on face %d\n", face); + TEST_EXIT_DBG(det > 1.e-30)("det = 0 on face %d\n", face); normal[0] /= det; normal[1] /= det; @@ -374,7 +374,7 @@ namespace AMDiS { Flag fill_opp_coords; Mesh *mesh = elinfo_old->getMesh(); - TEST_EXIT(el_old->getChild(0))("missing child?\n"); /* Kuni 22.08.96 */ + TEST_EXIT_DBG(el_old->getChild(0))("missing child?\n"); /* Kuni 22.08.96 */ element_ = const_cast<Element*>( el_old->getChild(ichild)); macroElement_ = elinfo_old->macroElement_; @@ -383,7 +383,7 @@ namespace AMDiS { level_ = elinfo_old->level_ + 1; el_type = (( dynamic_cast<ElInfo3d*>(const_cast<ElInfo*>( elinfo_old)))->el_type + 1) % 3; - TEST_EXIT(element_)("missing child %d?\n", ichild); + TEST_EXIT_DBG(element_)("missing child %d?\n", ichild); if (fillFlag__local.isAnySet()) { el_type_local = ( dynamic_cast<ElInfo3d*>(const_cast<ElInfo*>( elinfo_old)))->getType(); @@ -461,7 +461,7 @@ namespace AMDiS { for (int i = 1; i < 3; i++) { if ((nb = const_cast<Element*>( (*neigh_old)[cv[i]]))) { - TEST_EXIT(nb->getChild(0))("nonconforming triangulation\n"); + TEST_EXIT_DBG(nb->getChild(0))("nonconforming triangulation\n"); int k; for (k = 0; k < 2; k++) { /* look at both childs of old neighbour */ @@ -487,7 +487,6 @@ namespace AMDiS { break; } } else { - //TEST_EXIT(dof == nbk->getDOF(2))("opp_vertex not found\n"); if (dof != nbk->getDOF(2)) { ov = -1; break; @@ -507,8 +506,6 @@ namespace AMDiS { } /* end for k */ - //TEST_EXIT(k<2)("child not found with vertex\n"); - // periodic ? if (k == 2 || ov == -1) { for (k = 0; k < 2; k++) { /* look at both childs of old neighbour */ @@ -536,8 +533,8 @@ namespace AMDiS { break; } } else { - TEST_EXIT(dof == nbk->getDOF(2) || - mesh->associated(dof[0], nbk->getDOF(2, 0))) + TEST_EXIT_DBG(dof == nbk->getDOF(2) || + mesh->associated(dof[0], nbk->getDOF(2, 0))) ("opp_vertex not found\n"); ov = 2; } @@ -553,7 +550,7 @@ namespace AMDiS { } } /* end for k */ - TEST_EXIT(k < 2)("child not found with vertex\n"); + TEST_EXIT_DBG(k < 2)("child not found with vertex\n"); } } else { (*neigh_local)[i] = NULL; diff --git a/AMDiS/src/Element.cc b/AMDiS/src/Element.cc index 6a367857f951fc2bbc47af459d3fd9637a146d07..e27ebc6b641ce7fe5cfc887046c288386689269d 100644 --- a/AMDiS/src/Element.cc +++ b/AMDiS/src/Element.cc @@ -26,7 +26,8 @@ namespace AMDiS { void Element::setDOFPtrs() { FUNCNAME("Element::setDOFPtrs()"); - TEST_EXIT(mesh)("no mesh!\n"); + + TEST_EXIT_DBG(mesh)("no mesh!\n"); dof = mesh->createDOFPtrs(); } @@ -236,8 +237,8 @@ namespace AMDiS { } double Element::getNewCoord(int j) const { - if (j>=0) { - TEST_EXIT(newCoord)("newCoord = NULL\n"); + if (j >=0 ) { + TEST_EXIT_DBG(newCoord)("newCoord = NULL\n"); return (*newCoord)[j]; } else { return (newCoord!=NULL); @@ -274,9 +275,9 @@ namespace AMDiS { ndof = 0; - for(i = 0; i < mesh->getNumberOfDOFAdmin(); i++) { + for (i = 0; i < mesh->getNumberOfDOFAdmin(); i++) { const DOFAdmin *localAdmin = &mesh->getDOFAdmin(i); - TEST_EXIT(localAdmin)("no admin[%d]\n", i); + TEST_EXIT_DBG(localAdmin)("no admin[%d]\n", i); ndof += localAdmin->getNumberOfDOFs(position); } diff --git a/AMDiS/src/Element.h b/AMDiS/src/Element.h index 7696a70ecfaa4a818026ca78503b9b9f939aec31..e0f371300d5013cdb8861a96ac4a6ebe7ddad27f 100644 --- a/AMDiS/src/Element.h +++ b/AMDiS/src/Element.h @@ -126,7 +126,7 @@ namespace AMDiS { */ virtual Element* getChild(int i) const { FUNCNAME("Element::getChild()"); - TEST_EXIT(i==0 || i==1)("i must be 0 or 1\n"); + TEST_EXIT_DBG(i==0 || i==1)("i must be 0 or 1\n"); return child[i]; }; @@ -173,9 +173,9 @@ namespace AMDiS { inline double getEstimation(int row) const { if (isLeaf()) { - TEST_EXIT(elementData)("leaf element without leaf data\n"); + TEST_EXIT_DBG(elementData)("leaf element without leaf data\n"); ElementData *ld = elementData->getElementData(ESTIMATABLE); - TEST_EXIT(ld)("leaf data not estimatable!\n"); + TEST_EXIT_DBG(ld)("leaf data not estimatable!\n"); return dynamic_cast<LeafDataEstimatableInterface*>(ld)->getErrorEstimate(row); } @@ -189,9 +189,9 @@ namespace AMDiS { */ inline double getCoarseningEstimation(int row) { if (isLeaf()) { - TEST_EXIT(elementData)("leaf element without leaf data\n"); + TEST_EXIT_DBG(elementData)("leaf element without leaf data\n"); ElementData *ld = elementData->getElementData(COARSENABLE); - TEST_EXIT(ld)("element data not coarsenable!\n"); + TEST_EXIT_DBG(ld)("element data not coarsenable!\n"); return dynamic_cast<LeafDataCoarsenableInterface*>(ld)->getCoarseningErrorEstimate(row); } @@ -317,9 +317,9 @@ namespace AMDiS { inline void setEstimation(double est, int row) { if (isLeaf()) { - TEST_EXIT(elementData)("leaf element without leaf data\n"); + TEST_EXIT_DBG(elementData)("leaf element without leaf data\n"); ElementData *ld = elementData->getElementData(ESTIMATABLE); - TEST_EXIT(ld)("leaf data not estimatable\n"); + TEST_EXIT_DBG(ld)("leaf data not estimatable\n"); dynamic_cast<LeafDataEstimatableInterface*>(ld)-> setErrorEstimate(row, est); @@ -335,9 +335,9 @@ namespace AMDiS { inline void setCoarseningEstimation(double est, int row) { if (isLeaf()) { - TEST_EXIT(elementData)("leaf element without leaf data\n"); + TEST_EXIT_DBG(elementData)("leaf element without leaf data\n"); ElementData *ld = elementData->getElementData(COARSENABLE); - TEST_EXIT(ld)("leaf data not coarsenable\n"); + TEST_EXIT_DBG(ld)("leaf data not coarsenable\n"); dynamic_cast<LeafDataCoarsenableInterface*>(ld)-> setCoarseningErrorEstimate(row, est); diff --git a/AMDiS/src/ElementData.cc b/AMDiS/src/ElementData.cc index 76707978383ede5f494caf751a350e8c94fb59db..05d43c34605588b54c13a6991f83d40a99581886 100644 --- a/AMDiS/src/ElementData.cc +++ b/AMDiS/src/ElementData.cc @@ -4,7 +4,7 @@ namespace AMDiS { void ElementData::serialize(::std::ostream& out) { ::std::string decoratedType; - if(decorated_) { + if (decorated_) { decoratedType = decorated_->getTypeName(); out << decoratedType << ::std::endl; decorated_->serialize(out); @@ -19,7 +19,7 @@ namespace AMDiS { ::std::string decoratedType; in >> decoratedType; in.get(); - if(decoratedType != "NULL") { + if (decoratedType != "NULL") { decorated_ = CreatorMap<ElementData>::getCreator(decoratedType)->create(); decorated_->deserialize(in); } else { diff --git a/AMDiS/src/ElementFileWriter.cc b/AMDiS/src/ElementFileWriter.cc index b186b48cfb5af1c1f416da64c7d5b49d3c999832..ba5717157f1daaebd95b2f69241a080f5d828070 100644 --- a/AMDiS/src/ElementFileWriter.cc +++ b/AMDiS/src/ElementFileWriter.cc @@ -38,9 +38,6 @@ namespace AMDiS { GET_PARAMETER(0, name + "->output->index decimals", "%d", &indexDecimals); GET_PARAMETER(0, name + "->output->write every i-th timestep", "%d", &tsModulo); - - // TEST_EXIT(vec.size() == mesh->getNumberOfLeaves()) - // ("illegal size !\n"); } void ElementFileWriter::writeFiles(AdaptInfo *adaptInfo, bool force, diff --git a/AMDiS/src/Estimator.cc b/AMDiS/src/Estimator.cc index 3b70fe17aa1437ea9b7fb2134228216c056991f2..0354e8add638dd3213b48beebd760ea4a062316b 100755 --- a/AMDiS/src/Estimator.cc +++ b/AMDiS/src/Estimator.cc @@ -118,7 +118,7 @@ namespace AMDiS { mesh = uh[row == -1 ? 0 : row]->getFESpace()->getMesh(); numSystems = static_cast<int>(uh.size()); - TEST_EXIT(numSystems > 0)("no system set\n"); + TEST_EXIT_DBG(numSystems > 0)("no system set\n"); dim = mesh->getDim(); basFcts = GET_MEMORY(const BasisFunction*, numSystems); @@ -226,7 +226,7 @@ namespace AMDiS { Element *el, *neigh; int iq; - TEST_EXIT(numSystems > 0)("no system set\n"); + TEST_EXIT_DBG(numSystems > 0)("no system set\n"); ::std::vector<Operator*>::iterator it; @@ -268,8 +268,8 @@ namespace AMDiS { } //uh[system]->getLocalVector(el, uhEl); - if(timestep) { - TEST_EXIT(uhOld[system])("no uhOld\n"); + if (timestep) { + TEST_EXIT_DBG(uhOld[system])("no uhOld\n"); uhOld[system]->getLocalVector(el, uhOldEl[system]); } @@ -390,35 +390,34 @@ namespace AMDiS { bool periodicCoords = false; - if(ldp) { + if (ldp) { ::std::list<LeafDataPeriodic::PeriodicInfo>::iterator it; - for(it = dynamic_cast<LeafDataPeriodic*>(ldp)->getInfoList().begin(); - it != dynamic_cast<LeafDataPeriodic*>(ldp)->getInfoList().end(); - ++it) - { - if(it->elementSide == face) { - for(i=0; i < dim; i++) { - i1 = faceIndEl[i]; - i2 = faceIndNeigh[i]; - - for(j=0; j < dim; j++) { - if(i1 == el->getVertexOfPosition(INDEX_OF_DIM(dim-1, - dim), - face, - j)) - { - break; - } + for (it = dynamic_cast<LeafDataPeriodic*>(ldp)->getInfoList().begin(); + it != dynamic_cast<LeafDataPeriodic*>(ldp)->getInfoList().end(); + ++it) { + + if (it->elementSide == face) { + for (i=0; i < dim; i++) { + i1 = faceIndEl[i]; + i2 = faceIndNeigh[i]; + + for(j=0; j < dim; j++) { + if (i1 == el->getVertexOfPosition(INDEX_OF_DIM(dim-1, + dim), + face, + j)) { + break; } - - TEST_EXIT(j != dim)("vertex i1 not on face ???\n"); - - neighInfo->getCoord(i2) = (*(it->periodicCoords))[j]; } - periodicCoords = true; - break; + + TEST_EXIT_DBG(j != dim)("vertex i1 not on face ???\n"); + + neighInfo->getCoord(i2) = (*(it->periodicCoords))[j]; } + periodicCoords = true; + break; } + } } if(!periodicCoords) { diff --git a/AMDiS/src/FixVec.h b/AMDiS/src/FixVec.h index 2277103d14a4190a8dca20cd099b1f2d4a54ae10..be835f0cf6e3138a1d40aab3bcea42f1f32b4d5a 100644 --- a/AMDiS/src/FixVec.h +++ b/AMDiS/src/FixVec.h @@ -82,7 +82,7 @@ namespace AMDiS { FixVec(int dim = -1, InitType initType = NO_INIT) : Vector<T>(calcSize(dim)) { - TEST_EXIT(initType == NO_INIT)("wrong initType or missing initializer\n"); + TEST_EXIT_DBG(initType == NO_INIT)("wrong initType or missing initializer\n"); } /** \brief @@ -92,7 +92,7 @@ namespace AMDiS { FixVec(int dim, InitType initType, const T* ini) : Vector<T>(calcSize(dim)) { - TEST_EXIT(initType == VALUE_LIST)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == VALUE_LIST)("wrong initType or wrong initializer\n"); setValues(ini); }; @@ -103,7 +103,7 @@ namespace AMDiS { FixVec(int dim, InitType initType, const T& ini) : Vector<T>(calcSize(dim)) { - TEST_EXIT(initType == DEFAULT_VALUE)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == DEFAULT_VALUE)("wrong initType or wrong initializer\n"); this->set(ini); } @@ -112,7 +112,6 @@ namespace AMDiS { */ inline void init(int dim) { - //TEST_EXIT(this->getSize() == 0)("already initialized\n"); this->resize(calcSize(dim)); }; @@ -121,7 +120,6 @@ namespace AMDiS { */ inline void initSize(int size) { - //TEST_EXIT(getSize() == 0)("already initialized\n"); this->resize(size); }; @@ -138,7 +136,6 @@ namespace AMDiS { */ static int calcSize(int dim) { if (dim < 0) { - //TEST_EXIT(d==WORLD)("dimension needed\n"); return Global::getGeo(WORLD); } else { return Global::getGeo(d, dim); @@ -177,7 +174,7 @@ namespace AMDiS { VectorOfFixVecs(int dim, int size, InitType initType) : size_(size) { - TEST_EXIT(initType == NO_INIT)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == NO_INIT)("wrong initType or wrong initializer\n"); vec = GET_MEMORY(FixVecType*, size_); for (FixVecType** i=&vec[0]; i < &vec[size_]; i++) { @@ -193,7 +190,7 @@ namespace AMDiS { VectorOfFixVecs(int dim, int s, InitType initType, const FixVecType* ini) : size_(s) { - TEST_EXIT(initType == VALUE_LIST)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == VALUE_LIST)("wrong initType or wrong initializer\n"); vec = GET_MEMORY(FixVecType*, size_); for (FixVecType** i=&vec[0]; i < &vec[size_]; i++) { @@ -209,7 +206,7 @@ namespace AMDiS { VectorOfFixVecs(int /*dim*/, int s, InitType initType, const FixVecType& ini) : size_(s) { - TEST_EXIT(initType==DEFAULT_VALUE) + TEST_EXIT_DBG(initType == DEFAULT_VALUE) ("wrong initType or wrong initializer\n"); vec = GET_MEMORY(FixVecType*, size_); //vec = new FixVecType*[size]; @@ -248,7 +245,7 @@ namespace AMDiS { */ inline const FixVecType& operator[](int index) const { - TEST_EXIT(index >= 0 && index < size_)("invalid index\n"); + TEST_EXIT_DBG(index >= 0 && index < size_)("invalid index\n"); return *(vec[index]); }; @@ -257,7 +254,7 @@ namespace AMDiS { */ inline FixVecType& operator[](int index) { - TEST_EXIT(index >= 0 && index < size_)("invalid index\n"); + TEST_EXIT_DBG(index >= 0 && index < size_)("invalid index\n"); return *(vec[index]); }; @@ -267,7 +264,7 @@ namespace AMDiS { VectorOfFixVecs<FixVecType>& operator=(const VectorOfFixVecs<FixVecType>& rhs) { - TEST_EXIT(size_==rhs.size_)("vectors of different size\n"); + TEST_EXIT_DBG(size_ == rhs.size_)("vectors of different size\n"); if (this!=&rhs) { FixVecType **i, **j; for(i=&vec[0], j=&(rhs.vec[0]); i < &vec[size_]; i++, j++) { @@ -326,9 +323,8 @@ namespace AMDiS { MatrixOfFixVecs(int dim, int r, int c, InitType initType) : rows(r), columns(c) { - TEST_EXIT(initType==NO_INIT)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == NO_INIT)("wrong initType or wrong initializer\n"); vec = GET_MEMORY(VectorOfFixVecs<FixVecType>*, rows); - //vec = new VectorOfFixVecs<FixVecType>*[rows]; for(VectorOfFixVecs<FixVecType>** i=&vec[0]; i<&vec[rows]; i++) { *i = NEW VectorOfFixVecs<FixVecType>(dim, columns, NO_INIT); } @@ -351,7 +347,7 @@ namespace AMDiS { */ inline VectorOfFixVecs<FixVecType >& operator[](int index) { - TEST_EXIT(index >= 0 && index < rows)("invalid index\n"); + TEST_EXIT_DBG(index >= 0 && index < rows)("invalid index\n"); return *(vec[index]); }; @@ -360,7 +356,7 @@ namespace AMDiS { */ inline const VectorOfFixVecs<FixVecType >& operator[](int index) const { - TEST_EXIT(index >= 0 && index < rows)("invalid index\n"); + TEST_EXIT_DBG(index >= 0 && index < rows)("invalid index\n"); return *(vec[index]); }; @@ -463,7 +459,7 @@ namespace AMDiS { DimMat(int dim, InitType initType, const T& ini) : Matrix<T>(dim+1, dim+1) { - TEST_EXIT(initType==DEFAULT_VALUE) + TEST_EXIT_DBG(initType == DEFAULT_VALUE) ("wrong initType or wrong initializer\n"); this->set(ini); }; @@ -474,7 +470,7 @@ namespace AMDiS { DimMat(int dim, InitType initType, T* ini) : Matrix<T>(dim+1, dim+1) { - TEST_EXIT(initType==VALUE_LIST)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == VALUE_LIST)("wrong initType or wrong initializer\n"); setValues(ini); }; }; @@ -576,7 +572,7 @@ namespace AMDiS { WorldMatrix(InitType initType, T* ini) : Matrix<T>(Global::getGeo(WORLD), Global::getGeo(WORLD)) { - TEST_EXIT(initType == VALUE_LIST)("???\n"); + TEST_EXIT_DBG(initType == VALUE_LIST)("???\n"); setValues(ini); }; @@ -587,7 +583,7 @@ namespace AMDiS { WorldMatrix(InitType initType, const T& ini) : Matrix<T>(Global::getGeo(WORLD), Global::getGeo(WORLD)) { - TEST_EXIT(initType == DEFAULT_VALUE)("wrong initType or wrong initializer\n"); + TEST_EXIT_DBG(initType == DEFAULT_VALUE)("wrong initType or wrong initializer\n"); this->set(ini); }; diff --git a/AMDiS/src/FixVec.hh b/AMDiS/src/FixVec.hh index b07eeb0a53e08a452f0e5a92962acfc462d7d0c4..6536f374e170cf668133ae455d57bf027cc6c801 100644 --- a/AMDiS/src/FixVec.hh +++ b/AMDiS/src/FixVec.hh @@ -16,8 +16,8 @@ namespace AMDiS { void WorldVector<T>::multMatrixVec(WorldMatrix<T> &m, WorldVector<T> &v) { FUNCNAME("WorldVector<T>::multMatrix()"); - TEST_EXIT(m.getNumRows() == this->getSize())("invalide size\n"); - TEST_EXIT(v.getSize() == this->getSize())("invalide size\n"); + TEST_EXIT_DBG(m.getNumRows() == this->getSize())("invalide size\n"); + TEST_EXIT_DBG(v.getSize() == this->getSize())("invalide size\n"); T *mIt, *thisIt; for (thisIt = this->begin(), mIt = m.begin(); @@ -66,8 +66,8 @@ namespace AMDiS { { FUNCNAME("WorldMatrix<T>::vecProduct()"); - TEST_EXIT(v1.getSize() == v2.getSize())("invalid size 1\n"); - TEST_EXIT(v1.getSize() == this->getSize())("invalid size 2\n"); + TEST_EXIT_DBG(v1.getSize() == v2.getSize())("invalid size 1\n"); + TEST_EXIT_DBG(v1.getSize() == this->getSize())("invalid size 2\n"); T *thisIt = this->begin(); diff --git a/AMDiS/src/Global.cc b/AMDiS/src/Global.cc index ec0f6da8e1621cbadf54d6f52eb5f9a489dae5dc..bb734092d0a7a159e37c39ec1278f338150416c5 100644 --- a/AMDiS/src/Global.cc +++ b/AMDiS/src/Global.cc @@ -284,8 +284,8 @@ namespace AMDiS { // get dimension TEST_EXIT(Parameters::initialized())("Parameters not initialized!\n"); Parameters::getGlobalParameter(0,"dimension of world","%d",&d); - TEST_EXIT(d>0)("can not initialize dimension\n"); - TEST_EXIT((d==1)||(d==2)||(d==3))("Invalid world dimension %d!\n",d); + TEST_EXIT(d > 0)("can not initialize dimension\n"); + TEST_EXIT((d == 1) || (d == 2) || (d == 3))("Invalid world dimension %d!\n",d); // set dimension dimOfWorld = d; diff --git a/AMDiS/src/Global.h b/AMDiS/src/Global.h index 97cf65717dd55d4aba4d2bba31fba8ada4d79cb1..8d5358519b3f251b2996fbcf3e92fe400ad67230 100644 --- a/AMDiS/src/Global.h +++ b/AMDiS/src/Global.h @@ -189,6 +189,11 @@ namespace AMDiS { */ static void print_error_exit(const char *format, ...); + /** \brief + * + */ + static void catch_error_exit(const char *format, ...) {}; + /** \brief * Prints an error message with funcname, file, and line to the error stream */ @@ -337,10 +342,20 @@ namespace AMDiS { */ #define TEST(test) if ((test));else ERROR + /** \brief * if test is false, an error message is printed and the program exits */ -#define TEST_EXIT(test) if ((test));else ERROR_EXIT +#define TEST_EXIT(test) + + /** \brief + * In debug mode, it corresponds to ERROR_EXIT, otherwise it is noop. + */ +#if (DEBUG == 0) + #define TEST_EXIT_DBG(test) if (false) Msg::catch_error_exit +#else +#define TEST_EXIT_DBG(test) if ((test));else ERROR_EXIT +#endif /** \brief * prints a message diff --git a/AMDiS/src/InterpolRestrictMatrix.cc b/AMDiS/src/InterpolRestrictMatrix.cc index 2a2bf26df9d2004cbc658e1d8adae5464428fb05..816453d67467365346e102bbf3315fe39fd914da 100644 --- a/AMDiS/src/InterpolRestrictMatrix.cc +++ b/AMDiS/src/InterpolRestrictMatrix.cc @@ -153,13 +153,13 @@ namespace AMDiS { fillMemory(); } - TEST_EXIT(src)("src not set\n"); - TEST_EXIT(dest)("dest not set\n"); - TEST_EXIT(src->getFESpace() == dest->getFESpace())("invalid feSpaces\n"); + TEST_EXIT_DBG(src)("src not set\n"); + TEST_EXIT_DBG(dest)("dest not set\n"); + TEST_EXIT_DBG(src->getFESpace() == dest->getFESpace())("invalid feSpaces\n"); const FiniteElemSpace *feSpace = src->getFESpace(); - TEST_EXIT(feSpace->getBasisFcts()->getNumber() == numFcts_) + TEST_EXIT_DBG(feSpace->getBasisFcts()->getNumber() == numFcts_) ("invalid number of basis functions\n"); // do matrix vector multiplication @@ -289,7 +289,7 @@ namespace AMDiS { int coarseLevel) { FUNCNAME("InterpolRestrictMatrix::assembleDOFMatrix()"); - TEST_EXIT(dest)("dest not set\n"); + TEST_EXIT_DBG(dest)("dest not set\n"); if(!initialized_) { initialized_ = true; @@ -300,7 +300,7 @@ namespace AMDiS { const FiniteElemSpace *feSpace = dest->getRowFESpace(); - TEST_EXIT(feSpace->getBasisFcts()->getNumber() == numFcts_) + TEST_EXIT_DBG(feSpace->getBasisFcts()->getNumber() == numFcts_) ("invalid number of basis functions\n"); DOFVector<int> visitedRowDOFs(feSpace, "visited row DOFs"); diff --git a/AMDiS/src/Lagrange.cc b/AMDiS/src/Lagrange.cc index 3df2274bf7e1c5d8c8cb0d6c4858aea850fa722e..24b68185491d86490cfc39d4681279cdcf1b528b 100644 --- a/AMDiS/src/Lagrange.cc +++ b/AMDiS/src/Lagrange.cc @@ -204,7 +204,7 @@ namespace AMDiS { GeoIndex position, int positionIndex, int nodeIndex, int** vertices) { - TEST_EXIT((*vertices)==NULL)("vertices != NULL\n"); + TEST_EXIT_DBG((*vertices)==NULL)("vertices != NULL\n"); int dimOfPosition = DIM_OF_INDEX(position, dim); *vertices = GET_MEMORY(int, dimOfPosition + 1); @@ -277,11 +277,11 @@ namespace AMDiS { func = phi2v; break; case EDGE: - TEST_EXIT(owner->getDim() > 1)("no edge in 1d\n"); + TEST_EXIT_DBG(owner->getDim() > 1)("no edge in 1d\n"); func = phi2e; break; case CENTER: - TEST_EXIT(owner->getDim() == 1)("no center dofs for dim != 1\n"); + TEST_EXIT_DBG(owner->getDim() == 1)("no center dofs for dim != 1\n"); func = phi2e; break; default: @@ -297,7 +297,7 @@ namespace AMDiS { func = phi3e; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = phi3f; break; case CENTER: @@ -329,7 +329,7 @@ namespace AMDiS { func = phi4e0; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = phi4f; break; case CENTER: @@ -408,7 +408,7 @@ namespace AMDiS { func = grdPhi2e; break; case CENTER: - TEST_EXIT(owner->getDim() == 1)("no center dofs for dim != 1\n"); + TEST_EXIT_DBG(owner->getDim() == 1)("no center dofs for dim != 1\n"); func = grdPhi2e; break; default: @@ -424,7 +424,7 @@ namespace AMDiS { func = grdPhi3e; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = grdPhi3f; break; case CENTER: @@ -456,7 +456,7 @@ namespace AMDiS { func = grdPhi4e0; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = grdPhi4f; break; case CENTER: @@ -529,11 +529,11 @@ namespace AMDiS { func = D2Phi2v; break; case EDGE: - TEST_EXIT(owner->getDim() > 1)("no edge in 1d\n"); + TEST_EXIT_DBG(owner->getDim() > 1)("no edge in 1d\n"); func = D2Phi2e; break; case CENTER: - TEST_EXIT(owner->getDim() == 1)("no center dofs for dim != 1\n"); + TEST_EXIT_DBG(owner->getDim() == 1)("no center dofs for dim != 1\n"); func = D2Phi2e; break; default: @@ -549,7 +549,7 @@ namespace AMDiS { func = D2Phi3e; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = D2Phi3f; break; case CENTER: @@ -581,7 +581,7 @@ namespace AMDiS { func = D2Phi4e0; break; case FACE: - TEST_EXIT(owner->getDim() >= 3)("no faces in dim < 3\n"); + TEST_EXIT_DBG(owner->getDim() >= 3)("no faces in dim < 3\n"); func = D2Phi4f; break; case CENTER: @@ -722,7 +722,7 @@ namespace AMDiS { indi = orderOfPositionIndices(el, INDEX_OF_DIM(i, dim), j); // for all dofs for(int k=0; k < (*nDOF)[position]; k++) { - TEST_EXIT(indi)("indi == NULL\n"); + TEST_EXIT_DBG(indi)("indi == NULL\n"); result[counter++] = el->getDOF(firstNode + j, n0 + indi[k]); } } @@ -868,7 +868,7 @@ namespace AMDiS { result[index++] = INTERIOR; } - TEST_EXIT(index == nBasFcts)("found not enough boundarys\n"); + TEST_EXIT_DBG(index == nBasFcts)("found not enough boundarys\n"); return result; } @@ -1068,10 +1068,10 @@ namespace AMDiS { const DegreeOfFreedom *dof; const Parametric *parametric; - TEST_EXIT(fh)("no DOF_REAL_VEC fh\n"); - TEST_EXIT(fh->getFESpace())("no fe_space in DOF_REAL_VEC %s\n", + TEST_EXIT_DBG(fh)("no DOF_REAL_VEC fh\n"); + TEST_EXIT_DBG(fh->getFESpace())("no fe_space in DOF_REAL_VEC %s\n", fh->getName().c_str()); - TEST_EXIT(fh->getFESpace()->getBasisFcts() == this)("wrong basis fcts for fh\n"); + TEST_EXIT_DBG(fh->getFESpace()->getBasisFcts() == this)("wrong basis fcts for fh\n"); Mesh* mesh = fh->getFESpace()->getMesh(); @@ -1353,7 +1353,7 @@ namespace AMDiS { if (list->getNeighbourElement(i, 1) && list->getNeighbourNr(i, 1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -1696,7 +1696,7 @@ namespace AMDiS { if (list->getNeighbourElement(i, 1) && list->getNeighbourNr(i, 1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -1759,7 +1759,7 @@ namespace AMDiS { { case 1: cdi = el->getChild(1)->getDOF(node0+1, n0); - TEST_EXIT(cdi == cd[17])("cdi != cd[17]\n"); + TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) + 0.1875*(-(*drv)[pd[4]] + (*drv)[pd[5]]) - 0.125*(*drv)[pd[6]] @@ -1767,7 +1767,7 @@ namespace AMDiS { break; case 2: cdi = el->getChild(1)->getDOF(node0+2, n0); - TEST_EXIT(cdi == cd[18])("cdi != cd[18]\n"); + TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) + 0.1875*(-(*drv)[pd[4]] + (*drv)[pd[5]]) - 0.125*(*drv)[pd[8]] @@ -1781,7 +1781,7 @@ namespace AMDiS { { case 1: cdi = el->getChild(1)->getDOF(node0+2, n0); - TEST_EXIT(cdi == cd[18])("cdi != cd[18]\n"); + TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) + 0.1875*(-(*drv)[pd[4]] + (*drv)[pd[5]]) - 0.125*(*drv)[pd[6]] @@ -1789,7 +1789,7 @@ namespace AMDiS { break; case 2: cdi = el->getChild(1)->getDOF(node0+1, n0); - TEST_EXIT(cdi == cd[17])("cdi != cd[17]\n"); + TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) + 0.1875*(-(*drv)[pd[4]] + (*drv)[pd[5]]) - 0.125*(*drv)[pd[8]] @@ -2355,7 +2355,7 @@ namespace AMDiS { if (list->getNeighbourElement(i, 1) && list->getNeighbourNr(i, 1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -2883,7 +2883,7 @@ namespace AMDiS { if (list->getNeighbourElement(i,1) && list->getNeighbourNr(i,1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -3281,7 +3281,7 @@ namespace AMDiS { if (list->getNeighbourElement(i, 1) && list->getNeighbourNr(i, 1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -3364,7 +3364,7 @@ namespace AMDiS { { case 1: cdi = el->getChild(1)->getDOF(node0+1, n0); - TEST_EXIT(cdi == cd[17])("cdi != cd[17]\n"); + TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; (*drv)[pd[4]] += -0.1875*(*drv)[cdi]; @@ -3375,7 +3375,7 @@ namespace AMDiS { break; case 2: cdi = el->getChild(1)->getDOF(node0+2, n0); - TEST_EXIT(cdi == cd[18])("cdi != cd[18]\n"); + TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; (*drv)[pd[4]] += -0.1875*(*drv)[cdi]; @@ -3392,7 +3392,7 @@ namespace AMDiS { { case 1: cdi = el->getChild(1)->getDOF(node0+2, n0); - TEST_EXIT(cdi == cd[18])("cdi != cd[18]\n"); + TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; (*drv)[pd[4]] += -0.1875*(*drv)[cdi]; @@ -3403,7 +3403,7 @@ namespace AMDiS { break; case 2: cdi = el->getChild(1)->getDOF(node0+1, n0); - TEST_EXIT(cdi == cd[17])("cdi != cd[17]\n"); + TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; (*drv)[pd[4]] += -0.1875*(*drv)[cdi]; @@ -4047,7 +4047,7 @@ namespace AMDiS { if (list->getNeighbourElement(i,1) && list->getNeighbourNr(i,1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ @@ -4883,7 +4883,7 @@ namespace AMDiS { if (list->getNeighbourElement(i, 1) && list->getNeighbourNr(i, 1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); switch(lr_set) { @@ -5148,7 +5148,7 @@ namespace AMDiS { if (list->getNeighbourElement(i,1) && list->getNeighbourNr(i,1) < i) lr_set += 2; - TEST_EXIT(lr_set)("no values set on both neighbours\n"); + TEST_EXIT_DBG(lr_set)("no values set on both neighbours\n"); /****************************************************************************/ /* values on child[0] */ diff --git a/AMDiS/src/LeafData.cc b/AMDiS/src/LeafData.cc index b21899031c827b12f4903ca6ece416619cdbd451..1d4b868157de7fde9ae47706117ec31ecf417ed3 100644 --- a/AMDiS/src/LeafData.cc +++ b/AMDiS/src/LeafData.cc @@ -4,378 +4,218 @@ namespace AMDiS { -bool LeafDataEstimatable::refineElementData(Element* parent, - Element* child1, - Element* child2, - int elType) + bool LeafDataEstimatable::refineElementData(Element* parent, + Element* child1, + Element* child2, + int elType) -{ - ElementData::refineElementData(parent, child1, child2, elType); + { + ElementData::refineElementData(parent, child1, child2, elType); - LeafDataEstimatable *child1Data = - NEW LeafDataEstimatable(child1->getElementData()); - LeafDataEstimatable *child2Data = - NEW LeafDataEstimatable(child2->getElementData()); + LeafDataEstimatable *child1Data = + NEW LeafDataEstimatable(child1->getElementData()); + LeafDataEstimatable *child2Data = + NEW LeafDataEstimatable(child2->getElementData()); - child1Data->setErrorEstimate(0, errorEstimate / 2.0); - child2Data->setErrorEstimate(0, errorEstimate / 2.0); + child1Data->setErrorEstimate(0, errorEstimate / 2.0); + child2Data->setErrorEstimate(0, errorEstimate / 2.0); - child1->setElementData(child1Data); - child2->setElementData(child2Data); + child1->setElementData(child1Data); + child2->setElementData(child2Data); - return true; -} + return true; + } -void LeafDataEstimatable::coarsenElementData(Element* parent, - Element* thisChild, - Element* otherChild, - int elTypeParent) + void LeafDataEstimatable::coarsenElementData(Element* parent, + Element* thisChild, + Element* otherChild, + int elTypeParent) -{ - TEST_EXIT(otherChild->deleteElementData(ESTIMATABLE)) - ("couldn't delete LeafDataEstimatable at otherChild"); - parent->setElementData(NEW LeafDataEstimatable(parent->getElementData())); - ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); -} + { + bool test = otherChild->deleteElementData(ESTIMATABLE); + TEST_EXIT_DBG(test)("couldn't delete LeafDataEstimatable at otherChild"); + + parent->setElementData(NEW LeafDataEstimatable(parent->getElementData())); + ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); + } -bool LeafDataEstimatableVec::refineElementData(Element* parent, - Element* child1, - Element* child2, - int elType) + bool LeafDataEstimatableVec::refineElementData(Element* parent, + Element* child1, + Element* child2, + int elType) -{ - ElementData::refineElementData(parent, child1, child2, elType); - //int size = dynamic_cast<int>(errorEstimate.size()); - child1->setElementData(NEW LeafDataEstimatableVec(//size, - child1->getElementData())); - child2->setElementData(NEW LeafDataEstimatableVec(//size, - child2->getElementData())); - - return true; -} + { + ElementData::refineElementData(parent, child1, child2, elType); + child1->setElementData(NEW LeafDataEstimatableVec(child1->getElementData())); + child2->setElementData(NEW LeafDataEstimatableVec(child2->getElementData())); -void LeafDataEstimatableVec::coarsenElementData(Element* parent, - Element* thisChild, - Element* otherChild, - int elTypeParent) + return true; + } + + void LeafDataEstimatableVec::coarsenElementData(Element* parent, + Element* thisChild, + Element* otherChild, + int elTypeParent) -{ - TEST_EXIT(otherChild->deleteElementData(ESTIMATABLE)) - ("couldn't delete LeafDataEstimatableVec at otherChild"); - //int size = errorEstimate.getSize(); - parent->setElementData(NEW LeafDataEstimatableVec(//size, - parent->getElementData())); - ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); -} + { + bool test = otherChild->deleteElementData(ESTIMATABLE); + TEST_EXIT_DBG(test)("couldn't delete LeafDataEstimatableVec at otherChild"); -bool LeafDataCoarsenable::refineElementData(Element* parent, - Element* child1, - Element* child2, - int elType) - { - ElementData::refineElementData(parent, child1, child2, elType); - child1->setElementData(NEW LeafDataCoarsenable(child1->getElementData())); - child2->setElementData(NEW LeafDataCoarsenable(child2->getElementData())); - return true; -} + parent->setElementData(NEW LeafDataEstimatableVec(parent->getElementData())); + ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); + } -void LeafDataCoarsenable::coarsenElementData(Element* parent, - Element* thisChild, - Element* otherChild, - int elTypeParent) -{ - TEST_EXIT(otherChild->deleteElementData(COARSENABLE)) - ("couldn't delete LeafDataCoarsenable at otherChild"); - parent->setElementData(NEW LeafDataCoarsenable(parent->getElementData())); - ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); -} + bool LeafDataCoarsenable::refineElementData(Element* parent, + Element* child1, + Element* child2, + int elType) + { + ElementData::refineElementData(parent, child1, child2, elType); + child1->setElementData(NEW LeafDataCoarsenable(child1->getElementData())); + child2->setElementData(NEW LeafDataCoarsenable(child2->getElementData())); + return true; + } -bool LeafDataCoarsenableVec::refineElementData(Element* parent, - Element* child1, - Element* child2, - int elType) -{ - ElementData::refineElementData(parent, child1, child2, elType); - child1->setElementData(NEW LeafDataCoarsenableVec(child1->getElementData())); - child2->setElementData(NEW LeafDataCoarsenableVec(child2->getElementData())); - return true; -} + void LeafDataCoarsenable::coarsenElementData(Element* parent, + Element* thisChild, + Element* otherChild, + int elTypeParent) + { + bool test = otherChild->deleteElementData(COARSENABLE); + TEST_EXIT_DBG(test)("couldn't delete LeafDataCoarsenable at otherChild"); -void LeafDataCoarsenableVec::coarsenElementData(Element* parent, - Element* thisChild, - Element* otherChild, - int elTypeParent) -{ - TEST_EXIT(otherChild->deleteElementData(COARSENABLE)) - ("couldn't delete LeafDataCoarsenableVec at otherChild"); - parent->setElementData(NEW LeafDataCoarsenableVec(parent->getElementData())); - ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); -} + parent->setElementData(NEW LeafDataCoarsenable(parent->getElementData())); + ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); + } -bool LeafDataPeriodic::refineElementData(Element* parent, - Element* child1, - Element* child2, - int elType) -{ - ElementData::refineElementData(parent, child1, child2, elType); + bool LeafDataCoarsenableVec::refineElementData(Element* parent, + Element* child1, + Element* child2, + int elType) + { + ElementData::refineElementData(parent, child1, child2, elType); + child1->setElementData(NEW LeafDataCoarsenableVec(child1->getElementData())); + child2->setElementData(NEW LeafDataCoarsenableVec(child2->getElementData())); + return true; + } + + void LeafDataCoarsenableVec::coarsenElementData(Element* parent, + Element* thisChild, + Element* otherChild, + int elTypeParent) + { + bool test = otherChild->deleteElementData(COARSENABLE); + TEST_EXIT(test)("couldn't delete LeafDataCoarsenableVec at otherChild"); + parent->setElementData(NEW LeafDataCoarsenableVec(parent->getElementData())); + ElementData::coarsenElementData(parent, thisChild, otherChild, elTypeParent); + } - int i, j; + bool LeafDataPeriodic::refineElementData(Element* parent, + Element* child1, + Element* child2, + int elType) + { + ElementData::refineElementData(parent, child1, child2, elType); - Element* child[2] = {child1, child2}; + int i, j; - int dim = parent->getMesh()->getDim(); + Element* child[2] = {child1, child2}; - LeafDataPeriodic *ld[2] = {NULL, NULL}; + int dim = parent->getMesh()->getDim(); - ::std::list<LeafDataPeriodic::PeriodicInfo>::iterator it; + LeafDataPeriodic *ld[2] = {NULL, NULL}; - for(it = periodicInfoList.begin(); - it != periodicInfoList.end(); - ++it) - { - BoundaryType type = it->type; + ::std::list<LeafDataPeriodic::PeriodicInfo>::iterator it; - int parentSide = it->elementSide; + for(it = periodicInfoList.begin(); + it != periodicInfoList.end(); + ++it) + { + BoundaryType type = it->type; + + int parentSide = it->elementSide; - int mode = it->periodicMode; + int mode = it->periodicMode; - // for both children - for(i=0; i < 2; i++) { + // for both children + for(i=0; i < 2; i++) { - // get childs side - int sideOfChild = parent->getSideOfChild(i, parentSide, elType); - if(sideOfChild == -1) continue; + // get childs side + int sideOfChild = parent->getSideOfChild(i, parentSide, elType); + if(sideOfChild == -1) continue; - // create new leaf data if necessary - if(!ld[i]) { - ld[i] = NEW LeafDataPeriodic(child[i]->getElementData()); - //ld[i]->newDOF = newDOF; - child[i]->setElementData(ld[i]); - } + // create new leaf data if necessary + if(!ld[i]) { + ld[i] = NEW LeafDataPeriodic(child[i]->getElementData()); + child[i]->setElementData(ld[i]); + } - // create new periodic coords - DimVec<WorldVector<double> > coords(dim-1, NO_INIT); - - // create new periodic dofs - //DimVec<DegreeOfFreedom> dofs(dim-1, DEFAULT_VALUE, -1); - - // for each vertex of childs side - for(j=0; j < dim; j++) { - // get parents vertex nr. - int childVertex = child[i]->getVertexOfPosition(INDEX_OF_DIM(dim-1,dim), - sideOfChild, - j); - int parentVertex = child[i]->getVertexOfParent(i, childVertex, elType); + // create new periodic coords + DimVec<WorldVector<double> > coords(dim-1, NO_INIT); + + // for each vertex of childs side + for(j=0; j < dim; j++) { + // get parents vertex nr. + int childVertex = child[i]->getVertexOfPosition(INDEX_OF_DIM(dim-1,dim), + sideOfChild, + j); + int parentVertex = child[i]->getVertexOfParent(i, childVertex, elType); - if(parentVertex == -1) { - // create coords for new vertex - WorldVector<double> newCoords; - newCoords = (*(it->periodicCoords))[0]; - newCoords += (*(it->periodicCoords))[1]; - newCoords *= 0.5; - coords[j] = newCoords; - //dofs[j] = newDOF; - //TEST_EXIT(newDOF != -1)("newDOF not set\n"); - } else { - int posAtSide = parent->getPositionOfVertex(parentSide, - parentVertex); - coords[j] = (*(it->periodicCoords))[posAtSide]; - //dofs[j] = it->periodicDOFs[posAtSide]; + if(parentVertex == -1) { + // create coords for new vertex + WorldVector<double> newCoords; + newCoords = (*(it->periodicCoords))[0]; + newCoords += (*(it->periodicCoords))[1]; + newCoords *= 0.5; + coords[j] = newCoords; + } else { + int posAtSide = parent->getPositionOfVertex(parentSide, + parentVertex); + coords[j] = (*(it->periodicCoords))[posAtSide]; + } + } + + ld[i]->addPeriodicInfo(mode, type, sideOfChild, &coords); } } - ld[i]->addPeriodicInfo(mode, type, sideOfChild, &coords); - -// MSG("parent %d, child%d %d, periodic dofs %d %d\n", -// parent->getIndex(), -// i, -// child[i]->getIndex(), -// dofs[0], dofs[1]); - } + return false; } - return false; -} - -LeafDataPeriodic::PeriodicInfo::PeriodicInfo(const PeriodicInfo &rhs) -{ - periodicMode = rhs.periodicMode; - type = rhs.type; - elementSide = rhs.elementSide; - int i, dim; - if(rhs.periodicCoords) { - dim = rhs.periodicCoords->getSize() - 1; - periodicCoords = NEW DimVec<WorldVector<double> >(dim, NO_INIT); - for(i = 0; i < dim + 1; i++) { - (*periodicCoords)[i] = (*(rhs.periodicCoords))[i]; - } + LeafDataPeriodic::PeriodicInfo::PeriodicInfo(const PeriodicInfo &rhs) + { + periodicMode = rhs.periodicMode; + type = rhs.type; + elementSide = rhs.elementSide; + int i, dim; + if(rhs.periodicCoords) { + dim = rhs.periodicCoords->getSize() - 1; + periodicCoords = NEW DimVec<WorldVector<double> >(dim, NO_INIT); + for(i = 0; i < dim + 1; i++) { + (*periodicCoords)[i] = (*(rhs.periodicCoords))[i]; + } - } else { - periodicCoords = NULL; + } else { + periodicCoords = NULL; + } } -} -LeafDataPeriodic::PeriodicInfo::PeriodicInfo(int mode, - BoundaryType t, - int side, - const DimVec<WorldVector<double> > *coords) - : periodicMode(mode), - type(t), - elementSide(side), - periodicCoords(NULL) -{ - int i, dim; - if(coords) { - dim = coords->getSize() - 1; - periodicCoords = NEW DimVec<WorldVector<double> >(dim, NO_INIT); - for(i = 0; i < dim + 1; i++) { - (*periodicCoords)[i] = (*coords)[i]; + LeafDataPeriodic::PeriodicInfo::PeriodicInfo(int mode, + BoundaryType t, + int side, + const DimVec<WorldVector<double> > *coords) + : periodicMode(mode), + type(t), + elementSide(side), + periodicCoords(NULL) + { + int i, dim; + if(coords) { + dim = coords->getSize() - 1; + periodicCoords = NEW DimVec<WorldVector<double> >(dim, NO_INIT); + for(i = 0; i < dim + 1; i++) { + (*periodicCoords)[i] = (*coords)[i]; + } } } } - -// void LeafDataPeriodicRefinable::refineLeafData(Element* parent, -// Element* child1, -// Element* child2) -// { -// if(decoratedLeafData) { -// LeafDataPeriodic *ldp = -// (LeafDataPeriodic*) decoratedLeafData->getDecoratedLeafData(PERIODIC); -// TEST_EXIT(ldp)("no periodic leaf data\n"); - -// LeafDataRefinable *ldr = (LeafDataRefinable*) -// decoratedLeafData->getDecoratedLeafData(REFINABLE); -// if(ldr) { -// ldr->refineLeafData(parent, child1, child2); -// } - -// int dim = parent->getMesh()->getDim(); - -// LeafDataPeriodic *ld1 = NULL; -// LeafDataPeriodic *ld2 = NULL; - -// ::std::list<LeafDataPeriodic::PeriodicInfo>::iterator it; - -// switch(dim) { -// case 1: // ----- dim = 1 ----- -// // for each periodic info -// for(it = ldp->periodicInfoList.begin(); -// it != ldp->periodicInfoList.end(); -// ++it) -// { -// switch(it->elementSide) { -// case 0: // ----- side 0 ----- -// if(!ld1) -// ld1 = NEW LeafDataPeriodic(child1->getLeafData()); -// ld1->addPeriodicInfo(0, it->periodicCoords); -// child1->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld1)) -// ); -// break; -// case 1: // ----- side 1 ----- -// if(!ld2) -// ld2 = NEW LeafDataPeriodic(child2->getLeafData()); -// ld2->addPeriodicInfo(0, it->periodicCoords); -// child2->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld2)) -// ); -// break; -// default: ERROR_EXIT("invalid element side\n"); -// } -// } -// break; -// case 2: // ----- dim = 2 ----- -// // for each periodic info -// for(it = ldp->periodicInfoList.begin(); -// it != ldp->periodicInfoList.end(); -// ++it) -// { -// switch(it->elementSide) { -// case 0: // ----- side 0 ----- -// if(!ld2) -// ld2 = NEW LeafDataPeriodic(child2->getLeafData()); -// ld2->addPeriodicInfo(2, it->periodicCoords); -// child2->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld2)) -// ); -// break; -// case 1: // ----- side 1 ----- -// if(!ld1) -// ld1 = NEW LeafDataPeriodic(child1->getLeafData()); -// ld1->addPeriodicInfo(2, it->periodicCoords); -// child1->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld1)) -// ); -// break; -// case 2: // ----- side 2 ----- -// { -// if(!ld1) -// ld1 = NEW LeafDataPeriodic(child1->getLeafData()); -// if(!ld2) -// ld2 = NEW LeafDataPeriodic(child2->getLeafData()); - -// DimVec<WorldVector<double> > coords1(it->periodicCoords); -// DimVec<WorldVector<double> > coords2(it->periodicCoords); - -// WorldVector<double> newCoords; -// newCoords = it->periodicCoords[0]; -// newCoords += it->periodicCoords[1]; -// newCoords *= 0.5; - -// coords1[1] = newCoords; -// coords2[0] = newCoords; - -// ld1->addPeriodicInfo(0, coords1); -// ld2->addPeriodicInfo(1, coords2); - -// child1->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld1)) -// ); -// child2->setLeafData(NEW LeafDataPeriodicRefinable -// (NEW LeafDataPeriodicCoarsenable(ld2)) -// ); -// } -// break; -// default: ERROR_EXIT("invalid element side\n"); -// } -// } -// break; -// case 3: // ----- dim = 3 ----- -// ERROR_EXIT("not yet for 3d\n"); -// // for each periodic info -// for(it = ldp->periodicInfoList.begin(); -// it != ldp->periodicInfoList.end(); -// ++it) -// { -// switch(it->elementSide) { -// case 0: // ----- side 0 ----- -// break; -// case 1: // ----- side 1 ----- -// break; -// case 2: // ----- side 2 ----- -// break; -// case 3: // ----- side 3 ----- -// break; -// default: ERROR_EXIT("invalid element side\n"); -// } -// } -// break; -// default: ERROR_EXIT("invalid dim\n"); -// } -// } -// } - -// LeafData *LeafData::createLeafData(::std::string type) -// { -// if(type == "NULL") return NULL; -// if(type == "LeafDataEstimatable") return new LeafDataEstimatable; -// if(type == "LeafDataEstimatableVec") return new LeafDataEstimatableVec; -// if(type == "LeafDataCoarsenable") return new LeafDataCoarsenable; -// if(type == "LeafDataCoarsenableVec") return new LeafDataCoarsenableVec; -// if(type == "LeafDataPeriodic") return new LeafDataPeriodic; - -// ERROR_EXIT("unknown type\n"); -// return NULL; -// } - -} diff --git a/AMDiS/src/LeafData.h b/AMDiS/src/LeafData.h index 1573ab4227e78f27ca356b63bbd01b893a4607bb..8178c4b3c4715699c5113a1fc25aa2d5a8b17a0e 100644 --- a/AMDiS/src/LeafData.h +++ b/AMDiS/src/LeafData.h @@ -182,18 +182,9 @@ namespace AMDiS { * Sets \ref errorEstimate */ inline void setErrorEstimate(int index, double est) { - // TEST_EXIT(index < static_cast<int>(errorEstimate.getSize())) - // ("invalid index\n"); errorEstimate[index] = est; }; - /** \brief - * Returns \ref errorEstimate - */ - // inline double getErrorEstimate(int index) const { - // return const_cast<map<int,double,less<int>,allocator<double> >*>(&errorEstimate)->operator[](index); - // }; - /** \brief * Returns \ref errorEstimate */ diff --git a/AMDiS/src/Line.h b/AMDiS/src/Line.h index c1c85a8a86d566dca59ba6c809980b4278d57388..dbec689f1c8f922f6a2c336649b744d912be336d 100644 --- a/AMDiS/src/Line.h +++ b/AMDiS/src/Line.h @@ -113,8 +113,8 @@ public: */ virtual int getSideOfChild(int child, int side, int ) const { FUNCNAME("Line::getSideOfChild()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 1)("side must be between 0 and 1\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 1)("side must be between 0 and 1\n"); return sideOfChild[child][side]; }; @@ -123,8 +123,8 @@ public: */ virtual int getVertexOfParent(int child, int side, int) const { FUNCNAME("Line::getVertexOfParent()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 2)("side must be between 0 and 1\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 2)("side must be between 0 and 1\n"); return vertexOfParent[child][side]; }; diff --git a/AMDiS/src/MacroElement.cc b/AMDiS/src/MacroElement.cc index b55b65effce43531d571099a01cf3da1e7da35b7..8378759be2ab91e4ab864a8d3dd89fcdac3ab3a0 100644 --- a/AMDiS/src/MacroElement.cc +++ b/AMDiS/src/MacroElement.cc @@ -78,12 +78,15 @@ namespace AMDiS { in >> typeName; in.get(); - if(element) { + if (element) { TEST_EXIT(typeName == element->getTypeName())("wrong element type name\n"); } else { - if(typeName == "Line") element = NEW Line(NULL); - if(typeName == "Triangle") element = NEW Triangle(NULL); - if(typeName == "Tetrahedron") element = NEW Tetrahedron(NULL); + if (typeName == "Line") + element = NEW Line(NULL); + if (typeName == "Triangle") + element = NEW Triangle(NULL); + if (typeName == "Tetrahedron") + element = NEW Tetrahedron(NULL); } element->deserialize(in); @@ -91,7 +94,7 @@ namespace AMDiS { // read coords int i, size; in.read(reinterpret_cast<char*>(&size), sizeof(int)); - if(coord.getSize()) { + if (coord.getSize()) { TEST_EXIT(coord.getSize() == size)("invalid size\n"); } else { coord.initSize(size); diff --git a/AMDiS/src/MacroReader.cc b/AMDiS/src/MacroReader.cc index b3f245aba4d2888c5e1156c35715ad4b4fcf44bf..7157b259e7325030e106aa104be2788de6c87a48 100644 --- a/AMDiS/src/MacroReader.cc +++ b/AMDiS/src/MacroReader.cc @@ -52,6 +52,7 @@ namespace AMDiS { int *verticesEl1 = GET_MEMORY(int, dim); int *verticesEl2 = GET_MEMORY(int, dim); int mode = -1; // 0: drop dofs, 1: associate dofs + int result; BoundaryType boundaryType; fscanf(file, "%*s %d", &n); @@ -64,17 +65,24 @@ namespace AMDiS { ::std::map<int, int> vertexMapEl1; ::std::map<int, int> vertexMapEl2; - TEST_EXIT(fscanf(file, "%d", &mode) == 1)("mode?\n"); + result = fscanf(file, "%d", &mode); + TEST_EXIT(result == 1)("mode?\n"); - TEST_EXIT(fscanf(file, "%d", &boundaryType) == 1)("boundaryType?\n"); + result = fscanf(file, "%d", &boundaryType); + TEST_EXIT(result == 1)("boundaryType?\n"); - TEST_EXIT(fscanf(file, "%d", &el1) == 1)("el1?\n"); + result = fscanf(file, "%d", &el1); + TEST_EXIT(result == 1)("el1?\n"); + for (int j = 0; j < dim; j++) { - TEST_EXIT(fscanf(file, "%d", &verticesEl1[j]) == 1)("vertEl1[%d]\n", j); + result = fscanf(file, "%d", &verticesEl1[j]); + TEST_EXIT(result == 1)("vertEl1[%d]\n", j); } - TEST_EXIT(fscanf(file, "%d", &el2) == 1)("el2?\n"); + result = fscanf(file, "%d", &el2); + TEST_EXIT(result == 1)("el2?\n"); for (int j = 0; j < dim; j++) { - TEST_EXIT(fscanf(file, "%d", &verticesEl2[j]) == 1)("vertEl2[%d]\n", j); + result = fscanf(file, "%d", &verticesEl2[j]); + TEST_EXIT(result == 1)("vertEl2[%d]\n", j); } for (int j = 0; j < dim; j++) { if (mode == 0) { @@ -340,10 +348,12 @@ namespace AMDiS { { FUNCNAME("MacroInfo::fill()"); - int i; - int dim=pmesh->getDim(); + TEST_EXIT(pmesh)("no mesh\n"); + + int i; + int dim = pmesh->getDim(); - TEST_EXIT(mesh = pmesh)("no mesh\n"); + mesh = pmesh; mesh->setNumberOfElements(ne); mesh->setNumberOfLeaves(ne); @@ -484,11 +494,11 @@ namespace AMDiS { DimVec<int> *ind = NULL; TEST_EXIT(filename)("no file specified; filename NULL pointer\n"); - //TEST_EXIT(pmesh)("no mesh specified; mesh NULL pointer\n"); TEST_EXIT(strlen(filename) < static_cast<unsigned int>(127)) ("can only handle filenames up to 127 characters\n"); - TEST_EXIT((file=fopen(filename,"r")))("cannot open file %s\n",filename); + file = fopen(filename, "r"); + TEST_EXIT(file)("cannot open file %s\n", filename); strncpy(name, filename, 127); /****************************************************************************/ @@ -556,13 +566,17 @@ namespace AMDiS { /* and now, reading data ... */ /****************************************************************************/ - TEST_EXIT((file=fopen(name,"r")))("cannot open file %s\n",name); + file = fopen(name, "r"); + TEST_EXIT(file)("cannot open file %s\n",name); + + int result; for (i_key = 0; i_key < n_keys; i_key++) { switch(sort_key[i_key]) { case 0: - TEST_EXIT(fscanf(file, "%*s %d", &dim) == 1) + result = fscanf(file, "%*s %d", &dim); + TEST_EXIT(result == 1) ("cannot read DIM correctly in file %s\n", name); ind = NEW DimVec<int>(dim, NO_INIT); @@ -570,7 +584,8 @@ namespace AMDiS { key_def[0] = true; break; case 1: - TEST_EXIT(fscanf(file, "%*s %d", &dow) == 1) + result = fscanf(file, "%*s %d", &dow); + TEST_EXIT(result == 1) ("cannot read Global::getGeo(WORLD) correctly in file %s\n", name); TEST_EXIT(dow == Global::getGeo(WORLD)) ("dimension of world = %d != Global::getGeo(WORLD) = %d\n", @@ -579,7 +594,8 @@ namespace AMDiS { key_def[1] = true; break; case 2: - TEST_EXIT(fscanf(file, "%*s %*s %*s %d", &nv) == 1) + result = fscanf(file, "%*s %*s %*s %d", &nv); + TEST_EXIT(result == 1) ("cannot read number of vertices correctly in file %s\n", name); TEST_EXIT(nv > 0) ("number of vertices = %d must be bigger than 0\n", nv); @@ -589,7 +605,8 @@ namespace AMDiS { fill(mesh, ne, nv); break; case 3: - TEST_EXIT(fscanf(file, "%*s %*s %*s %d", &ne) == 1) + result = fscanf(file, "%*s %*s %*s %d", &ne); + TEST_EXIT(result == 1) ("cannot read number of elements correctly in file %s\n", name); TEST_EXIT(ne > 0) ("number of elements = %d must be bigger than 0\n", ne); @@ -602,7 +619,8 @@ namespace AMDiS { fscanf(file, "%*s %*s"); for (int i = 0; i < nv; i++) { for (j = 0; j <Global::getGeo(WORLD) ; j++) { - TEST_EXIT(fscanf(file, "%lf", &dbl) == 1) + result = fscanf(file, "%lf", &dbl); + TEST_EXIT(result == 1) ("error while reading coordinates, check file %s\n", name); coords[i][j] = dbl; } @@ -616,12 +634,13 @@ namespace AMDiS { /****************************************************************************/ for (int i = 0; i < ne; i++) { - TEST_EXIT(read_indices(file, *ind)) - ("cannot read vertex indices of element %d in file %s\n", i, name); + result = read_indices(file, *ind); + TEST_EXIT(result) + ("cannot read vertex indices of element %d in file %s\n", i, name); - for (k = 0; k < mesh->getGeo(VERTEX); k++) - mel_vertex[i][k] = (*ind)[k]; - } + for (k = 0; k < mesh->getGeo(VERTEX); k++) + mel_vertex[i][k] = (*ind)[k]; + } key_def[5] = true; break; @@ -633,13 +652,14 @@ namespace AMDiS { for (int i = 0; i < ne; i++) { // boundary information of ith element - TEST_EXIT(read_indices(file, *ind)) - ("cannot read boundary type of element %d in file %s\n", i, name); + result = read_indices(file, *ind); + TEST_EXIT(result) + ("cannot read boundary type of element %d in file %s\n", i, name); - // fill boundary of macro-element - MacroReader::fillMelBoundary(mesh, - mel[i], - VecConv<int,NEIGH,PARTS>::convertVec((*ind), mesh)); + // fill boundary of macro-element + MacroReader::fillMelBoundary(mesh, + mel[i], + VecConv<int,NEIGH,PARTS>::convertVec((*ind), mesh)); } this->fillBoundaryInfo(mesh); @@ -680,13 +700,14 @@ namespace AMDiS { ERROR("there is no element type in 2d and 2d; ignoring data for elType\n"); for (int i = 0; i < ne; i++) { - TEST_EXIT(fscanf(file, "%d", &j) == 1) - ("cannot read elType of element %d in file %s\n", - i, name); - if (dim == 3) { - (mel)[i]->elType = j; - } + result = fscanf(file, "%d", &j); + TEST_EXIT(result == 1) + ("cannot read elType of element %d in file %s\n", + i, name); + if (dim == 3) { + (mel)[i]->elType = j; } + } key_def[8] = true; break; @@ -702,7 +723,8 @@ namespace AMDiS { } for (int i = 0; i < ne; i++) { - TEST_EXIT(read_indices(file, *ind)) + result = read_indices(file, *ind); + TEST_EXIT(result) ("cannot read boundary projector of element %d in file %s\n", i, name); Projection *projector = Projection::getProjection((*ind)[0]); @@ -734,9 +756,10 @@ namespace AMDiS { /****************************************************************************/ for (int i = 0; i < ne; i++) { - TEST_EXIT(fscanf(file, "%d", &j) == 1) + result = fscanf(file, "%d", &j); + TEST_EXIT(result == 1) ("cannot read region of element %d in file %s\n", i, name); - if(j >= 0) { + if (j >= 0) { Element *el = mel[i]->getElement(); ElementRegion_ED *elementRegion = NEW ElementRegion_ED(el->getElementData()); @@ -749,7 +772,8 @@ namespace AMDiS { case 11: fscanf(file, "%*s %*s"); for (int i = 0; i < ne; i++) { - TEST_EXIT(read_indices(file, *ind)) + result = read_indices(file, *ind); + TEST_EXIT(result) ("cannot read surface regions of element %d in file %s\n", i, name); Element *el = mel[i]->getElement(); diff --git a/AMDiS/src/MatVecMultiplier.cc b/AMDiS/src/MatVecMultiplier.cc index f2c3595f180b5f96bc4a5aa9ba96416805ef56c5..fdb4b31b75deda777455cde7b6fe45266f155aba 100644 --- a/AMDiS/src/MatVecMultiplier.cc +++ b/AMDiS/src/MatVecMultiplier.cc @@ -48,8 +48,8 @@ namespace AMDiS { unsigned int nRows = matrix->size(); - TEST_EXIT(x.size() == nRows)("SIZE!\n"); - TEST_EXIT(result.size() == nRows)("SIZE!\n"); + TEST_EXIT_DBG(x.size() == nRows)("SIZE!\n"); + TEST_EXIT_DBG(result.size() == nRows)("SIZE!\n"); if (!add) { for (unsigned int i = 0; i < nRows; i++) { @@ -99,12 +99,12 @@ namespace AMDiS { double entry = (*rowIt1)[i].entry; - TEST_EXIT(entry >= 0)("entries must be >= 0\n"); + TEST_EXIT_DBG(entry >= 0)("entries must be >= 0\n"); rowSum += entry; } - TEST_EXIT(rowSum > 1E-20)("matrix not inversable\n"); + TEST_EXIT_DBG(rowSum > 1E-20)("matrix not inversable\n"); (*rowIt2).resize(1); (*rowIt2)[0].col = rowIt2.getDOFIndex(); @@ -151,12 +151,12 @@ namespace AMDiS { double entry = (*rowIt1)[j].entry; - TEST_EXIT(entry >= 0)("entries must be >= 0\n"); + TEST_EXIT_DBG(entry >= 0)("entries must be >= 0\n"); rowSum += entry; } - TEST_EXIT(rowSum > 1E-20)("matrix not inversable\n"); + TEST_EXIT_DBG(rowSum > 1E-20)("matrix not inversable\n"); (*rowIt2).resize(1); (*rowIt2)[0].col = rowIt2.getDOFIndex(); diff --git a/AMDiS/src/MatrixVector.h b/AMDiS/src/MatrixVector.h index f7e5fe2e1f35a37de231ada482ddb0207b9ba796..e2f61122b7f0bd002e3b43f3a31031e98dca572f 100644 --- a/AMDiS/src/MatrixVector.h +++ b/AMDiS/src/MatrixVector.h @@ -94,7 +94,7 @@ namespace AMDiS { * Assignement operator */ inline const Vector<T>& operator=(const Vector<T>& rhs) { - TEST_EXIT(rhs.size == size)("invalid size\n"); + TEST_EXIT_DBG(rhs.size == size)("invalid size\n"); T *rhsIt, *thisIt; for(rhsIt = rhs.begin(), thisIt = this->begin(); rhsIt != rhs.end(); @@ -191,7 +191,7 @@ namespace AMDiS { * Access to the i-th vector element. */ inline T& operator[](int i) { - TEST_EXIT(i < size && i >= 0)("invalid index\n"); + TEST_EXIT_DBG(i < size && i >= 0)("invalid index\n"); return valArray[i]; }; @@ -199,7 +199,7 @@ namespace AMDiS { * Access to the i-th vector element for const vectors. */ inline const T& operator[] (int i) const { - TEST_EXIT(i < size && i >= 0)("invalid index\n"); + TEST_EXIT_DBG(i < size && i >= 0)("invalid index\n"); return valArray[i]; }; @@ -400,8 +400,8 @@ namespace AMDiS { template<typename T> inline const Vector<T>& mv(const Matrix<T>& m, const Vector<T>& v, Vector<T>& result) { - TEST_EXIT(m.getNumCols() == v.getSize())("m and v not compatible\n"); - TEST_EXIT(v.getSize() == result.getSize())("wrong result size\n"); + TEST_EXIT_DBG(m.getNumCols() == v.getSize())("m and v not compatible\n"); + TEST_EXIT_DBG(v.getSize() == result.getSize())("wrong result size\n"); T *resultIt, *mIt, *vIt; @@ -462,8 +462,8 @@ namespace AMDiS { template<typename T> inline const Vector<T>& add(const Vector<T>& v1, const Vector<T>& v2, Vector<T>& result) { - TEST_EXIT(v1.getSize() == v2.getSize())("invalid size in test v1 == v2\n"); - TEST_EXIT(v2.getSize() == result.getSize())("invalid size in test v2 == result\n"); + TEST_EXIT_DBG(v1.getSize() == v2.getSize())("invalid size in test v1 == v2\n"); + TEST_EXIT_DBG(v2.getSize() == result.getSize())("invalid size in test v2 == result\n"); T *v1It, *v2It, *resultIt; for (v1It = v1.begin(), v2It = v2.begin(), resultIt = result.begin(); v1It != v1.end(); @@ -483,7 +483,7 @@ namespace AMDiS { const Vector<T>& v, Vector<T>& result) { - TEST_EXIT(v.getSize() == result.getSize())("invalid size\n"); + TEST_EXIT_DBG(v.getSize() == result.getSize())("invalid size\n"); T *vIt, *resultIt; for (vIt = v.begin(), resultIt = result.begin(); vIt != v.end(); @@ -501,7 +501,7 @@ namespace AMDiS { template<typename T> inline const Vector<T>& add(const Vector<T>& v, const T& scal, Vector<T>& result) { - TEST_EXIT(v.getSize() == result.getSize())("invalid size\n"); + TEST_EXIT_DBG(v.getSize() == result.getSize())("invalid size\n"); T *vIt, *resultIt; for (vIt = v.begin(), resultIt = result.begin(); vIt != v.end(); @@ -521,7 +521,7 @@ namespace AMDiS { const Vector<T> &x, Vector<T> &y) { - TEST_EXIT(x.getSize() == y.getSize())("invalid size\n"); + TEST_EXIT_DBG(x.getSize() == y.getSize())("invalid size\n"); T *xIt, *yIt; for (xIt = x.begin(), yIt = y.begin(); xIt != x.end(); @@ -596,8 +596,8 @@ namespace AMDiS { const Vector<T>& y, Vector<T>& z) { - FUNCNAME("vectorProduct"); - TEST_EXIT(Global::getGeo(WORLD) == 3)("DIM_OF_WORLD != 3\n"); + FUNCNAME("vectorProduct()"); + TEST_EXIT_DBG(Global::getGeo(WORLD) == 3)("DIM_OF_WORLD != 3\n"); z[0] = x[1] * y[2] - x[2] * y[1]; z[1] = x[2] * y[0] - x[0] * y[2]; z[2] = x[0] * y[1] - x[1] * y[0]; diff --git a/AMDiS/src/MemoryManager.h b/AMDiS/src/MemoryManager.h index c2045de62fa6a1c6920491b42a70d4b6d11776c3..51e18dfea992e20bdb48e4a0382e194fba9c243c 100644 --- a/AMDiS/src/MemoryManager.h +++ b/AMDiS/src/MemoryManager.h @@ -277,7 +277,7 @@ namespace AMDiS { */ static void freeMemory(T* mem, size_t s) { FUNCNAME("MemoryManager<T>::freeMemory()"); - TEST_EXIT(singleton)("not initialized\n"); + TEST_EXIT_DBG(singleton)("not initialized\n"); byteCount -= s; singleton->instanceCount -= s/sizeof(T); singleton->typedByteCount -= s; @@ -301,7 +301,7 @@ namespace AMDiS { int status; size_t length; abi::__cxa_demangle(typeid(T).name(), result, &length, &status); - TEST_EXIT(status == 0)("demangling failed\n"); + TEST_EXIT_DBG(status == 0)("demangling failed\n"); return ::std::string(result); #endif return typeid(T).name(); @@ -565,7 +565,7 @@ namespace AMDiS { void MemoryManager<T>::init() { FUNCNAME("MemoryManager<T>::init()"); - TEST_EXIT(singleton == NULL)("already initialized\n"); + TEST_EXIT_DBG(singleton == NULL)("already initialized\n"); singleton = new MemoryManager<T>; singleton->typeId = idCounter++; diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc index 05a703cbd457b9f841d54bf87747f05c119e5aa1..e788ae075f4de4c1d79d502dda4bb50292bbb55d 100644 --- a/AMDiS/src/Mesh.cc +++ b/AMDiS/src/Mesh.cc @@ -244,7 +244,7 @@ namespace AMDiS { FREE_MEMORY(oldDOF, DegreeOfFreedom*, oldNNodes); - TEST_EXIT(index==nNodeEl)("ERROR: Number of entered nodes %f != number of nodes %f\n",index,nNodeEl); + TEST_EXIT_DBG(index == nNodeEl)("ERROR: Number of entered nodes %f != number of nodes %f\n",index,nNodeEl); } @@ -332,7 +332,7 @@ namespace AMDiS { nDOF[CENTER] += localAdmin->getNumberOfDOFs(CENTER); nDOFEl += nDOF[CENTER]; - TEST_EXIT(nDOF[VERTEX] > 0)("no vertex dofs\n"); + TEST_EXIT_DBG(nDOF[VERTEX] > 0)("no vertex dofs\n"); node[VERTEX] = 0; nNodeEl = getGeo(VERTEX); @@ -368,8 +368,9 @@ namespace AMDiS { Flag fill_flag; for (iadmin = 0; iadmin < static_cast<int>(admin.size()); iadmin++) { - TEST_EXIT((compressAdmin = admin[iadmin])) - ("no admin[%d] in mesh\n", iadmin); + compressAdmin = admin[iadmin]; + + TEST_EXIT_DBG(compressAdmin)("no admin[%d] in mesh\n", iadmin); if ((size = compressAdmin->getSize()) < 1) continue; @@ -400,7 +401,7 @@ namespace AMDiS { { FUNCNAME("Mesh::getDOF()"); - TEST_EXIT(position >= CENTER && position <= FACE) + TEST_EXIT_DBG(position >= CENTER && position <= FACE) ("unknown position %d\n", position); int ndof = getNumberOfDOFs(position); @@ -411,12 +412,12 @@ namespace AMDiS { for (int i = 0; i < getNumberOfDOFAdmin(); i++) { const DOFAdmin *localAdmin = &getDOFAdmin(i); - TEST_EXIT(localAdmin)("no admin[%d]\n", i); + TEST_EXIT_DBG(localAdmin)("no admin[%d]\n", i); int n = localAdmin->getNumberOfDOFs(position); int n0 = localAdmin->getNumberOfPreDOFs(position); - TEST_EXIT(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); + TEST_EXIT_DBG(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); for (int j = 0; j < n; j++) { dof[n0 + j] = const_cast<DOFAdmin*>(localAdmin)->getDOFIndex(); @@ -445,7 +446,7 @@ namespace AMDiS { { FUNCNAME("Mesh::freeDOFPtrs()"); - TEST_EXIT(ptrs)("ptrs=NULL\n"); + TEST_EXIT_DBG(ptrs)("ptrs=NULL\n"); if (nNodeEl <= 0) return; @@ -518,7 +519,7 @@ namespace AMDiS { DOFAdmin *localAdmin; int i, j, n, n0, ndof; - TEST_EXIT(position >= CENTER && position <= FACE) + TEST_EXIT_DBG(position >= CENTER && position <= FACE) ("unknown position %d\n",position); ndof = nDOF[position]; @@ -539,7 +540,7 @@ namespace AMDiS { return; } - TEST_EXIT(ndof <= MAX_DOF) + TEST_EXIT_DBG(ndof <= MAX_DOF) ("ndof too big: ndof=%d, MAX_DOF=%d\n",ndof,MAX_DOF); for (i = 0; i < static_cast<int>(admin.size()); i++) @@ -549,7 +550,7 @@ namespace AMDiS { n = localAdmin->getNumberOfDOFs(position); n0 = localAdmin->getNumberOfPreDOFs(position); - TEST_EXIT(n+n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); + TEST_EXIT_DBG(n+n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); for (j = 0; j < n; j++) { @@ -571,7 +572,8 @@ namespace AMDiS { Element* Mesh::createNewElement(Element *parent) { FUNCNAME("Mesh::createNewElement()"); - TEST_EXIT(elementPrototype)("no element prototype\n"); + + TEST_EXIT_DBG(elementPrototype)("no element prototype\n"); Element *el = parent ? parent->clone() : elementPrototype->clone(); @@ -922,7 +924,7 @@ namespace AMDiS { // read dim int oldVal = dim; in.read(reinterpret_cast<char*>(&dim), sizeof(int)); - TEST_EXIT((oldVal == 0) || (dim == oldVal))("invalid dimension\n"); + TEST_EXIT_DBG((oldVal == 0) || (dim == oldVal))("invalid dimension\n"); // read nVertices in.read(reinterpret_cast<char*>(&nVertices), sizeof(int)); @@ -951,7 +953,7 @@ namespace AMDiS { // read nDOFEl oldVal = nDOFEl; in.read(reinterpret_cast<char*>(&nDOFEl), sizeof(int)); - TEST_EXIT((oldVal == 0) || (nDOFEl == oldVal))("invalid nDOFEl\n"); + TEST_EXIT_DBG((oldVal == 0) || (nDOFEl == oldVal))("invalid nDOFEl\n"); // read nDOF nDOF.deserialize(in); @@ -959,7 +961,7 @@ namespace AMDiS { // read nNodeEl oldVal = nNodeEl; in.read(reinterpret_cast<char*>(&nNodeEl), sizeof(int)); - TEST_EXIT((oldVal == 0) || (nNodeEl == oldVal))("invalid nNodeEl\n"); + TEST_EXIT_DBG((oldVal == 0) || (nNodeEl == oldVal))("invalid nNodeEl\n"); // read node node.deserialize(in); diff --git a/AMDiS/src/MeshStructure.cc b/AMDiS/src/MeshStructure.cc index 904ecd09403b08dc844ebe5808439fc32b8a3d08..5e9451f67f68252f8e6f387e98eec2fa749d27bd 100644 --- a/AMDiS/src/MeshStructure.cc +++ b/AMDiS/src/MeshStructure.cc @@ -72,7 +72,7 @@ namespace AMDiS { if(pos_ >= unsignedLongSize_) { currentIndex_++; - TEST_EXIT(currentIndex_ < static_cast<int>(code_.size())) + TEST_EXIT_DBG(currentIndex_ < static_cast<int>(code_.size())) ("end of structure reached\n"); pos_ = 0; currentCode_ = code_[currentIndex_]; @@ -89,7 +89,7 @@ namespace AMDiS { } else { bool cont = nextElement(insert); cont = skipBranch(insert); // left branch - TEST_EXIT(cont)("invalid structure\n"); + TEST_EXIT_DBG(cont)("invalid structure\n"); cont = skipBranch(insert); // righ branch return cont; } @@ -118,7 +118,7 @@ namespace AMDiS { cont2 = structure2->nextElement(); } } - TEST_EXIT(cont1 == cont2)("structures don't match\n"); + TEST_EXIT_DBG(cont1 == cont2)("structures don't match\n"); cont = cont1; } @@ -141,12 +141,12 @@ namespace AMDiS { reset(); elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_EVERY_EL_PREORDER); while(elInfo) { - TEST_EXIT(cont)("unexpected structure code end!\n"); + TEST_EXIT_DBG(cont)("unexpected structure code end!\n"); Element *element = elInfo->getElement(); if(isLeafElement()) { - TEST_EXIT(element->isLeaf())("mesh finer than code\n"); + TEST_EXIT_DBG(element->isLeaf())("mesh finer than code\n"); }; if(element->isLeaf() && !isLeafElement()) { @@ -158,7 +158,7 @@ namespace AMDiS { if(checkPartition) { PartitionElementData *partitionData = dynamic_cast<PartitionElementData*> (element->getElementData(PARTITION_ED)); - TEST_EXIT(partitionData)("no partition element data\n"); + TEST_EXIT_DBG(partitionData)("no partition element data\n"); PartitionStatus status = partitionData->getPartitionStatus(); if(status == OUT || status == UNDEFINED) { decorate = false; diff --git a/AMDiS/src/MpCCIAdapter.cc b/AMDiS/src/MpCCIAdapter.cc index 6b3ad245b64f50cf25ffe56bf273ec749c3d5fc5..2401716c18415f177c16e0e6534fdd23fb5c5c06 100644 --- a/AMDiS/src/MpCCIAdapter.cc +++ b/AMDiS/src/MpCCIAdapter.cc @@ -51,11 +51,15 @@ namespace AMDiS //if(useMPI_) MPI::COMM_WORLD.Barrier(); //if(mpiRank_ == 0) { - if(idString) { - TEST_EXIT(CCI_Init_with_id_string(NULL, NULL, idString) == 0) + int error; + + if (idString) { + error = CCI_Init_with_id_string(NULL, NULL, idString); + TEST_EXIT(error == 0) ("CCI_Init_with_id_string() failed\n"); } else { - TEST_EXIT(CCI_Init(NULL, NULL) == 0)("CCI_Init() failed\n"); + error = CCI_Init(NULL, NULL); + TEST_EXIT(error == 0)("CCI_Init() failed\n"); } //} @@ -78,52 +82,52 @@ namespace AMDiS if(localComm == -1) { localComm_ = CCI_COMM_RCODE[remoteCodeID]; } else { - TEST_EXIT(CCI_Comm_info(localComm_, - &remoteCodeID_, - &remoteComm_, - CCI_MAX_NQUANTITIES, - sendQuantities, - sendMeshes, - &sendNQuantities, - CCI_MAX_NQUANTITIES, - recvQuantities, - recvMeshes, - &recvNQuantities) == 0) - ("CCI_Comm_info() failed\n"); + error = CCI_Comm_info(localComm_, + &remoteCodeID_, + &remoteComm_, + CCI_MAX_NQUANTITIES, + sendQuantities, + sendMeshes, + &sendNQuantities, + CCI_MAX_NQUANTITIES, + recvQuantities, + recvMeshes, + &recvNQuantities); + + TEST_EXIT(error)("CCI_Comm_info() failed\n"); MSG("remote comm id: %d\n", remoteComm_); - TEST_EXIT(CCI_Def_comm(localComm_, - remoteCodeID_, - remoteComm_, - numQuantities, - quantityIDs, - 1, - &meshID_) == 0) - ("CCI_Def_comm() failed\n"); + error = CCI_Def_comm(localComm_, + remoteCodeID_, + remoteComm_, + numQuantities, + quantityIDs, + 1, + &meshID_); + + TEST_EXIT(error)("CCI_Def_comm() failed\n"); } - TEST_EXIT(CCI_Def_partition(meshID_, partitionID_) == 0) - ("CCI_Def_partition() failed\n"); + error = CCI_Def_partition(meshID_, partitionID_); + + TEST_EXIT(error == 0)("CCI_Def_partition() failed\n"); transferMeshToMpCCI(); - //if(useMPI_) MPI::COMM_WORLD.Barrier(); + for (i = 0; i < numSyncPoints; i++) { + error = CCI_Sync_point_info(syncPointIDs[i], + CCI_MAX_NQUANTITIES, + sendQuantities, + sendMeshes, + &sendNQuantities, + CCI_MAX_NQUANTITIES, + recvQuantities, + recvMeshes, + &recvNQuantities); - //if(mpiRank_ == 0) { - // get sync points from input file - for(i = 0; i < numSyncPoints; i++) { - TEST_EXIT(CCI_Sync_point_info(syncPointIDs[i], - CCI_MAX_NQUANTITIES, - sendQuantities, - sendMeshes, - &sendNQuantities, - CCI_MAX_NQUANTITIES, - recvQuantities, - recvMeshes, - &recvNQuantities) == 0) - ("CCI_Sync_point_info() failed\n"); + TEST_EXIT(error == 0)("CCI_Sync_point_info() failed\n"); MSG("sync point id: %d\n", syncPointIDs[i]); int j; @@ -134,18 +138,18 @@ namespace AMDiS MSG("recv quantity: %d\n", recvQuantities[j]); } - TEST_EXIT(CCI_Def_sync_point(syncPointIDs[i], - sendNQuantities, - sendQuantities, - sendNQuantities, - sendMeshes, - recvNQuantities, - recvQuantities, - recvNQuantities, - recvMeshes) == 0) - ("CCI_Def_sync_point() failed\n"); + error = CCI_Def_sync_point(syncPointIDs[i], + sendNQuantities, + sendQuantities, + sendNQuantities, + sendMeshes, + recvNQuantities, + recvQuantities, + recvNQuantities, + recvMeshes); + + TEST_EXIT(error == 0)("CCI_Def_sync_point() failed\n"); } - //} // define quantities DOFVector<double> **ptr = dofVectors; @@ -155,19 +159,17 @@ namespace AMDiS ptr += dim; } - //if(useMPI_) MPI::COMM_WORLD.Barrier(); - // close MpCCI setup - TEST_EXIT(CCI_Close_setup(localCodeID_) == 0)("CCI_Close_setup() failed\n"); + int error = CCI_Close_setup(localCodeID_); + + TEST_EXIT(error == 0)("CCI_Close_setup() failed\n"); } MpCCIAdapter::~MpCCIAdapter() { DELETE smiAdapter_; - //if(useMPI_) MPI::COMM_WORLD.Barrier(); - //if(mpiRank_ == 0) { - TEST_EXIT(CCI_Finalize() == 0)("CCI_Finalize() failed\n"); - //} + int error == CCI_Finalize(); + TEST_EXIT(error == 0)("CCI_Finalize() failed\n"); } void MpCCIAdapter::transferMeshToMpCCI() @@ -246,28 +248,7 @@ namespace AMDiS error = SMI_End_read_transaction(applicationID_, meshID_); TEST_EXIT(error == SMI_OK)("SMI_End_read_transaction() failed\n"); -#if 0 - // copy double to float - float *floatCoords = GET_MEMORY(float, numNodes * dow); - - for(i = 0; i < numNodes * dow; i++) { - floatCoords[i] = static_cast<float>(coords[i]); - } - - // transfer data to MpCCI - error = CCI_Def_nodes(meshID_, - partitionID_, - dow, - numNodes, - numNodes, - nodeIDs, - CCI_FLOAT, - floatCoords); - TEST_EXIT(error == 0)("CCI_Def_nodes() failed\n"); - - FREE_MEMORY(floatCoords, float, numNodes * dow); -#endif - + // transfer data to MpCCI error = CCI_Def_nodes(meshID_, partitionID_, @@ -496,31 +477,31 @@ namespace AMDiS void MpCCIAdapter::send(int numQuantities, int *quantityIDs) { - TEST_EXIT(CCI_Send(numQuantities, - quantityIDs, - 1, - &meshID_, - localComm_) == 0) - ("CCI_Send() failed\n"); + int error = CCI_Send(numQuantities, + quantityIDs, + 1, + &meshID_, + localComm_); + TEST_EXIT(error == 0)("CCI_Send() failed\n"); } void MpCCIAdapter::isend(int numQuantities, int *quantityIDs, CCI_Request *request) { - TEST_EXIT(CCI_Isend(numQuantities, - quantityIDs, - 1, - &meshID_, - localComm_, - request) == 0) - ("CCI_Isend() failed\n"); + int error = CCI_Isend(numQuantities, + quantityIDs, + 1, + &meshID_, + localComm_, + request); + TEST_EXIT(error == 0)("CCI_Isend() failed\n"); } void MpCCIAdapter::wait(CCI_Request *request) { CCI_Status status; - TEST_EXIT(CCI_Wait(request, - &status) == 0) - ("CCI_Wait() failed\n"); + int error = CCI_Wait(request, + &status); + TEST_EXIT(error == 0)("CCI_Wait() failed\n"); } void MpCCIAdapter::recv(int numQuantities, int *quantityIDs) @@ -533,29 +514,25 @@ namespace AMDiS for(i = 0; i < numQuantities; i++) { MSG("quantity %d: %d\n", i, quantityIDs[i]); } - TEST_EXIT(CCI_Recv(numQuantities, - quantityIDs, - 1, - &meshID_, - localComm_, - &status) == 0) - ("CCI_Send() failed\n"); + int error = CCI_Recv(numQuantities, + quantityIDs, + 1, + &meshID_, + localComm_, + &status); + TEST_EXIT(error == 0)("CCI_Send() failed\n"); } void MpCCIAdapter::reachSyncPoint(int syncPointID) { - //if(useMPI_) MPI::COMM_WORLD.Barrier(); - //if(mpiRank_ == 0) { CCI_Status status; - TEST_EXIT(CCI_Reach_sync_point(syncPointID, &status) == 0) - ("CCI_Reach_sync_point() failed\n"); - //} + int error = CCI_Reach_sync_point(syncPointID, &status); + TEST_EXIT(error == 0)("CCI_Reach_sync_point() failed\n"); } void MpCCIAdapter::closeCouplingStep() { - int error; - error = CCI_Close_coupling_step(1, 0, 0, 0, 0, 0, 0); + int error = CCI_Close_coupling_step(1, 0, 0, 0, 0, 0, 0); TEST_EXIT(error == 0)("CCI_Close_coupling_step() failed\n"); } diff --git a/AMDiS/src/MultiGridSolver.cc b/AMDiS/src/MultiGridSolver.cc index 5787882e9b07207e71a9483b500f023ce7a36275..cadde4400c8cc0bf76ef381154d070ddd479826f 100644 --- a/AMDiS/src/MultiGridSolver.cc +++ b/AMDiS/src/MultiGridSolver.cc @@ -119,7 +119,8 @@ namespace AMDiS { } } - TEST_EXIT(mesh->queryCoarseDOFs())("preserve coarse dofs not set in mesh\n"); + int error = mesh->queryCoarseDOFs(); + TEST_EXIT(error)("preserve coarse dofs not set in mesh\n"); const BasisFunction *basFcts = feSpace->getBasisFcts(); int numDOFs = basFcts->getNumber(); @@ -917,9 +918,8 @@ namespace AMDiS { Mesh *mesh = feSpaces[0]->getMesh(); int dim = mesh->getDim(); - TEST_EXIT(mesh->queryCoarseDOFs()) - ("preserve coarse dofs not set in mesh\n"); - + int error = mesh->queryCoarseDOFs(); + TEST_EXIT(error)("preserve coarse dofs not set in mesh\n"); // Check which level is a multigrid level and set the corresponding field // to true. diff --git a/AMDiS/src/Parameters.h b/AMDiS/src/Parameters.h index 00612d0367e4677e5042ee44094975654ead2ace..7b71720e1f8815560fb21ce200a1d71779a02ecb 100644 --- a/AMDiS/src/Parameters.h +++ b/AMDiS/src/Parameters.h @@ -226,9 +226,13 @@ namespace AMDiS { /** \brief * Checks whether parameters are initialized. if not, call init() */ - static bool initialized() { return (singlett != NULL); }; + static bool initialized() { + return (singlett != NULL); + }; - static Parameters *getSingleton() { return singlett; }; + static Parameters *getSingleton() { + return singlett; + }; // ===== Serializable implementation ===== diff --git a/AMDiS/src/PeriodicBC.cc b/AMDiS/src/PeriodicBC.cc index 373d66f7e94801f0584d4c8fb1c74f26120a56bd..35325323c30dce5c3961ad7fd2b8582f5628f10b 100644 --- a/AMDiS/src/PeriodicBC.cc +++ b/AMDiS/src/PeriodicBC.cc @@ -62,10 +62,10 @@ namespace AMDiS { int sum = 0; for (int i = 0; i < dim + 1; i++) { sum += i - vertexPermutation[i]; - TEST_EXIT(vertexPermutation[i] < dim + 1) + TEST_EXIT_DBG(vertexPermutation[i] < dim + 1) ("invalid vertexPermuation\n"); } - TEST_EXIT(sum == 0)("invalid vertexPermutation\n"); + TEST_EXIT_DBG(sum == 0)("invalid vertexPermutation\n"); // create dof permutation DimVec<double> *lambda; @@ -114,8 +114,8 @@ namespace AMDiS { associated_ = mesh->getPeriodicAssociations()[boundaryType]; - TEST_EXIT(associated_)("no associations for periodic boundary condition %d\n", - boundaryType); + TEST_EXIT_DBG(associated_)("no associations for periodic boundary condition %d\n", + boundaryType); const BasisFunction *basFcts = rowFESpace->getBasisFcts(); int num = basFcts->getNumber(); @@ -206,7 +206,7 @@ namespace AMDiS { { FUNCNAME("PeriodicBC::exitMatrix()"); - TEST_EXIT(matrix)("no matrix\n"); + TEST_EXIT_DBG(matrix)("no matrix\n"); if (matrix == masterMatrix_) { const BasisFunction *basFcts = rowFESpace->getBasisFcts(); @@ -214,83 +214,6 @@ namespace AMDiS { FREE_MEMORY(neighIndices_, DegreeOfFreedom, num); masterMatrix_ = NULL; } - // ---------- different assemblage style -------- - - // DOFMatrix::Iterator matrixRow(matrix, USED_DOFS); - // for(matrixRow.reset(); !matrixRow.end(); ++matrixRow) { - // row = matrixRow.getDOFIndex(); - - // rowSize = matrixRow->size(); - // newRow = ((*associated_)[row] == -1) ? row : (*associated_)[row]; - - // if(row < newRow) { - // for(i = 0; i < rowSize; i++) { - // col = (*matrixRow)[i].col; - // if(col == DOFMatrix::NO_MORE_ENTRIES) break; - // if(col == DOFMatrix::UNUSED_ENTRY) continue; - // newCol = ((*associated_)[col] == -1) ? col : (*associated_)[col]; - // if(col < newCol) { - // entry = (*matrixRow)[i].entry; - // (*matrixRow)[i].col = DOFMatrix::UNUSED_ENTRY; - // (*matrixRow)[i].entry = 0.0; - // matrix->addSparseDOFEntry(1.0, row, newCol, entry, true); - // } - // } - // rowSize = matrixRow->size(); - // for(i = 0; i < rowSize; i++) { - // col = (*matrixRow)[i].col; - // if(col == DOFMatrix::NO_MORE_ENTRIES) break; - // if(col == DOFMatrix::UNUSED_ENTRY) continue; - // entry = (*matrixRow)[i].entry; - // matrix->addSparseDOFEntry(1.0, newRow, col, entry, true); - // } - // matrixRow->resize(2); - // (*matrixRow)[0].col = row; - // (*matrixRow)[0].entry = 100.0;1.0; - // (*matrixRow)[1].col = newRow; - // (*matrixRow)[1].entry = -100.0;-1.0; - // } - // } - - - // --- method 2 --- - - // for(matrixRow.reset(); !matrixRow.end(); ++matrixRow) { - // row = matrixRow.getDOFIndex(); - // newRow = ((*associated_)[row] == -1) ? row : (*associated_)[row]; - // if(row < newRow) { - // // remember old row matrix[row] - // ::std::vector<MatEntry> oldMatrixRow = *matrixRow; - // // add new row to old row - // ::std::vector<MatEntry> &newMatrixRow = matrix->getRow(newRow); - // rowSize = newMatrixRow.size(); - // for(i = 0; i < rowSize; i++) { - // col = newMatrixRow[i].col; - // if(col == DOFMatrix::NO_MORE_ENTRIES) break; - // if(col == DOFMatrix::UNUSED_ENTRY) continue; - // newCol = ((*associated_)[col] == -1) ? col : (*associated_)[col]; - // entry = newMatrixRow[i].entry; - // matrix->addSparseDOFEntry(1.0, row, newCol, entry, true); - // } - // // add old row to new row - // rowSize = oldMatrixRow.size(); - // for(i = 0; i < rowSize; i++) { - // col = oldMatrixRow[i].col; - // if(col == DOFMatrix::NO_MORE_ENTRIES) break; - // if(col == DOFMatrix::UNUSED_ENTRY) continue; - // newCol = ((*associated_)[col] == -1) ? col : (*associated_)[col]; - // entry = oldMatrixRow[i].entry; - // matrix->addSparseDOFEntry(1.0, newRow, newCol, entry, true); - // } - // } - // } - - - // DOFVector<DegreeOfFreedom>::Iterator rowIt(associated_, USED_DOFS); - // DOFVector<DegreeOfFreedom>::Iterator colIt(associated_, USED_DOFS); - - - // Mesh *mesh = matrix->getRowFESpace()->getMesh(); ::std::vector< ::std::vector<MatEntry> >::iterator rowIt; ::std::vector< ::std::vector<MatEntry> >::iterator rowEnd = matrix->end(); @@ -346,16 +269,6 @@ namespace AMDiS { newDOF = (*associated_)[dof]; if (dof < newDOF) { - // ---------- different assemblage style -------- - // (*vector)[newDOF] += (*vector)[dof]; - // (*vector)[dof] = 0.0; - - - // --- method 2 ---- - // //entry = (*vector)[dof]; - // (*vector)[dof] += (*vector)[newDOF]; - // (*vector)[newDOF] = (*vector)[dof]; - entry = ((*vector)[dof] + (*vector)[newDOF]) * 0.5; (*vector)[dof] = entry; (*vector)[newDOF] = entry; diff --git a/AMDiS/src/ProblemInstat.h b/AMDiS/src/ProblemInstat.h index 799aef40cd18c9d35fd85b91797e7eadc7042e0a..9d153b323fbbedbaff052181da334344742d9c86 100644 --- a/AMDiS/src/ProblemInstat.h +++ b/AMDiS/src/ProblemInstat.h @@ -161,9 +161,7 @@ namespace AMDiS { * Used in \ref initialize(). */ virtual void createUhOld(); - - - + /** \brief * Implementation of ProblemTimeInterface::initTimestep(). */ @@ -177,12 +175,16 @@ namespace AMDiS { /** \brief * Returns \ref problemStat. */ - inline ProblemScal* getStatProblem() { return problemStat; }; + inline ProblemScal* getStatProblem() { + return problemStat; + }; /** \brief * Returns \ref oldSolution. */ - inline DOFVector<double> *getOldSolution() { return oldSolution; }; + inline DOFVector<double> *getOldSolution() { + return oldSolution; + }; /** \brief * Used by \ref problemInitial @@ -261,12 +263,16 @@ namespace AMDiS { /** \brief * Returns \ref problemStat. */ - inline ProblemVec* getStatProblem() { return problemStat; }; + inline ProblemVec* getStatProblem() { + return problemStat; + }; /** \brief * Returns \ref oldSolution. */ - inline SystemVector *getOldSolution() { return oldSolution; }; + inline SystemVector *getOldSolution() { + return oldSolution; + }; /** \brief * Used by \ref problemInitial diff --git a/AMDiS/src/ProblemVec.h b/AMDiS/src/ProblemVec.h index ad765bdeeed329a03d88e5e8a90de60de88919fa..bbfbf6d1aae6236476096113f9bfba6229ef9854 100644 --- a/AMDiS/src/ProblemVec.h +++ b/AMDiS/src/ProblemVec.h @@ -337,6 +337,13 @@ namespace AMDiS { return feSpaces_; }; + /** \brief + * Returns \ref componentSpaces_; + */ + inline ::std::vector<FiniteElemSpace*> getComponentFESpaces() { + return componentSpaces_; + } + /** \brief * Returns \ref estimator_. */ diff --git a/AMDiS/src/QPInfo.cc b/AMDiS/src/QPInfo.cc index fe4171bdb959dd1dd5fbf42f5f975ecc491940d5..16016bad560d1b6603ad2900eb2cd1b12387f1e5 100644 --- a/AMDiS/src/QPInfo.cc +++ b/AMDiS/src/QPInfo.cc @@ -100,7 +100,7 @@ namespace AMDiS { int i; for(i = 0; i < numPoints; i++) { const DimVec<double>& lambda = quadrature_->getLambda(i); - TEST_EXIT(currentElInfo_)("currentElInfo_ not set\n"); + TEST_EXIT_DBG(currentElInfo_)("currentElInfo_ not set\n"); currentElInfo_->coordToWorld(lambda, &coordsAtQPs_[i]); } coordsNumPointsValid_ = numPoints; @@ -114,7 +114,7 @@ namespace AMDiS { { // check fast quadrature if(quadFast) { - TEST_EXIT(quadrature_ == quadFast->getQuadrature()) + TEST_EXIT_DBG(quadrature_ == quadFast->getQuadrature()) ("quadrature_ != quadFast->quadrature\n"); } @@ -153,7 +153,7 @@ namespace AMDiS { { // check fast quadrature if(quadFast) { - TEST_EXIT(quadrature_ == quadFast->getQuadrature()) + TEST_EXIT_DBG(quadrature_ == quadFast->getQuadrature()) ("quadrature_ != quadFast->quadrature\n"); } @@ -192,7 +192,7 @@ namespace AMDiS { { // check fast quadrature if(quadFast) { - TEST_EXIT(quadrature_ == quadFast->getQuadrature()) + TEST_EXIT_DBG(quadrature_ == quadFast->getQuadrature()) ("quadrature_ != quadFast->quadrature\n"); } @@ -227,7 +227,7 @@ namespace AMDiS { WorldVector<double> **QPInfo::getElementNormalAtQPs(int numPoints) { - TEST_EXIT(currentElInfo_)("currentElInfo_ not set\n"); + TEST_EXIT_DBG(currentElInfo_)("currentElInfo_ not set\n"); int i; if(currentElInfo_->getParametricOrder() > 1) { @@ -264,7 +264,7 @@ namespace AMDiS { DimVec<WorldVector<double> > **QPInfo::getGrdLambdaAtQPs(int numPoints) { - TEST_EXIT(currentElInfo_)("currentElInfo_ not set\n"); + TEST_EXIT_DBG(currentElInfo_)("currentElInfo_ not set\n"); int i; if(currentElInfo_->getParametricOrder() > 1) { @@ -331,7 +331,7 @@ namespace AMDiS { quad = quadFast->getQuadrature(); } } - TEST_EXIT(quad)("no quadrature\n"); + TEST_EXIT_DBG(quad)("no quadrature\n"); if(qpInfos_[quad]) { DELETE qpInfos_[quad]; qpInfos_.erase(quad); diff --git a/AMDiS/src/QPsiPhi.cc b/AMDiS/src/QPsiPhi.cc index 0951d1de5530e0378403f62190eec1ecf61b6089..800de1f96d013cf1d30bc9db5a1133068ca718e0 100644 --- a/AMDiS/src/QPsiPhi.cc +++ b/AMDiS/src/QPsiPhi.cc @@ -109,23 +109,23 @@ namespace AMDiS { // and now, fill information * //*************************************************************************** - for(i = 0; i < n_psi; i++) { - for(j = 0; j < n_phi; j++) { + for (i = 0; i < n_psi; i++) { + for (j = 0; j < n_phi; j++) { values[i][j] = val_vec; k[i][j] = k_vec; l[i][j] = l_vec; - for(n = lk = 0; lk < d+1; lk++) { - for(ll = 0; ll < d+1; ll++) { - for(val = iq = 0; iq < numPoints; iq++) { + for (n = lk = 0; lk < d+1; lk++) { + for (ll = 0; ll < d+1; ll++) { + for (val = iq = 0; iq < numPoints; iq++) { grdi = q_psi->getGradient(iq,i,lk); grdj = q_phi->getGradient(iq,j,ll); val += quadrature->getWeight(iq)*grdi*grdj; } if (abs(val) > TOO_SMALL) { - TEST_EXIT(all_entries-- > 0) - ("now more entries found than counted before\n"); + TEST_EXIT_DBG(all_entries > 0)("now more entries found than counted before\n"); + all_entries--; n++; *val_vec = val; val_vec++; @@ -294,8 +294,8 @@ namespace AMDiS { val += quadrature->getWeight(iq)*psij*grdi; } if (abs(val) > TOO_SMALL) { - TEST_EXIT(all_entries-- > 0) - ("now more entries found than counted before\n"); + TEST_EXIT_DBG(all_entries > 0)("now more entries found than counted before\n"); + all_entries--; n++; *val_vec++ = val; *k_vec++ = lk; @@ -455,8 +455,8 @@ namespace AMDiS { val += quadrature->getWeight(iq)*grdj*psii; } if (abs(val) > TOO_SMALL) { - TEST_EXIT(all_entries-- > 0) - ("now more entries found than counted before\n"); + TEST_EXIT_DBG(all_entries > 0)("now more entries found than counted before\n"); + all_entries--; n++; *val_vec++ = val; *l_vec++ = ll; @@ -787,8 +787,8 @@ namespace AMDiS { val += quadrature->getWeight(iq)*grdi; } if (abs(val) > TOO_SMALL) { - TEST_EXIT(all_entries-- > 0) - ("now more entries found than counted before\n"); + TEST_EXIT_DBG(all_entries > 0)("now more entries found than counted before\n"); + all_entries--; n++; *val_vec = val; val_vec++; diff --git a/AMDiS/src/Quadrature.h b/AMDiS/src/Quadrature.h index 32c17f62879bacb728fedd4b0b984d226d153759..06ba66ddaa44f0193a03f5bce1f4d5095bf1e56d 100644 --- a/AMDiS/src/Quadrature.h +++ b/AMDiS/src/Quadrature.h @@ -410,15 +410,15 @@ namespace AMDiS { void init(Flag init_flag); inline bool initialized(Flag flag) { - if(flag == INIT_PHI) { + if (flag == INIT_PHI) { return (phi != NULL); } - if(flag == INIT_GRD_PHI) { + if (flag == INIT_GRD_PHI) { return (grdPhi != NULL); } - if(flag == INIT_D2_PHI) { + if (flag == INIT_D2_PHI) { return (D2Phi != NULL); } @@ -429,12 +429,16 @@ namespace AMDiS { /** \brief * Returns \ref quadrature */ - inline const Quadrature* getQuadrature() const { return quadrature; }; + inline const Quadrature* getQuadrature() const { + return quadrature; + }; /** \brief * Returns \ref max_points */ - inline int getMaxQuadPoints() { return max_points; }; + inline int getMaxQuadPoints() { + return max_points; + }; /** \brief * Returns (*\ref D2Phi)[q][i][j][m] @@ -531,44 +535,9 @@ namespace AMDiS { /** \brief * Returns \ref basisFunctions */ - inline BasisFunction* getBasisFunctions() const { return basisFunctions; }; - - /** \brief - * The function returns a pointer ptr to a vector of length - * \ref quadrature->n_points storing the values of \f$ u_h \f$ at all - * quadrature points of \ref quadrature, i.e. - * \f[ ptr[l] = u_h(quadrature->lambda[l]) \f] where - * l = 0, . . . , quadrature->n_points - 1; the \ref INIT_PHI flag must - * be set in \ref init_flag; vec is an optional memory pointer - */ - // const double *uhAtQp(const double *uh_loc, double *vec) const; - - /** \brief - * The function returns a pointer ptr to a vector of length - * quadrature->n_points WorldVectors storing \f$ \nabla u_h \f$ at all - * quadrature points of \ref quadrature, i.e. - * \f[ ptr[l][i] = u_{h,xi}(quadrature->lambda[l]) \f] - * where l = 0, ... , quadrature->n_points - 1, and i = 0, ... , - * DIM_OF_WORLD - 1; the \ref INIT_GRD_PHI flag must be set in - * \ref init flag; vec is an optional memory pointer - */ - // const WorldVector<double> *grdUhAtQp(const DimVec<WorldVector<double> >& Lambda, - // const double *uh_loc, - // WorldVector<double> *vec) const; - - - /** \brief - * The function returns a pointer ptr to a vector of length - * quadrarure->n_points of WorldMatrices storing D2uh at all quadrature - * points of \ref quadrature, i.e. - * \f[ ptr[l][i][j] = u_{h,x_ix_j}(quadrature->lambda[l]) \f] - * where l = 0, ... , quadrature->n_points - 1, and i, j = 0, ... , - * DIM_OF_WORLD - 1; the \ref INIT_D2_PHI flag must be set in - * \ref init flag; vec is an optional memory pointer - */ - // const WorldMatrix<double> *D2UhAtQp(const DimVec<WorldVector<double> >& Lambda, - // const double *uh_loc, - // WorldMatrix<double> *vec) const; + inline BasisFunction* getBasisFunctions() const { + return basisFunctions; + }; protected: /** \brief diff --git a/AMDiS/src/Recovery.cc b/AMDiS/src/Recovery.cc index 6c23ea09fbf17812f864427722744937237e92c3..e65cc77f1257c5078618c34d8c8ea3dcbd1940aa 100644 --- a/AMDiS/src/Recovery.cc +++ b/AMDiS/src/Recovery.cc @@ -237,7 +237,7 @@ int Recovery::set_exponents(int degree) ERROR_EXIT("Which dimension have your world???\n"); } - TEST_EXIT(count==n_monomials)("There must be an error!\n"); + TEST_EXIT_DBG(count == n_monomials)("There must be an error!\n"); // Setting matrix of monomials. WorldVector<int> sum; @@ -261,7 +261,7 @@ void Recovery::compute_integrals(DOFVector<double> *uh, ElInfo *elInfo, { FUNCNAME("Recovery::compute_integrals"); - TEST_EXIT(!(f_vec && f_scal))("Only one diffusion function, please!\n"); + TEST_EXIT_DBG(!(f_vec && f_scal))("Only one diffusion function, please!\n"); int i, j, k; double sum; @@ -367,9 +367,9 @@ void Recovery::compute_interior_sums(DOFVector<double> *uh, ElInfo *elInfo, { FUNCNAME("Recovery::compute_sums"); - TEST_EXIT(gradient)("SPR of solution need computing node sums.\n"); + TEST_EXIT_DBG(gradient)("SPR of solution need computing node sums.\n"); - TEST_EXIT(!(f_vec && f_scal))("Only one diffusion function, please!\n"); + TEST_EXIT_DBG(!(f_vec && f_scal))("Only one diffusion function, please!\n"); int i, j, k; double sum; @@ -434,10 +434,10 @@ void Recovery::compute_node_sums(DOFVector<double> *uh, ElInfo *elInfo, { FUNCNAME("Recovery::compute_sums"); - TEST_EXIT(!gradient) + TEST_EXIT_DBG(!gradient) ("SPR of flux or gradient need computing interior sums\n"); - TEST_EXIT(feSpace->getMesh()->getDim()==1) + TEST_EXIT_DBG(feSpace->getMesh()->getDim()==1) ("At the moment only for linear finite elements.\n"); int i, j, l; @@ -477,7 +477,7 @@ void Recovery::compute_sums_linear(DOFVector<double> *uh, ElInfo *elInfo, { FUNCNAME("Recovery::compute_sums_linear"); - TEST_EXIT(!gradient) + TEST_EXIT_DBG(!gradient) ("SPR of flux or gradient need computing interior sums\n"); int i, j, l; @@ -606,7 +606,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, interior_vertices[n_neighbors++] = k; } - TEST_EXIT(n_neighbors) + TEST_EXIT_DBG(n_neighbors) ("Each element should have a least one interior vertex!\n"); for (i=0; i<n_vertices; i++) // Handling nodes on vertices. @@ -918,10 +918,13 @@ Recovery::recovery(DOFVector<double> *uh, const FiniteElemSpace *fe_space, // Solving local systems. for (SV_it.reset(); !SV_it.end(); ++SV_it) { - if ((*SV_it).A) - TEST_EXIT(Cholesky::solve((*SV_it).A, (*SV_it).rec_grdUh, - (*SV_it).rec_grdUh)) + if ((*SV_it).A) { + int error = Cholesky::solve((*SV_it).A, + (*SV_it).rec_grdUh, + (*SV_it).rec_grdUh); + TEST_EXIT_DBG(error) ("There must be some error, matrix is not positive definite.\n"); + } } // define result vector @@ -974,7 +977,7 @@ Recovery::recovery(DOFVector<double> *uh, { FUNCNAME("Recovery::simpleAveraging"); - TEST_EXIT(!(f_vec && f_scal))("Only one diffusion function, please!\n"); + TEST_EXIT_DBG(!(f_vec && f_scal))("Only one diffusion function, please!\n"); const FiniteElemSpace *fe_space = uh->getFESpace(); diff --git a/AMDiS/src/RefinementManager2d.cc b/AMDiS/src/RefinementManager2d.cc index b42e95325e1df018c6d74f470c01eb8710c72aa0..a4223e9cc0e8040521e9159f48120d173a082298 100644 --- a/AMDiS/src/RefinementManager2d.cc +++ b/AMDiS/src/RefinementManager2d.cc @@ -82,7 +82,7 @@ namespace AMDiS { &n_neigh, &n_neigh_periodic); - TEST_EXIT(periodicList)("periodicList = NULL\n"); + TEST_EXIT_DBG(periodicList)("periodicList = NULL\n"); newDOF = refinePatch(edge, periodicList, n_neigh_periodic, bound); @@ -338,7 +338,7 @@ namespace AMDiS { DegreeOfFreedom* newDOFs[3]) { FUNCNAME("RefinementManager2d::bisectTriangle()"); - TEST_EXIT(mesh)("no mesh!\n"); + TEST_EXIT_DBG(mesh)("no mesh!\n"); Triangle *child[2]; @@ -445,11 +445,11 @@ namespace AMDiS { /* now go back to the original element and refine the patch */ /****************************************************************************/ *el_info = neigh_info = stack->traverseNeighbour2d(neigh_info, opp_vertex); - TEST_EXIT(neigh_info->getElement() == el)("invalid traverse_neighbour1\n"); + TEST_EXIT_DBG(neigh_info->getElement() == el)("invalid traverse_neighbour1\n"); } if (refineList->setElement(1, (*el_info)->getNeighbour(2))) { - TEST_EXIT((*el_info)->getOppVertex(2) == 2) + TEST_EXIT_DBG((*el_info)->getOppVertex(2) == 2) ("no compatible ref. edge after recursive refinement of neighbour\n"); *n_neigh = 2; } diff --git a/AMDiS/src/RefinementManager3d.cc b/AMDiS/src/RefinementManager3d.cc index 17a1f2850071d1a559bd6259dcd3a8327d004bbf..57c0aadd277fd49fd29b60a57a842b547bec2e21 100644 --- a/AMDiS/src/RefinementManager3d.cc +++ b/AMDiS/src/RefinementManager3d.cc @@ -231,7 +231,7 @@ namespace AMDiS { node1 = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[n_type][j][opp_v-2]; - TEST_EXIT(neigh->getChild(j)->getDOF(node1)) + TEST_EXIT_DBG(neigh->getChild(j)->getDOF(node1)) ("no dof on neighbour %d at node %d\n", neigh->getChild(j)->getIndex(), node1); @@ -243,7 +243,7 @@ namespace AMDiS { node0 = mesh->getNode(FACE) + i_neigh; node1 = mesh->getNode(FACE) + j_neigh; - TEST_EXIT(neigh->getChild(j)->getDOF(node1)) + TEST_EXIT_DBG(neigh->getChild(j)->getDOF(node1)) ("no dof on neighbour %d at node %d\n", neigh->getChild(j)->getIndex(), node1); @@ -462,7 +462,7 @@ namespace AMDiS { for (k = 0; k < vertices; k++) if (mesh->indirectlyAssociated(neigh->getDOF(k, 0), edge[1][0])) break; - TEST_EXIT(j < vertices && k < vertices) + TEST_EXIT_DBG(j < vertices && k < vertices) ("dof %d or dof %d not found on element %d with nodes (%d %d %d %d)\n", edge[0][0], edge[1][0], neigh->getIndex(), neigh->getDOF(0,0), neigh->getDOF(1,0), neigh->getDOF(2,0), neigh->getDOF(3,0)); @@ -488,7 +488,7 @@ namespace AMDiS { // for (k = 0; k < vertices; k++) // if (neigh->getDOF(k, 0) == (*associated)[edge[1][0]]) break; - // TEST_EXIT(j < vertices && k < vertices) + // TEST_EXIT_DBG(j < vertices && k < vertices) // ("dof %d or dof %d not found on element %d with nodes (%d %d %d %d)\n", // edge[0][0], edge[1][0], neigh->getIndex(), neigh->getDOF(0,0), // neigh->getDOF(1,0), neigh->getDOF(2,0), neigh->getDOF(3,0)); @@ -500,7 +500,7 @@ namespace AMDiS { // } // } - TEST_EXIT(j < mesh->getGeo(VERTEX) && + TEST_EXIT_DBG(j < mesh->getGeo(VERTEX) && k < mesh->getGeo(VERTEX)) ("dof %d or dof %d not found on element %d with nodes (%d %d %d %d)\n", edge[0][0], edge[1][0], neigh->getIndex(), neigh->getDOF(0,0), @@ -563,7 +563,7 @@ namespace AMDiS { /* neigh is compatible devisible; put neigh to the list of patch elements; */ /* go to next neighbour */ /****************************************************************************/ - TEST_EXIT(*n_neigh < mesh->getMaxEdgeNeigh()) + TEST_EXIT_DBG(*n_neigh < mesh->getMaxEdgeNeigh()) ("too many neighbours %d in refine patch\n", *n_neigh); @@ -609,7 +609,7 @@ namespace AMDiS { opp_v = refineList->getOppVertex(i, 0); do { - TEST_EXIT(neigh_info->getNeighbour(opp_v) && i > 0) + TEST_EXIT_DBG(neigh_info->getNeighbour(opp_v) && i > 0) ("while looping back domains boundary was reached or i == 0\n"); opp_v = refineList->getOppVertex(i--, 0); neigh_info = stack->traverseNeighbour3d(neigh_info, opp_v); @@ -699,7 +699,7 @@ namespace AMDiS { &n_neigh, &n_neigh_periodic); - TEST_EXIT(periodicList)("periodicList = NULL\n"); + TEST_EXIT_DBG(periodicList)("periodicList = NULL\n"); newDOF = refinePatch(edge, periodicList, n_neigh_periodic, bound); diff --git a/AMDiS/src/SparseVector.h b/AMDiS/src/SparseVector.h index 78a9d5c6a61cf592b59e221f4240b1658b94e0f4..f61c0f5326849b1a5d3fcfb406c8390390cce581 100644 --- a/AMDiS/src/SparseVector.h +++ b/AMDiS/src/SparseVector.h @@ -84,7 +84,7 @@ namespace AMDiS } } } else { - TEST_EXIT(clients_.empty())("delete clients first\n"); + TEST_EXIT_DBG(clients_.empty())("delete clients first\n"); delete logToPhys_; delete physToLog_; } diff --git a/AMDiS/src/SubQuadrature.h b/AMDiS/src/SubQuadrature.h index 5eefd01d252a3433b80b0fabf510fc187174d36c..f83389b341c9df3668e0599cd237d4bac83dc53a 100644 --- a/AMDiS/src/SubQuadrature.h +++ b/AMDiS/src/SubQuadrature.h @@ -57,24 +57,26 @@ namespace AMDiS { lambda = NEW VectorOfFixVecs<DimVec<double> >(dim, n_points, NO_INIT); } - TEST_EXIT(coords.getSize() == (subDim_ + 1)) + TEST_EXIT_DBG(coords.getSize() == (subDim_ + 1)) ("invalid number of scale coords or invalid quadrature dim\n"); - TEST_EXIT(coords.getSizeOfFixVec() == (dim + 1)) + TEST_EXIT_DBG(coords.getSizeOfFixVec() == (dim + 1)) ("invalid coord dimension\n"); - int i, j, k; - for(i=0; i < n_points; i++) { + + for (int i = 0; i < n_points; i++) { DimVec<double> origin = quad_->getLambda(i); - for(j=0; j < dim + 1; j++) + for (int j = 0; j < dim + 1; j++) (*lambda)[i][j] = 0.0; - for(j = 0; j < dim + 1; j++) { - for(k = 0; k < subDim_ + 1; k++) { + for (int j = 0; j < dim + 1; j++) { + for (int k = 0; k < subDim_ + 1; k++) { (*lambda)[i][j] += origin[k] * coords[k][j]; } } } }; - inline int getSubDim() { return subDim_; }; + inline int getSubDim() { + return subDim_; + }; protected: Quadrature *quad_; diff --git a/AMDiS/src/SystemVector.h b/AMDiS/src/SystemVector.h index 8c532cb3ac19220c05810ec58d4f5a3737f54382..4b0ab3e158fb7d4706255aabab961e4629e86c31 100644 --- a/AMDiS/src/SystemVector.h +++ b/AMDiS/src/SystemVector.h @@ -145,15 +145,15 @@ namespace AMDiS { * Sets \ref vectors[index] = vec. */ inline void setDOFVector(int index, DOFVector<double> *vec) { - TEST_EXIT(index < vectors.getSize())("invalid index\n"); + TEST_EXIT_DBG(index < vectors.getSize())("invalid index\n"); vectors[index] = vec; }; /** \brief * Returns \ref vectors[index]. */ - inline DOFVector<double> *getDOFVector(int index) { - TEST_EXIT(index < vectors.getSize())("invalid index\n"); + inline DOFVector<double> *getDOFVector(int index) { + TEST_EXIT_DBG(index < vectors.getSize())("invalid index\n"); return vectors[index]; }; @@ -161,7 +161,7 @@ namespace AMDiS { * Returns \ref vectors[index]. */ inline const DOFVector<double> *getDOFVector(int index) const { - TEST_EXIT(index < vectors.getSize())("invalid index\n"); + TEST_EXIT_DBG(index < vectors.getSize())("invalid index\n"); return vectors[index]; }; @@ -190,7 +190,9 @@ namespace AMDiS { /** \brief * Returns \ref feSpace. */ - inline FiniteElemSpace *getFESpace(int i) const { return feSpace[i]; }; + inline FiniteElemSpace *getFESpace(int i) const { + return feSpace[i]; + }; /** \brief * Here the system vector is interpreted as one large vector. The given @@ -248,8 +250,7 @@ namespace AMDiS { * Assignement operator. */ inline SystemVector& operator=(const SystemVector& rhs) { - TEST_EXIT(rhs.vectors.getSize() == vectors.getSize()) - ("invalied sizes\n"); + TEST_EXIT_DBG(rhs.vectors.getSize() == vectors.getSize())("invalied sizes\n"); int i, size = vectors.getSize(); for(i = 0; i < size; i++) { (*(vectors[i])) = (*(rhs.getDOFVector(i))); @@ -279,7 +280,7 @@ namespace AMDiS { void copy(const SystemVector& rhs) { int i, size = vectors.getSize(); - TEST_EXIT(size == rhs.getNumVectors())("invalid sizes\n"); + TEST_EXIT_DBG(size == rhs.getNumVectors())("invalid sizes\n"); for(i = 0; i < size; i++) { vectors[i]->copy(*(const_cast<SystemVector&>(rhs).getDOFVector(i))); } @@ -333,8 +334,8 @@ namespace AMDiS { * scalar product */ inline double operator*(SystemVector& x, SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) - ("invalid size\n"); + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) + ("invalid size\n"); double result = 0.0; int i, size = x.getNumVectors(); for(i = 0; i < size; i++) { @@ -349,8 +350,8 @@ namespace AMDiS { inline const SystemVector& operator+=(SystemVector& x, const SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) - ("invalid size\n"); + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) + ("invalid size\n"); int i, size = x.getNumVectors(); for(i = 0; i < size; i++) { (*(x.getDOFVector(i))) += (*(y.getDOFVector(i))); @@ -364,8 +365,8 @@ namespace AMDiS { inline const SystemVector& operator-=(SystemVector& x, SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) - ("invalid size\n"); + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) + ("invalid size\n"); int i, size = x.getNumVectors(); for(i = 0; i < size; i++) { (*(x.getDOFVector(i))) -= (*(y.getDOFVector(i))); @@ -403,7 +404,7 @@ namespace AMDiS { inline SystemVector operator+(const SystemVector& x, const SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) ("invalid size\n"); SystemVector result = x; int i, size = x.getNumVectors(); @@ -470,9 +471,9 @@ namespace AMDiS { { int size = x.getNumVectors(); - TEST_EXIT(size == result.getNumVectors())("incompatible sizes\n"); - TEST_EXIT(size == matrix.getNumRows())("incompatible sizes\n"); - TEST_EXIT(size == matrix.getNumCols())("incompatible sizes\n"); + TEST_EXIT_DBG(size == result.getNumVectors())("incompatible sizes\n"); + TEST_EXIT_DBG(size == matrix.getNumRows())("incompatible sizes\n"); + TEST_EXIT_DBG(size == matrix.getNumCols())("incompatible sizes\n"); for (int i = 0; i < size; i++) { if (!add) @@ -495,8 +496,8 @@ namespace AMDiS { */ inline void axpy(double a, SystemVector& x, SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) - ("invalid size\n"); + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) + ("invalid size\n"); int size = x.getNumVectors(); @@ -510,8 +511,8 @@ namespace AMDiS { */ inline void xpay(double a, SystemVector& x, SystemVector& y) { - TEST_EXIT(x.getNumVectors() == y.getNumVectors()) - ("invalid size\n"); + TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) + ("invalid size\n"); int size = x.getNumVectors(); for (int i = 0; i < size; i++) { diff --git a/AMDiS/src/Tetrahedron.cc b/AMDiS/src/Tetrahedron.cc index d8acb41de0e9179633f79e6b9dce4de7644a923f..4387884612cacdd03595a3f8007a435e99009a61 100644 --- a/AMDiS/src/Tetrahedron.cc +++ b/AMDiS/src/Tetrahedron.cc @@ -62,8 +62,8 @@ namespace AMDiS { bool Tetrahedron::hasSide(Element* sideElem) const { - FUNCNAME("Tetrahedron::hasSide"); - TEST_EXIT(sideElem->isTriangle())("called for sideElem-type != Triangle\n"); + FUNCNAME("Tetrahedron::hasSide()"); + TEST_EXIT_DBG(sideElem->isTriangle())("called for sideElem-type != Triangle\n"); ERROR_EXIT("not yet\n"); return false; } diff --git a/AMDiS/src/Tetrahedron.h b/AMDiS/src/Tetrahedron.h index 330a9a70735c41777a71ea473a8f98263222c696..c638717f668b5f39eae9ebcc158621263533b7dc 100644 --- a/AMDiS/src/Tetrahedron.h +++ b/AMDiS/src/Tetrahedron.h @@ -201,9 +201,9 @@ namespace AMDiS { */ virtual int getSideOfChild(int child, int side, int elType = 0) const { FUNCNAME("Tetrahedron::getSideOfChild()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 3)("side must be between 0 and 3\n"); - TEST_EXIT(elType >= 0 && elType <= 2)("elType must be between 0 and 2\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 3)("side must be between 0 and 3\n"); + TEST_EXIT_DBG(elType >= 0 && elType <= 2)("elType must be between 0 and 2\n"); return sideOfChild[elType][child][side]; }; @@ -212,15 +212,15 @@ namespace AMDiS { */ virtual int getVertexOfParent(int child, int side, int elType = 0) const { FUNCNAME("Tetrahedron::getVertexOfParent()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 3)("side must be between 0 and 3\n"); - TEST_EXIT(elType >= 0 && elType <= 2)("elType must be between 0 and 2\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 3)("side must be between 0 and 3\n"); + TEST_EXIT_DBG(elType >= 0 && elType <= 2)("elType must be between 0 and 2\n"); return vertexOfParent[elType][child][side]; }; inline int getEdgeOfFace(int face, int edge) const { - TEST_EXIT(face >= 0 && face < 4)("invalid face\n"); - TEST_EXIT(edge >= 0 && edge < 3)("invalid edge\n"); + TEST_EXIT_DBG(face >= 0 && face < 4)("invalid face\n"); + TEST_EXIT_DBG(edge >= 0 && edge < 3)("invalid edge\n"); return edgeOfFace[face][edge]; }; @@ -236,8 +236,14 @@ namespace AMDiS { */ static const int vertexOfFace[4][3]; + /** \brief + * + */ static const int sideOfChild[3][2][4]; - + + /** \brief + * + */ static const int vertexOfParent[3][2][4]; }; diff --git a/AMDiS/src/Traverse.cc b/AMDiS/src/Traverse.cc index 8a7ead5096955e28ec8ea082aafb2667b3e948f8..51786ff9e5fff95022d9ea2674069a1b11b87969 100644 --- a/AMDiS/src/Traverse.cc +++ b/AMDiS/src/Traverse.cc @@ -33,7 +33,7 @@ namespace AMDiS { elinfo_stack[1]->setMesh(mesh); if (fill_flag.isSet(Mesh::CALL_LEAF_EL_LEVEL)) { - TEST_EXIT(level >= 0)("invalid level: %d\n", level); + TEST_EXIT_DBG(level >= 0)("invalid level: %d\n", level); } traverse_mel = NULL; @@ -57,10 +57,10 @@ namespace AMDiS { if (parametric) elinfo_old = parametric->removeParametricInfo(elinfo_old); - TEST_EXIT(elinfo_old == elinfo_stack[stack_used])("invalid old elinfo\n"); + TEST_EXIT_DBG(elinfo_old == elinfo_stack[stack_used])("invalid old elinfo\n"); } else { - TEST_EXIT(elinfo_old == NULL)("invalid old elinfo != nil\n"); + TEST_EXIT_DBG(elinfo_old == NULL)("invalid old elinfo != nil\n"); } if (traverse_fill_flag.isSet(Mesh::CALL_LEAF_EL)) @@ -300,7 +300,7 @@ namespace AMDiS { // create new elinfos for(i=stack_size; i < new_stack_size; i++) { - TEST_EXIT(elinfo_stack[i]==NULL)("???\n"); + TEST_EXIT_DBG(elinfo_stack[i]==NULL)("???\n"); elinfo_stack[i] = traverse_mesh->createNewElInfo(); } @@ -313,7 +313,7 @@ namespace AMDiS { // create new elinfos for(i=stack_size; i < new_stack_size; i++) { - TEST_EXIT(save_elinfo_stack[i]==NULL)("???\n"); + TEST_EXIT_DBG(save_elinfo_stack[i]==NULL)("???\n"); save_elinfo_stack[i] = traverse_mesh->createNewElInfo(); } save_info_stack.resize(new_stack_size); @@ -383,7 +383,7 @@ namespace AMDiS { stack_used++; - TEST_EXIT(stack_used < stack_size) + TEST_EXIT_DBG(stack_used < stack_size) ("stack_size=%d too small, level=(%d,%d)\n", stack_size, elinfo_stack[stack_used]->getLevel()); @@ -465,7 +465,7 @@ namespace AMDiS { // elinfo_stack[stack_used + 1]->fillElInfo(i, elinfo_stack[stack_used]); // stack_used++; - // TEST_EXIT(stack_used < stack_size) + // TEST_EXIT_DBG(stack_used < stack_size) // ("stack_size=%d too small, level=%d\n", // stack_size, elinfo_stack[stack_used]->getLevel()); @@ -536,7 +536,7 @@ namespace AMDiS { elinfo_stack[stack_used + 1]->fillElInfo(i, elinfo_stack[stack_used]); stack_used++; - TEST_EXIT(stack_used < stack_size) + TEST_EXIT_DBG(stack_used < stack_size) ("stack_size=%d too small, level=%d\n", stack_size, elinfo_stack[stack_used]->getLevel()); @@ -606,7 +606,7 @@ namespace AMDiS { elinfo_stack[stack_used + 1]->fillElInfo(i, elinfo_stack[stack_used]); stack_used++; - TEST_EXIT(stack_used < stack_size) + TEST_EXIT_DBG(stack_used < stack_size) ("stack_size=%d too small, level=%d\n", stack_size, elinfo_stack[stack_used]->getLevel()); @@ -715,16 +715,16 @@ namespace AMDiS { {{-2,-2,-2,-2}, {-1,2,3,1}, {-1,2,3,0}}, {{-2,-2,-2,-2}, {-1,2,3,1}, {-1,2,3,0}}}; - TEST_EXIT(stack_used > 0)("no current element\n"); + TEST_EXIT_DBG(stack_used > 0)("no current element\n"); Parametric *parametric = traverse_mesh->getParametric(); if(parametric) elinfo_old = parametric->removeParametricInfo(elinfo_old); - TEST_EXIT(elinfo_old == elinfo_stack[stack_used]) + TEST_EXIT_DBG(elinfo_old == elinfo_stack[stack_used]) ("invalid old elinfo\n"); - TEST_EXIT(elinfo_stack[stack_used]->getFillFlag().isSet(Mesh::FILL_NEIGH)) + TEST_EXIT_DBG(elinfo_stack[stack_used]->getFillFlag().isSet(Mesh::FILL_NEIGH)) ("FILL_NEIGH not set"); el = elinfo_stack[stack_used]->getElement(); sav_index = el->getIndex(); @@ -756,7 +756,7 @@ namespace AMDiS { typ = dynamic_cast<ElInfo3d*>( elinfo_stack[stack_used])->getType(); nb = coarse_nb[typ][info_stack[stack_used]][nb]; if (nb == -1) break; - TEST_EXIT(nb >= 0)("invalid coarse_nb %d\n",nb); + TEST_EXIT_DBG(nb >= 0)("invalid coarse_nb %d\n",nb); } /* save hierarchy information about current element */ @@ -827,7 +827,7 @@ namespace AMDiS { } if (save_stack_used > stack2_used) { /* `refine' both el and el2 */ - TEST_EXIT(el->getChild(0))("invalid NEW refinement?\n"); + TEST_EXIT_DBG(el->getChild(0))("invalid NEW refinement?\n"); if (el->getDOF(0) == el2->getDOF(0)) i = save_info_stack[stack2_used] - 1; @@ -903,7 +903,7 @@ namespace AMDiS { MSG(" got element %d at %p with opp_vertex %d neigh %d\n", elinfo->getElement()->getIndex(), reinterpret_cast<void*>( elinfo->getElement()), opp_vertex, (elinfo->getNeighbour(opp_vertex))?(elinfo->getNeighbour(opp_vertex))->getIndex():-1); - TEST_EXIT(elinfo->getNeighbour(opp_vertex) == old_elinfo->getElement()) + TEST_EXIT_DBG(elinfo->getNeighbour(opp_vertex) == old_elinfo->getElement()) ("didn't succeed !?!?!?\n"); } @@ -932,15 +932,15 @@ namespace AMDiS { int sav_index, sav_neighbour = neighbour; - TEST_EXIT(stack_used > 0)("no current element"); - TEST_EXIT(traverse_fill_flag.isSet(Mesh::CALL_LEAF_EL))("invalid traverse_fill_flag"); + TEST_EXIT_DBG(stack_used > 0)("no current element"); + TEST_EXIT_DBG(traverse_fill_flag.isSet(Mesh::CALL_LEAF_EL))("invalid traverse_fill_flag"); Parametric *parametric = traverse_mesh->getParametric(); if (parametric) elinfo_old = parametric->removeParametricInfo(elinfo_old); - TEST_EXIT(elinfo_old == elinfo_stack[stack_used])("invalid old elinfo"); + TEST_EXIT_DBG(elinfo_old == elinfo_stack[stack_used])("invalid old elinfo"); elinfo_stack[stack_used]->testFlag(Mesh::FILL_NEIGH); el = dynamic_cast<Triangle*>(const_cast<Element*>( elinfo_stack[stack_used]->getElement())); @@ -982,7 +982,7 @@ namespace AMDiS { stack_used--; nb = coarse_nb[info_stack[stack_used]][nb]; if (nb == -1) break; - TEST_EXIT(nb >= 0)("invalid coarse_nb %d\n",nb); + TEST_EXIT_DBG(nb >= 0)("invalid coarse_nb %d\n",nb); } /****************************************************************************/ @@ -1051,11 +1051,11 @@ namespace AMDiS { } if (save_stack_used > stack2_used) { /* `refine' both el and el2 */ - TEST_EXIT(el->getFirstChild())("invalid NEW refinement?"); + TEST_EXIT_DBG(el->getFirstChild())("invalid NEW refinement?"); /* use child i, neighbour of el2->child[nb-1] */ i = 2 - save_info_stack[stack2_used]; - TEST_EXIT(i < 2)("invalid OLD refinement?"); + TEST_EXIT_DBG(i < 2)("invalid OLD refinement?"); info_stack[stack_used] = i+1; elinfo_stack[stack_used+1]->fillElInfo(i, elinfo_stack[stack_used]); stack_used++; @@ -1087,7 +1087,7 @@ namespace AMDiS { MSG(" got element %d at %8X with opp_vertex %d neigh %d\n", elinfo->getElement()->getIndex(), elinfo->getElement(), opp_vertex, elinfo->getNeighbour(opp_vertex)?elinfo->getNeighbour(opp_vertex)->getIndex():-1); - TEST_EXIT(elinfo->getNeighbour(opp_vertex) == old_elinfo->getElement()) + TEST_EXIT_DBG(elinfo->getNeighbour(opp_vertex) == old_elinfo->getElement()) ("didn't succeed !?!?!?"); } if (elinfo->getElement()->getFirstChild()) { @@ -1116,7 +1116,7 @@ namespace AMDiS { { FUNCNAME("TraverseStack::update()"); - TEST_EXIT(traverse_mesh->getDim() == 3)("update only in 3d\n"); + TEST_EXIT_DBG(traverse_mesh->getDim() == 3)("update only in 3d\n"); for (int i = stack_used; i > 0; i--) { dynamic_cast<ElInfo3d*>( elinfo_stack[i])->update(); diff --git a/AMDiS/src/Triangle.cc b/AMDiS/src/Triangle.cc index 87cdc3188fde0ecfe5f52f4bbe7185d3182ec11c..3dadb36860d4751ae09ce7b6ae8ae19fdc63233a 100644 --- a/AMDiS/src/Triangle.cc +++ b/AMDiS/src/Triangle.cc @@ -13,7 +13,7 @@ namespace AMDiS { bool Triangle::hasSide(Element* sideElem) const { FUNCNAME("Triangle::hasSide"); - TEST_EXIT(sideElem->isLine())("called for sideElem-type != Line\n"); + TEST_EXIT_DBG(sideElem->isLine())("called for sideElem-type != Line\n"); ERROR_EXIT("not yet\n"); return false; } diff --git a/AMDiS/src/Triangle.h b/AMDiS/src/Triangle.h index e9a2a392a792d5933c1f46aac3a5a316068bbe52..9ca6fbf7448efb51352b83deac37642173de8aa6 100644 --- a/AMDiS/src/Triangle.h +++ b/AMDiS/src/Triangle.h @@ -137,8 +137,8 @@ namespace AMDiS { */ virtual int getSideOfChild(int child, int side, int) const { FUNCNAME("Triangle::getSideOfChild()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 2)("side must be between 0 and 2\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 2)("side must be between 0 and 2\n"); return sideOfChild[child][side]; }; @@ -147,8 +147,8 @@ namespace AMDiS { */ virtual int getVertexOfParent(int child, int side, int=0) const { FUNCNAME("Triangle::getVertexOfParent()"); - TEST_EXIT(child==0 || child==1)("child must be in (0,1)\n"); - TEST_EXIT(side >= 0 && side <= 2)("side must be between 0 and 2\n"); + TEST_EXIT_DBG(child==0 || child==1)("child must be in (0,1)\n"); + TEST_EXIT_DBG(side >= 0 && side <= 2)("side must be between 0 and 2\n"); return vertexOfParent[child][side]; }; @@ -158,8 +158,8 @@ namespace AMDiS { }; inline int getEdgeOfFace(int face, int edge) const { - TEST_EXIT(face == 0)("face must be zero at triangle\n"); - TEST_EXIT(edge >= 0 && edge < 3)("invalid edge\n"); + TEST_EXIT_DBG(face == 0)("face must be zero at triangle\n"); + TEST_EXIT_DBG(edge >= 0 && edge < 3)("invalid edge\n"); return edge; };