From 729ab8dcf980dab7458f259d936910991e6cae03 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Thu, 16 Dec 2010 13:36:09 +0000 Subject: [PATCH] Fixed problem with getRecoveryGradient. --- AMDiS/src/DOFAdmin.cc | 36 +++---- AMDiS/src/DOFAdmin.h | 48 ++++----- AMDiS/src/DOFVector.cc | 34 +++--- AMDiS/src/DOFVector.hh | 4 +- AMDiS/src/Element.cc | 16 +-- AMDiS/src/ElementDofIterator.cc | 6 +- AMDiS/src/FiniteElemSpace.cc | 10 +- AMDiS/src/Lagrange.cc | 186 ++++++++++++++++---------------- AMDiS/src/Mesh.cc | 36 +++---- AMDiS/src/ProblemVec.cc | 7 +- AMDiS/src/Recovery.cc | 34 +++--- AMDiS/src/io/DataCollector.cc | 2 +- AMDiS/src/io/MacroReader.cc | 14 +-- 13 files changed, 217 insertions(+), 216 deletions(-) diff --git a/AMDiS/src/DOFAdmin.cc b/AMDiS/src/DOFAdmin.cc index 8b96d28e..245af645 100644 --- a/AMDiS/src/DOFAdmin.cc +++ b/AMDiS/src/DOFAdmin.cc @@ -18,8 +18,8 @@ namespace AMDiS { DOFAdmin::DOFAdmin(Mesh* m) : mesh(m), - nrDOF(mesh->getDim(), NO_INIT), - nr0DOF(mesh->getDim(), NO_INIT) + nDof(mesh->getDim(), NO_INIT), + nPreDof(mesh->getDim(), NO_INIT) { init(); } @@ -28,8 +28,8 @@ namespace AMDiS { DOFAdmin::DOFAdmin(Mesh* m, std::string aName) : name(aName), mesh(m), - nrDOF(mesh->getDim(), NO_INIT), - nr0DOF(mesh->getDim(), NO_INIT) + nDof(mesh->getDim(), NO_INIT), + nPreDof(mesh->getDim(), NO_INIT) { init(); } @@ -62,8 +62,8 @@ namespace AMDiS { holeCount = src.holeCount; sizeUsed = src.sizeUsed; for (int i = 0; i <= mesh->getDim(); i++) { - nrDOF[i] = src.nrDOF[i]; - nr0DOF[i] = src.nr0DOF[i]; + nDof[i] = src.nDof[i]; + nPreDof[i] = src.nPreDof[i]; } dofIndexedList = src.dofIndexedList; dofContainerList = src.dofContainerList; @@ -142,10 +142,10 @@ namespace AMDiS { firstHole = i; } else { // if there is no hole // enlarge dof-list - enlargeDOFLists(); + enlargeDofLists(); TEST_EXIT_DBG(firstHole < static_cast<int>(dofFree.size())) - ("no free entry after enlargeDOFLists\n"); + ("no free entry after enlargeDofLists\n"); TEST_EXIT_DBG(dofFree[firstHole])("no free bit at firstHole\n"); dofFree[firstHole] = false; dof = firstHole; @@ -161,9 +161,9 @@ namespace AMDiS { } - void DOFAdmin::enlargeDOFLists(int minsize) + void DOFAdmin::enlargeDofLists(int minsize) { - FUNCNAME("DOFAdmin::enlargeDOFLists()"); + FUNCNAME("DOFAdmin::enlargeDofLists()"); int old = size; if (minsize > 0) @@ -316,23 +316,23 @@ namespace AMDiS { } - void DOFAdmin::setNumberOfDOFs(int i, int v) + void DOFAdmin::setNumberOfDofs(int i, int v) { FUNCNAME("DOFAdmin::setNumberOfDOFs()"); TEST_EXIT_DBG(0 <= i && 4 > i)("Should not happen!\n"); - nrDOF[i] = v; + nDof[i] = v; } - void DOFAdmin::setNumberOfPreDOFs(int i, int v) + void DOFAdmin::setNumberOfPreDofs(int i, int v) { FUNCNAME("DOFAdmin::setNumberOfPreDOFs()"); TEST_EXIT_DBG(0 <= i && 4 > i)("Should not happen!\n"); - nr0DOF[i] = v; + nPreDof[i] = v; } @@ -361,8 +361,8 @@ namespace AMDiS { SerUtil::serialize(out, holeCount); SerUtil::serialize(out, sizeUsed); - nrDOF.serialize(out); - nr0DOF.serialize(out); + nDof.serialize(out); + nPreDof.serialize(out); } @@ -388,8 +388,8 @@ namespace AMDiS { SerUtil::deserialize(in, holeCount); SerUtil::deserialize(in, sizeUsed); - nrDOF.deserialize(in); - nr0DOF.deserialize(in); + nDof.deserialize(in); + nPreDof.deserialize(in); std::list<DOFIndexedBase*>::iterator di; std::list<DOFIndexedBase*>::iterator end = dofIndexedList.end(); diff --git a/AMDiS/src/DOFAdmin.h b/AMDiS/src/DOFAdmin.h index 737a0a77..e0abf97e 100644 --- a/AMDiS/src/DOFAdmin.h +++ b/AMDiS/src/DOFAdmin.h @@ -66,7 +66,7 @@ namespace AMDiS { * Enlarges the number of DOFs that can be managed at least to minsize by * a step size of \ref sizeIncrement. */ - void enlargeDOFLists(int minsize = 0); + void enlargeDofLists(int minsize = 0); /// assignment operator DOFAdmin& operator=(const DOFAdmin&); @@ -77,7 +77,7 @@ namespace AMDiS { /// Compares two DOFAdmins by their names. inline bool operator!=(const DOFAdmin& ad) const { - return !(ad==*this); + return !(ad == *this); } /** \brief @@ -150,28 +150,28 @@ namespace AMDiS { return name; } - /// Returns \ref nrDOF[i], i.e., the number of dofs for the position i. + /// Returns \ref nDof[i], i.e., the number of dofs for the position i. inline const int getNumberOfDofs(int i) const { - return nrDOF[i]; + return nDof[i]; } - /// Returns \ref nrDOF + /// Returns \ref nDof inline const DimVec<int>& getNumberOfDofs() const { - return nrDOF; + return nDof; } - /// Returns \ref nr0DOF[i] - inline const int getNumberOfPreDOFs(int i) const + /// Returns \ref nPreDof[i] + inline const int getNumberOfPreDofs(int i) const { - return nr0DOF[i]; + return nPreDof[i]; } - /// Returns \ref nr0DOF - inline const DimVec<int>& getNumberOfPreDOFs() const + /// Returns \ref nPreDof + inline const DimVec<int>& getNumberOfPreDofs() const { - return nr0DOF; + return nPreDof; } /// Returns \ref mesh @@ -181,19 +181,19 @@ namespace AMDiS { } /// Returns \ref dofFree, the array denoting DOFs to be either free or used. - inline const std::vector<bool>& getDOFFree() const + inline const std::vector<bool>& getDofFree() const { return dofFree; } /// Returns if the given DOF is free. - inline const bool isDOFFree(int i) const + inline const bool isDofFree(int i) const { return dofFree[i]; } /// Sets a DOF to be free or not. - inline void setDOFFree(int i, bool b) + inline void setDofFree(int i, bool b) { dofFree[i] = b; } @@ -224,17 +224,17 @@ namespace AMDiS { * \{ */ - /// Sets \ref nrDOF[i] = v - void setNumberOfDOFs(int i, int v); + /// Sets \ref nDof[i] = v + void setNumberOfDofs(int i, int v); - /// Sets all values of \ref nrDOF - void setNumberOfDOFs(DimVec<int> v) + /// Sets all values of \ref nDof + void setNumberOfDofs(DimVec<int> v) { - nrDOF = v; + nDof = v; } - /// Sets \ref nr0DOF[i] = v - void setNumberOfPreDOFs(int i, int v); + /// Sets \ref nPreDof[i] = v + void setNumberOfPreDofs(int i, int v); /// Sets \ref name = n inline void setName(std::string n) @@ -300,10 +300,10 @@ namespace AMDiS { * Number of dofs for each position, i.e., vertex, edge, ..., center, * for this DOFAdmin. */ - DimVec<int> nrDOF; + DimVec<int> nDof; /// Dofs from previous DOFAdmins - DimVec<int> nr0DOF; + DimVec<int> nPreDof; /// List of all managed DOFIndexed objects. std::list<DOFIndexedBase*> dofIndexedList; diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index dfca5e87..b3af07b7 100644 --- a/AMDiS/src/DOFVector.cc +++ b/AMDiS/src/DOFVector.cc @@ -45,7 +45,7 @@ namespace AMDiS { return; Element *el = list.getElement(0); - int n0 = feSpace->getAdmin()->getNumberOfPreDOFs(VERTEX); + int n0 = feSpace->getAdmin()->getNumberOfPreDofs(VERTEX); DegreeOfFreedom dof0 = el->getDof(0, n0); DegreeOfFreedom dof1 = el->getDof(1, n0); DegreeOfFreedom dof_new = el->getChild(0)->getDof(feSpace->getMesh()->getDim(), n0); @@ -79,8 +79,8 @@ namespace AMDiS { DOFAdmin *admin = feSpace->getAdmin(); // count number of nodes and dofs per node - std::vector<int> numNodeDOFs; - std::vector<int> numNodePreDOFs; + std::vector<int> nNodeDOFs; + std::vector<int> nNodePreDofs; std::vector<DimVec<double>*> bary; int nNodes = 0; @@ -89,12 +89,12 @@ namespace AMDiS { for (int i = 0; i < dim + 1; i++) { GeoIndex geoIndex = INDEX_OF_DIM(i, dim); int nPositions = mesh->getGeo(geoIndex); - int numPreDOFs = admin->getNumberOfPreDOFs(i); + int numPreDofs = admin->getNumberOfPreDofs(i); for (int j = 0; j < nPositions; j++) { int dofs = basFcts->getNumberOfDofs(geoIndex); - numNodeDOFs.push_back(dofs); + nNodeDOFs.push_back(dofs); nDofs += dofs; - numNodePreDOFs.push_back(numPreDOFs); + nNodePreDofs.push_back(numPreDofs); } nNodes += nPositions; } @@ -120,8 +120,8 @@ namespace AMDiS { int localDOFNr = 0; for (int i = 0; i < nNodes; i++) { // for all nodes - for (int j = 0; j < numNodeDOFs[i]; j++) { // for all dofs at this node - DegreeOfFreedom dofIndex = dof[i][numNodePreDOFs[i] + j]; + for (int j = 0; j < nNodeDOFs[i]; j++) { // for all dofs at this node + DegreeOfFreedom dofIndex = dof[i][nNodePreDofs[i] + j]; if (!visited[dofIndex]) { basFcts->evalGrdUh(*(bary[localDOFNr]), grdLambda, localUh, &((*result)[dofIndex])); @@ -171,7 +171,7 @@ namespace AMDiS { volume.set(0.0); const BasisFunction *basFcts = feSpace->getBasisFcts(); - int nPreDOFs = feSpace->getAdmin()->getNumberOfPreDOFs(0); + int nPreDofs = feSpace->getAdmin()->getNumberOfPreDofs(VERTEX); DimVec<double> bary(dim, DEFAULT_VALUE, (1.0 / (dim + 1.0))); WorldVector<double> grd; @@ -193,7 +193,7 @@ namespace AMDiS { basFcts->evalGrdUh(bary, grdLambda, localUh, &grd); for (int i = 0; i < dim + 1; i++) { - DegreeOfFreedom dofIndex = dof[i][nPreDOFs]; + DegreeOfFreedom dofIndex = dof[i][nPreDofs]; (*result)[dofIndex] += grd * det; volume[dofIndex] += det; } @@ -640,8 +640,8 @@ namespace AMDiS { } // count number of nodes and dofs per node - std::vector<int> numNodeDOFs; - std::vector<int> numNodePreDOFs; + std::vector<int> nNodeDOFs; + std::vector<int> nNodePreDofs; std::vector<DimVec<double>*> bary; int nNodes = 0; @@ -650,12 +650,12 @@ namespace AMDiS { for (int i = 0; i < dim + 1; i++) { GeoIndex geoIndex = INDEX_OF_DIM(i, dim); int numPositionNodes = mesh->getGeo(geoIndex); - int numPreDOFs = admin->getNumberOfPreDOFs(i); + int numPreDofs = admin->getNumberOfPreDofs(i); for (int j = 0; j < numPositionNodes; j++) { int dofs = basFcts->getNumberOfDofs(geoIndex); - numNodeDOFs.push_back(dofs); + nNodeDOFs.push_back(dofs); nDofs += dofs; - numNodePreDOFs.push_back(numPreDOFs); + nNodePreDofs.push_back(numPreDofs); } nNodes += numPositionNodes; } @@ -681,8 +681,8 @@ namespace AMDiS { int localDOFNr = 0; for (int i = 0; i < nNodes; i++) { // for all nodes - for (int j = 0; j < numNodeDOFs[i]; j++) { // for all dofs at this node - DegreeOfFreedom dofIndex = dof[i][numNodePreDOFs[i] + j]; + for (int j = 0; j < nNodeDOFs[i]; j++) { // for all dofs at this node + DegreeOfFreedom dofIndex = dof[i][nNodePreDofs[i] + j]; if (!visited[dofIndex]) { basFcts->evalGrdUh(*(bary[localDOFNr]), grdLambda, localUh, &grd); diff --git a/AMDiS/src/DOFVector.hh b/AMDiS/src/DOFVector.hh index b297f1ef..aade68b6 100644 --- a/AMDiS/src/DOFVector.hh +++ b/AMDiS/src/DOFVector.hh @@ -860,7 +860,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 (!admin->isDofFree(i)) y[i] += alpha * x[i]; } @@ -926,7 +926,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 (!admin->isDofFree(i)) y[i] = alpha * y[i] + x[i]; } diff --git a/AMDiS/src/Element.cc b/AMDiS/src/Element.cc index 7ee70899..1537994a 100644 --- a/AMDiS/src/Element.cc +++ b/AMDiS/src/Element.cc @@ -207,7 +207,7 @@ namespace AMDiS { if ((nd = admin->getNumberOfDofs(VERTEX))) { int vertices = mesh->getGeo(VERTEX); - nd0 = admin->getNumberOfPreDOFs(VERTEX); + nd0 = admin->getNumberOfPreDofs(VERTEX); n0 = admin->getMesh()->getNode(VERTEX); for (int i = 0; i < vertices; i++) changeDofs1(admin, newDofIndex, n0, nd0, nd, i); @@ -216,7 +216,7 @@ namespace AMDiS { if (mesh->getDim() > 1) { if ((nd = admin->getNumberOfDofs(EDGE))) { int edges = mesh->getGeo(EDGE); - nd0 = admin->getNumberOfPreDOFs(EDGE); + nd0 = admin->getNumberOfPreDofs(EDGE); n0 = admin->getMesh()->getNode(EDGE); for (int i = 0; i < edges; i++) changeDofs1(admin, newDofIndex, n0, nd0, nd, i); @@ -226,7 +226,7 @@ namespace AMDiS { if (mesh->getDim() == 3) { if ((nd = admin->getNumberOfDofs(FACE))) { int faces = mesh->getGeo(FACE); - nd0 = admin->getNumberOfPreDOFs(FACE); + nd0 = admin->getNumberOfPreDofs(FACE); n0 = admin->getMesh()->getNode(FACE); for (int i = 0; i < faces; i++) changeDofs1(admin, newDofIndex, n0, nd0, nd, i); @@ -234,7 +234,7 @@ namespace AMDiS { } if ((nd = admin->getNumberOfDofs(CENTER))) { - nd0 = admin->getNumberOfPreDOFs(CENTER); + nd0 = admin->getNumberOfPreDofs(CENTER); n0 = admin->getMesh()->getNode(CENTER); changeDofs1(admin, newDofIndex, n0, nd0, nd, 0); } @@ -248,7 +248,7 @@ namespace AMDiS { int nd = admin->getNumberOfDofs(VERTEX); if (nd) { int vertices = mesh->getGeo(VERTEX); - nd0 = admin->getNumberOfPreDOFs(VERTEX); + nd0 = admin->getNumberOfPreDofs(VERTEX); n0 = admin->getMesh()->getNode(VERTEX); for (int i = 0; i < vertices; i++) changeDofs2(n0, nd0, nd, i); @@ -258,7 +258,7 @@ namespace AMDiS { nd = admin->getNumberOfDofs(EDGE); if (nd) { int edges = mesh->getGeo(EDGE); - nd0 = admin->getNumberOfPreDOFs(EDGE); + nd0 = admin->getNumberOfPreDofs(EDGE); n0 = admin->getMesh()->getNode(EDGE); for (int i = 0; i < edges; i++) changeDofs2(n0, nd0, nd, i); @@ -269,7 +269,7 @@ namespace AMDiS { nd = admin->getNumberOfDofs(FACE); if (nd) { int faces = mesh->getGeo(FACE); - nd0 = admin->getNumberOfPreDOFs(FACE); + nd0 = admin->getNumberOfPreDofs(FACE); n0 = admin->getMesh()->getNode(FACE); for (int i = 0; i < faces; i++) changeDofs2(n0, nd0, nd, i); @@ -278,7 +278,7 @@ namespace AMDiS { nd = admin->getNumberOfDofs(CENTER); if (nd) { - nd0 = admin->getNumberOfPreDOFs(CENTER); + nd0 = admin->getNumberOfPreDofs(CENTER); n0 = admin->getMesh()->getNode(CENTER); // only one center changeDofs2(n0, nd0, nd, 0); diff --git a/AMDiS/src/ElementDofIterator.cc b/AMDiS/src/ElementDofIterator.cc index bf397f38..957c4ae5 100644 --- a/AMDiS/src/ElementDofIterator.cc +++ b/AMDiS/src/ElementDofIterator.cc @@ -30,7 +30,7 @@ namespace AMDiS { TEST_EXIT_DBG(nDofs != 0)("Mh, I've to think about this situation!\n"); // Calculate displacement. Is used if there is more than one dof admin on the mesh. - n0 = admin->getNumberOfPreDOFs(posIndex); + n0 = admin->getNumberOfPreDofs(posIndex); // Get first dof index position for vertices. node0 = mesh->getNode(posIndex); // Get number of vertices in this dimension. @@ -40,6 +40,7 @@ namespace AMDiS { orderPosition = basisFcts->orderOfPositionIndices(element, posIndex, 0); } + bool ElementDofIterator::next() { // First iterate over the dofs of one element (vertex, edge, face). @@ -76,7 +77,7 @@ namespace AMDiS { nElements = Global::getGeo(posIndex, dim); // Calculate displacement. Is used if there is more than one dof admin on the mesh. - n0 = admin->getNumberOfPreDOFs(posIndex); + n0 = admin->getNumberOfPreDofs(posIndex); // Get first dof index position for the geo index position. node0 = mesh->getNode(posIndex); @@ -99,6 +100,7 @@ namespace AMDiS { return true; } + bool ElementDofIterator::nextStrict() { dofPos = nDofs; diff --git a/AMDiS/src/FiniteElemSpace.cc b/AMDiS/src/FiniteElemSpace.cc index 249df623..096fe5e2 100644 --- a/AMDiS/src/FiniteElemSpace.cc +++ b/AMDiS/src/FiniteElemSpace.cc @@ -47,12 +47,15 @@ namespace AMDiS { feSpaces.push_back(this); } + FiniteElemSpace::FiniteElemSpace() {} + FiniteElemSpace::~FiniteElemSpace() {} + FiniteElemSpace& FiniteElemSpace::operator=(const FiniteElemSpace& feSpace) { if (&feSpace == this) @@ -69,14 +72,13 @@ namespace AMDiS { return *this; } + FiniteElemSpace *FiniteElemSpace::provideFeSpace(DOFAdmin *admin, const BasisFunction *basFcts, Mesh *mesh, std::string name_) { - int numSpaces = static_cast<int>(feSpaces.size()); - - for (int i = 0; i < numSpaces; i++) + for (unsigned int i = 0; i < feSpaces.size(); i++) if (feSpaces[i]->basFcts == basFcts && feSpaces[i]->mesh == mesh && (!admin || (admin && feSpaces[i]->admin == admin))) @@ -85,6 +87,7 @@ namespace AMDiS { return new FiniteElemSpace(admin, basFcts, mesh, name_); } + int FiniteElemSpace::calcMemoryUsage() { int result = sizeof(FiniteElemSpace); @@ -92,6 +95,7 @@ namespace AMDiS { return result; } + void FiniteElemSpace::clear() { for (int i = 0; i < static_cast<int>(feSpaces.size()); i++) { diff --git a/AMDiS/src/Lagrange.cc b/AMDiS/src/Lagrange.cc index 25135dc2..754aa167 100644 --- a/AMDiS/src/Lagrange.cc +++ b/AMDiS/src/Lagrange.cc @@ -78,7 +78,7 @@ namespace AMDiS { { if (static_cast<int>(phiDimDegree[dim][degree].size()) == 0) { // for all positions - for (int i = 0; i < dim+1; i++) { + for (int i = 0; i < dim + 1; i++) { // no vertex dofs for degree 0 ? if (degree == 0 && i != dim) continue; @@ -88,7 +88,7 @@ namespace AMDiS { for (int k = 0; k < (*nDOF)[INDEX_OF_DIM(i, dim)]; k++) { // basis function phiDimDegree[dim][degree].push_back(new Phi(this, - INDEX_OF_DIM(i ,dim),j, k)); + INDEX_OF_DIM(i ,dim), j, k)); // gradients grdPhiDimDegree[dim][degree].push_back(new GrdPhi(this, INDEX_OF_DIM(i, dim), @@ -939,7 +939,7 @@ namespace AMDiS { nrDOFs = admin->getNumberOfDofs(posIndex); if (nrDOFs) { - n0 = admin->getNumberOfPreDOFs(posIndex); + n0 = admin->getNumberOfPreDofs(posIndex); node0 = admin->getMesh()->getNode(posIndex); num = Global::getGeo(posIndex, dim); @@ -971,7 +971,7 @@ namespace AMDiS { nrDOFs = admin->getNumberOfDofs(posIndex); if (nrDOFs) { - n0 = admin->getNumberOfPreDOFs(posIndex); + n0 = admin->getNumberOfPreDofs(posIndex); node0 = admin->getMesh()->getNode(posIndex); num = Global::getGeo(posIndex, dim); @@ -1052,7 +1052,7 @@ namespace AMDiS { if (n < 1) return; - int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDOFs(CENTER); + int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDofs(CENTER); Element *el = list->getElement(0); int node = drv->getFeSpace()->getMesh()->getNode(CENTER); // Parent center @@ -1075,7 +1075,7 @@ namespace AMDiS { return; int dim = drv->getFeSpace()->getMesh()->getDim(); - int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDOFs(VERTEX); + int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDofs(VERTEX); Element *el = list->getElement(0); // 1st endpoint of refinement edge DegreeOfFreedom dof0 = el->getDof(0, n0); @@ -1099,7 +1099,7 @@ namespace AMDiS { const DegreeOfFreedom *pdof = basFct->getLocalIndices(el, admin, NULL); int node = drv->getFeSpace()->getMesh()->getNode(VERTEX); - int n0 = admin->getNumberOfPreDOFs(VERTEX); + int n0 = admin->getNumberOfPreDofs(VERTEX); /****************************************************************************/ /* newest vertex of child[0] and child[1] */ @@ -1110,7 +1110,7 @@ namespace AMDiS { (*drv)[cdof] = (*drv)[pdof[2]]; node = drv->getFeSpace()->getMesh()->getNode(CENTER); - n0 = admin->getNumberOfPreDOFs(CENTER); + n0 = admin->getNumberOfPreDofs(CENTER); /****************************************************************************/ /* midpoint of edge on child[0] at the refinement edge */ @@ -1143,17 +1143,17 @@ namespace AMDiS { const DegreeOfFreedom *pdof = basFct->getLocalIndices(el, admin, NULL); int node = drv->getFeSpace()->getMesh()->getNode(VERTEX); - int n0 = admin->getNumberOfPreDOFs(VERTEX); + int n0 = admin->getNumberOfPreDofs(VERTEX); /****************************************************************************/ /* newest vertex of child[0] and child[1] */ /****************************************************************************/ - DegreeOfFreedom cdof = el->getChild(0)->getDof(node+2, n0); /* newest vertex is DIM */ + DegreeOfFreedom cdof = el->getChild(0)->getDof(node + 2, n0); /* newest vertex is DIM */ (*drv)[cdof] = (*drv)[pdof[5]]; node = drv->getFeSpace()->getMesh()->getNode(EDGE); - n0 = admin->getNumberOfPreDOFs(EDGE); + n0 = admin->getNumberOfPreDofs(EDGE); /****************************************************************************/ /* midpoint of edge on child[0] at the refinement edge */ @@ -1167,7 +1167,7 @@ namespace AMDiS { /* node in the common edge of child[0] and child[1] */ /****************************************************************************/ - cdof = el->getChild(0)->getDof(node+1, n0); + cdof = el->getChild(0)->getDof(node + 1, n0); (*drv)[cdof] = -0.125 * ((*drv)[pdof[0]] + (*drv)[pdof[1]]) + 0.25 * (*drv)[pdof[5]] + 0.5 * ((*drv)[pdof[3]] + (*drv)[pdof[4]]); @@ -1176,7 +1176,7 @@ namespace AMDiS { /* midpoint of edge on child[1] at the refinement edge */ /****************************************************************************/ - cdof = el->getChild(1)->getDof(node+1, n0); + cdof = el->getChild(1)->getDof(node + 1, n0); (*drv)[cdof] = -0.125 * (*drv)[pdof[0]] + 0.375 * (*drv)[pdof[1]] + 0.75 * (*drv)[pdof[5]]; @@ -1187,7 +1187,7 @@ namespace AMDiS { el = list->getElement(1); pdof = basFct->getLocalIndices(el, admin, NULL); - cdof = el->getChild(0)->getDof(node+1, n0); + cdof = el->getChild(0)->getDof(node + 1, n0); (*drv)[cdof] = -0.125 * ((*drv)[pdof[0]] + (*drv)[pdof[1]]) + 0.25 * (*drv)[pdof[5]] + 0.5 * ((*drv)[pdof[3]] + (*drv)[pdof[4]]); @@ -1210,7 +1210,7 @@ namespace AMDiS { basFct->getLocalIndices(el, admin, pdof); int node0 = drv->getFeSpace()->getMesh()->getNode(EDGE); - int n0 = admin->getNumberOfPreDOFs(EDGE); + int n0 = admin->getNumberOfPreDofs(EDGE); /****************************************************************************/ /* values on child[0] */ @@ -1261,13 +1261,13 @@ namespace AMDiS { switch (lr_set) { case 1: - cdofi = el->getChild(0)->getDof(node0+4, n0); + cdofi = el->getChild(0)->getDof(node0 + 4, n0); (*drv)[cdofi] = (0.125 * (-(*drv)[pdof[0]] - (*drv)[pdof[1]]) + 0.25 * (*drv)[pdof[4]] + 0.5 * ((*drv)[pdof[5]] + (*drv)[pdof[7]])); break; case 2: - cdofi = el->getChild(0)->getDof(node0+5, n0); + cdofi = el->getChild(0)->getDof(node0 + 5, n0); (*drv)[cdofi] = (0.125 * (-(*drv)[pdof[0]] - (*drv)[pdof[1]]) + 0.25 * (*drv)[pdof[4]] + 0.5 * ((*drv)[pdof[6]] + (*drv)[pdof[8]])); @@ -1360,7 +1360,7 @@ namespace AMDiS { /****************************************************************************/ int node = drv->getFeSpace()->getMesh()->getNode(CENTER); - int n0 = admin->getNumberOfPreDOFs(CENTER); + int n0 = admin->getNumberOfPreDofs(CENTER); int dof9 = el->getChild(1)->getDof(node, n0); (*drv)[dof9] = @@ -1455,7 +1455,7 @@ namespace AMDiS { /****************************************************************************/ int node = drv->getFeSpace()->getMesh()->getNode(CENTER); - int n0 = admin->getNumberOfPreDOFs(CENTER); + int n0 = admin->getNumberOfPreDofs(CENTER); int dof9 = el->getChild(1)->getDof(node, n0); (*drv)[dof9] = @@ -1570,7 +1570,7 @@ namespace AMDiS { /****************************************************************************/ node0 = drv->getFeSpace()->getMesh()->getNode(FACE); - n0 = admin->getNumberOfPreDOFs(FACE); + n0 = admin->getNumberOfPreDofs(FACE); for (i = 1; i < n; i++) { el = list->getElement(i); @@ -1643,7 +1643,7 @@ namespace AMDiS { if (typ == 0) { switch (lr_set) { case 1: - cdi = el->getChild(1)->getDof(node0+1, n0); + cdi = el->getChild(1)->getDof(node0 + 1, n0); TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) @@ -1651,7 +1651,7 @@ namespace AMDiS { + 0.375*(*drv)[pd[10]] + 0.75*(*drv)[pd[19]]); break; case 2: - cdi = el->getChild(1)->getDof(node0+2, n0); + cdi = el->getChild(1)->getDof(node0 + 2, n0); TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) @@ -1662,7 +1662,7 @@ namespace AMDiS { } else { switch (lr_set) { case 1: - cdi = el->getChild(1)->getDof(node0+2, n0); + cdi = el->getChild(1)->getDof(node0 + 2, n0); TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) @@ -1670,7 +1670,7 @@ namespace AMDiS { + 0.375*(*drv)[pd[10]] + 0.75*(*drv)[pd[19]]); break; case 2: - cdi = el->getChild(1)->getDof(node0+1, n0); + cdi = el->getChild(1)->getDof(node0 + 1, n0); TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[cdi] = (0.0625*((*drv)[pd[0]] - (*drv)[pd[1]]) @@ -2549,7 +2549,7 @@ namespace AMDiS { if (n < 1) return; - int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDOFs(CENTER); + int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDofs(CENTER); Element* el = list->getElement(0); int dof0 = el->getDof(0,n0); /* 1st endpoint of refinement edge */ int dof1 = el->getDof(1,n0); /* 2nd endpoint of refinement edge */ @@ -2568,7 +2568,7 @@ namespace AMDiS { if (n < 1) return; - int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDOFs(VERTEX); + int n0 = drv->getFeSpace()->getAdmin()->getNumberOfPreDofs(VERTEX); Element *el = list->getElement(0); // 1st endpoint of refinement edge @@ -2601,13 +2601,13 @@ namespace AMDiS { /****************************************************************************/ int node = drv->getFeSpace()->getMesh()->getNode(VERTEX); - int n0 = admin->getNumberOfPreDOFs(VERTEX); - DegreeOfFreedom cdof2 = el->getChild(0)->getDof(node+2, n0); + int n0 = admin->getNumberOfPreDofs(VERTEX); + DegreeOfFreedom cdof2 = el->getChild(0)->getDof(node + 2, n0); node = drv->getFeSpace()->getMesh()->getNode(EDGE); - n0 = admin->getNumberOfPreDOFs(EDGE); + n0 = admin->getNumberOfPreDofs(EDGE); DegreeOfFreedom cdof3 = el->getChild(0)->getDof(node, n0); - DegreeOfFreedom cdof4 = el->getChild(0)->getDof(node+1, n0); + DegreeOfFreedom cdof4 = el->getChild(0)->getDof(node + 1, n0); (*drv)[pdof[0]] += 0.375*(*drv)[cdof3] - 0.125*(*drv)[cdof4]; (*drv)[pdof[1]] += -0.125*((*drv)[cdof3] + (*drv)[cdof4]); @@ -2619,7 +2619,7 @@ namespace AMDiS { /* contributions of dofs located on child[1] and not on child[0] */ /****************************************************************************/ - cdof4 = el->getChild(1)->getDof(node+1, n0); + cdof4 = el->getChild(1)->getDof(node + 1, n0); (*drv)[pdof[0]] += -0.125*(*drv)[cdof4]; (*drv)[pdof[1]] += 0.375*(*drv)[cdof4]; @@ -2633,7 +2633,7 @@ namespace AMDiS { /* first set those values not effected by previous element */ /****************************************************************************/ - cdof4 = el->getChild(0)->getDof(node+1, n0); + cdof4 = el->getChild(0)->getDof(node + 1, n0); (*drv)[pdof[3]] += 0.5*(*drv)[cdof4]; (*drv)[pdof[4]] += 0.5*(*drv)[cdof4]; @@ -2673,7 +2673,7 @@ namespace AMDiS { basFct->getLocalIndices(el, admin, pdof); node0 = drv->getFeSpace()->getMesh()->getNode(EDGE); - n0 = admin->getNumberOfPreDOFs(EDGE); + n0 = admin->getNumberOfPreDofs(EDGE); /****************************************************************************/ /* values on child[0] */ @@ -2702,7 +2702,7 @@ namespace AMDiS { /****************************************************************************/ cdof = basFct->getLocalIndices(el->getChild(1), admin, NULL); - cdofi = el->getChild(1)->getDof(node0+2, n0); + cdofi = el->getChild(1)->getDof(node0 + 2, n0); (*drv)[pdof[0]] += (-0.125*(*drv)[cdofi]); (*drv)[pdof[1]] += (0.375*(*drv)[cdofi]); @@ -2733,7 +2733,7 @@ namespace AMDiS { switch (lr_set) { case 1: - cdofi = el->getChild(0)->getDof(node0+4, n0); + cdofi = el->getChild(0)->getDof(node0 + 4, n0); (*drv)[pdof[0]] += (-0.125*(*drv)[cdofi]); (*drv)[pdof[1]] += (-0.125*(*drv)[cdofi]); (*drv)[pdof[4]] += (0.25*(*drv)[cdofi]); @@ -2741,7 +2741,7 @@ namespace AMDiS { (*drv)[pdof[7]] += (0.5*(*drv)[cdofi]); break; case 2: - cdofi = el->getChild(0)->getDof(node0+5, n0); + cdofi = el->getChild(0)->getDof(node0 + 5, n0); (*drv)[pdof[0]] += (-0.125*(*drv)[cdofi]); (*drv)[pdof[1]] += (-0.125*(*drv)[cdofi]); (*drv)[pdof[4]] += (0.25*(*drv)[cdofi]); @@ -2845,7 +2845,7 @@ namespace AMDiS { /****************************************************************************/ node = drv->getFeSpace()->getMesh()->getNode(CENTER); - n0 = admin->getNumberOfPreDOFs(CENTER); + n0 = admin->getNumberOfPreDofs(CENTER); dof9 = el->getChild(1)->getDof(node, n0); (*drv)[pdof[0]] += 0.0625*(*drv)[dof9]; @@ -2947,7 +2947,7 @@ namespace AMDiS { /****************************************************************************/ node = drv->getFeSpace()->getMesh()->getNode(CENTER); - n0 = admin->getNumberOfPreDOFs(CENTER); + n0 = admin->getNumberOfPreDofs(CENTER); dof9 = el->getChild(1)->getDof(node, n0); (*drv)[pdof[0]] += 0.0625*(*drv)[dof9]; @@ -3069,7 +3069,7 @@ namespace AMDiS { /****************************************************************************/ int node0 = drv->getFeSpace()->getMesh()->getNode(FACE); - int n0 = admin->getNumberOfPreDOFs(FACE); + int n0 = admin->getNumberOfPreDofs(FACE); for (int i = 1; i < n; i++) { el = list->getElement(i); @@ -3162,7 +3162,7 @@ namespace AMDiS { if (typ == 0) { switch (lr_set) { case 1: - cdi = el->getChild(1)->getDof(node0+1, n0); + cdi = el->getChild(1)->getDof(node0 + 1, n0); TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; @@ -3173,7 +3173,7 @@ namespace AMDiS { (*drv)[pd[19]] += 0.75*(*drv)[cdi]; break; case 2: - cdi = el->getChild(1)->getDof(node0+2, n0); + cdi = el->getChild(1)->getDof(node0 + 2, n0); TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; @@ -3187,7 +3187,7 @@ namespace AMDiS { } else { switch (lr_set) { case 1: - cdi = el->getChild(1)->getDof(node0+2, n0); + cdi = el->getChild(1)->getDof(node0 + 2, n0); TEST_EXIT_DBG(cdi == cd[18])("cdi != cd[18]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; @@ -3198,7 +3198,7 @@ namespace AMDiS { (*drv)[pd[19]] += 0.75*(*drv)[cdi]; break; case 2: - cdi = el->getChild(1)->getDof(node0+1, n0); + cdi = el->getChild(1)->getDof(node0 + 1, n0); TEST_EXIT_DBG(cdi == cd[17])("cdi != cd[17]\n"); (*drv)[pd[0]] += 0.0625*(*drv)[cdi]; (*drv)[pd[1]] += -0.0625*(*drv)[cdi]; @@ -4235,9 +4235,10 @@ namespace AMDiS { const Mesh *mesh = drv->getFeSpace()->getMesh(); // values on child[0] - DegreeOfFreedom cdof = el->getChild(0)->getDof(mesh->getNode(CENTER)+2, - admin->getNumberOfPreDOFs(CENTER)); - DegreeOfFreedom pdof = el->getDof(mesh->getNode(CENTER)+2, admin->getNumberOfPreDOFs(CENTER)); + DegreeOfFreedom cdof = el->getChild(0)->getDof(mesh->getNode(CENTER) + 2, + admin->getNumberOfPreDofs(CENTER)); + DegreeOfFreedom pdof = + el->getDof(mesh->getNode(CENTER) + 2, admin->getNumberOfPreDofs(CENTER)); (*drv)[pdof] = (*drv)[cdof]; } @@ -4260,8 +4261,8 @@ namespace AMDiS { // values on child[0] DegreeOfFreedom cdof = el->getChild(0)->getDof(mesh->getNode(VERTEX) + 1, - admin->getNumberOfPreDOFs(VERTEX)); - DegreeOfFreedom pdof = el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDOFs(CENTER)); + admin->getNumberOfPreDofs(VERTEX)); + DegreeOfFreedom pdof = el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDofs(CENTER)); (*drv)[pdof] = (*drv)[cdof]; } @@ -4282,9 +4283,10 @@ namespace AMDiS { const Mesh *mesh = drv->getFeSpace()->getMesh(); // values on child[0] - DegreeOfFreedom cdof = el->getChild(0)->getDof(mesh->getNode(VERTEX)+2, - admin->getNumberOfPreDOFs(VERTEX)); - DegreeOfFreedom pdof = el->getDof(mesh->getNode(EDGE)+2, admin->getNumberOfPreDOFs(EDGE)); + DegreeOfFreedom cdof = el->getChild(0)->getDof(mesh->getNode(VERTEX) + 2, + admin->getNumberOfPreDofs(VERTEX)); + DegreeOfFreedom pdof = + el->getDof(mesh->getNode(EDGE) + 2, admin->getNumberOfPreDofs(EDGE)); (*drv)[pdof] = (*drv)[cdof]; } @@ -4303,9 +4305,9 @@ namespace AMDiS { const DOFAdmin *admin = drv->getFeSpace()->getAdmin(); const Mesh *mesh = drv->getFeSpace()->getMesh(); - int cdof = el->getChild(0)->getDof(mesh->getNode(VERTEX)+3, - admin->getNumberOfPreDOFs(VERTEX)); - int pdof = el->getDof(mesh->getNode(EDGE), admin->getNumberOfPreDOFs(EDGE)); + int cdof = el->getChild(0)->getDof(mesh->getNode(VERTEX) + 3, + admin->getNumberOfPreDofs(VERTEX)); + int pdof = el->getDof(mesh->getNode(EDGE), admin->getNumberOfPreDofs(EDGE)); (*drv)[pdof] = (*drv)[cdof]; } @@ -4325,7 +4327,7 @@ namespace AMDiS { const DOFAdmin *admin = drv->getFeSpace()->getAdmin(); const Mesh *mesh = drv->getFeSpace()->getMesh(); int node = mesh->getNode(EDGE); - int n0 = admin->getNumberOfPreDOFs(EDGE); + int n0 = admin->getNumberOfPreDofs(EDGE); // values on child[0] @@ -4344,11 +4346,11 @@ namespace AMDiS { (*drv)[pdof] = (*drv)[cdof]; if (child->getDof(2, 0) < child->getDof(0, 0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); - (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDOFs(CENTER))] = + (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDofs(CENTER))] = (*drv)[cdof]; // values on child[1] @@ -4356,14 +4358,14 @@ namespace AMDiS { child = el->getChild(1); if (el->getDof(0, 0) < el->getDof(1, 0)) - pdof = el->getDof(node+2, n0+1); + pdof = el->getDof(node + 2, n0 + 1); else - pdof = el->getDof(node+2, n0); + pdof = el->getDof(node + 2, n0); if (child->getDof(2, 0) < child->getDof(0,0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); (*drv)[pdof] = (*drv)[cdof]; @@ -4376,11 +4378,11 @@ namespace AMDiS { child = el->getChild(0); if (child->getDof(2,0) < child->getDof(0, 0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); - (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDOFs(CENTER))] = + (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDofs(CENTER))] = (*drv)[cdof]; } @@ -4400,30 +4402,30 @@ namespace AMDiS { const DOFAdmin *admin = drv->getFeSpace()->getAdmin(); const Mesh *mesh = drv->getFeSpace()->getMesh(); int node = mesh->getNode(EDGE); - int n0 = admin->getNumberOfPreDOFs(EDGE); + int n0 = admin->getNumberOfPreDofs(EDGE); // values on child[0] int cdof, pdof; if (el->getDof(0, 0) < el->getDof(1, 0)) - pdof = el->getDof(node+2, n0); + pdof = el->getDof(node + 2, n0); else - pdof = el->getDof(node+2, n0+1); + pdof = el->getDof(node + 2, n0 + 1); if (child->getDof(1, 0) < child->getDof(2, 0)) - cdof = child->getDof(node, n0+1); + cdof = child->getDof(node, n0 + 1); else cdof = child->getDof(node, n0); (*drv)[pdof] = (*drv)[cdof]; if (child->getDof(2, 0) < child->getDof(0, 0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); - (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDOFs(CENTER))] = + (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDofs(CENTER))] = (*drv)[cdof]; // values on child[1] @@ -4431,14 +4433,14 @@ namespace AMDiS { child = el->getChild(1); if (el->getDof(0, 0) < el->getDof(1, 0)) - pdof = el->getDof(node+2, n0+1); + pdof = el->getDof(node + 2, n0 + 1); else - pdof = el->getDof(node+2, n0); + pdof = el->getDof(node + 2, n0); if (child->getDof(2, 0) < child->getDof(0, 0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); (*drv)[pdof] = (*drv)[cdof]; @@ -4451,11 +4453,11 @@ namespace AMDiS { child = el->getChild(0); if (child->getDof(2, 0) < child->getDof(0, 0)) - cdof = child->getDof(node+1, n0); + cdof = child->getDof(node + 1, n0); else - cdof = child->getDof(node+1, n0+1); + cdof = child->getDof(node + 1, n0 + 1); - (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDOFs(CENTER))] = + (*drv)[el->getDof(mesh->getNode(CENTER), admin->getNumberOfPreDofs(CENTER))] = (*drv)[cdof]; } @@ -4474,9 +4476,9 @@ namespace AMDiS { const DOFAdmin *admin = drv->getFeSpace()->getAdmin(); int node_e = drv->getFeSpace()->getMesh()->getNode(EDGE); - int n0_e = admin->getNumberOfPreDOFs(EDGE); + int n0_e = admin->getNumberOfPreDofs(EDGE); int node_f = drv->getFeSpace()->getMesh()->getNode(FACE); - int n0_f = admin->getNumberOfPreDOFs(FACE); + int n0_f = admin->getNumberOfPreDofs(FACE); // values on child[0] @@ -4485,23 +4487,23 @@ namespace AMDiS { DegreeOfFreedom pd_o[20], cd, pd; basFct->getLocalIndices(el, admin, pd_o); - pd = (pds[0][0] < pds[1][0]) ? pds[node_e][n0_e] : pds[node_e][n0_e+1]; - cd = cds[0][0] < cds[3][0] ? cds[node_e+2][n0_e+1] : cds[node_e+2][n0_e]; + pd = (pds[0][0] < pds[1][0]) ? pds[node_e][n0_e] : pds[node_e][n0_e + 1]; + cd = cds[0][0] < cds[3][0] ? cds[node_e + 2][n0_e + 1] : cds[node_e + 2][n0_e]; (*drv)[pd] = (*drv)[cd]; - pd = el->getDof(node_f+2, n0_f); - cd = cds[2][0] < cds[3][0] ? cds[node_e+5][n0_e+1] : cds[node_e+5][n0_e]; + pd = el->getDof(node_f + 2, n0_f); + cd = cds[2][0] < cds[3][0] ? cds[node_e + 5][n0_e + 1] : cds[node_e + 5][n0_e]; (*drv)[pd] = (*drv)[cd]; - pd = el->getDof(node_f+3, n0_f); - cd = cds[1][0] < cds[3][0] ? cds[node_e+4][n0_e+1] : cds[node_e+4][n0_e]; + pd = el->getDof(node_f + 3, n0_f); + cd = cds[1][0] < cds[3][0] ? cds[node_e + 4][n0_e + 1] : cds[node_e + 4][n0_e]; (*drv)[pd] = (*drv)[cd]; // values on child[1] cds = el->getChild(1)->getDof(); - pd = (pds[0][0] < pds[1][0]) ? pds[node_e][n0_e+1] : pds[node_e][n0_e]; - cd = cds[0][0] < cds[3][0] ? cds[node_e+2][n0_e+1] : cds[node_e+2][n0_e]; + pd = (pds[0][0] < pds[1][0]) ? pds[node_e][n0_e + 1] : pds[node_e][n0_e]; + cd = cds[0][0] < cds[3][0] ? cds[node_e + 2][n0_e + 1] : cds[node_e + 2][n0_e]; (*drv)[pd] = (*drv)[cd]; // adjust neighbour values @@ -4523,15 +4525,15 @@ namespace AMDiS { switch (lr_set) { case 1: - pd = el->getDof(node_f+3, n0_f); + pd = el->getDof(node_f + 3, n0_f); cd = cds[1][0] < cds[3][0] ? - cds[node_e+4][n0_e+1] : cds[node_e+4][n0_e]; + cds[node_e + 4][n0_e + 1] : cds[node_e + 4][n0_e]; (*drv)[pd] = (*drv)[cd]; break; case 2: pd = el->getDof(node_f + 2, n0_f); cd = cds[2][0] < cds[3][0] ? - cds[node_e+5][n0_e+1] : cds[node_e+5][n0_e]; + cds[node_e + 5][n0_e + 1] : cds[node_e + 5][n0_e]; (*drv)[pd] = (*drv)[cd]; break; } diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc index ee359219..7950608e 100644 --- a/AMDiS/src/Mesh.cc +++ b/AMDiS/src/Mesh.cc @@ -69,12 +69,6 @@ namespace AMDiS { const int Mesh::MAX_DOF = 100; std::map<std::pair<DegreeOfFreedom, int>, DegreeOfFreedom*> Mesh::serializedDOFs; - struct delmem { - DegreeOfFreedom* ptr; - int len; - }; - - Mesh::Mesh(std::string aName, int dimension) : name(aName), dim(dimension), @@ -131,7 +125,7 @@ namespace AMDiS { if (elementDataPrototype) delete elementDataPrototype; - for (int i = 0; i < static_cast<int>(admin.size()); i++) + for (unsigned int i = 0; i < admin.size(); i++) delete admin[i]; } @@ -405,32 +399,26 @@ namespace AMDiS { localAdmin->setMesh(this); - std::vector<DOFAdmin*>::iterator dai = - std::find(admin.begin(), admin.end(), localAdmin); - - TEST_EXIT(dai == admin.end()) + TEST_EXIT(std::find(admin.begin(), admin.end(), localAdmin) == admin.end()) ("admin %s is already associated to mesh %s\n", localAdmin->getName().c_str(), this->getName().c_str()); - // if this will be required, see the untested code in revision < 224 - // TEST_EXIT(!initialized)("Adding DOFAdmins to initilized meshes does not work yet!\n"); - admin.push_back(localAdmin); nDofEl = 0; - localAdmin->setNumberOfPreDOFs(VERTEX,nDof[VERTEX]); + localAdmin->setNumberOfPreDofs(VERTEX, nDof[VERTEX]); nDof[VERTEX] += localAdmin->getNumberOfDofs(VERTEX); nDofEl += getGeo(VERTEX) * nDof[VERTEX]; if (dim > 1) { - localAdmin->setNumberOfPreDOFs(EDGE,nDof[EDGE]); + localAdmin->setNumberOfPreDofs(EDGE, nDof[EDGE]); nDof[EDGE] += localAdmin->getNumberOfDofs(EDGE); nDofEl += getGeo(EDGE) * nDof[EDGE]; } - localAdmin->setNumberOfPreDOFs(CENTER,nDof[CENTER]); - nDof[CENTER] += localAdmin->getNumberOfDofs(CENTER); + localAdmin->setNumberOfPreDofs(CENTER, nDof[CENTER]); + nDof[CENTER] += localAdmin->getNumberOfDofs(CENTER); nDofEl += nDof[CENTER]; TEST_EXIT_DBG(nDof[VERTEX] > 0)("no vertex dofs\n"); @@ -445,7 +433,7 @@ namespace AMDiS { } if (dim == 3) { - localAdmin->setNumberOfPreDOFs(FACE,nDof[FACE]); + localAdmin->setNumberOfPreDofs(FACE, nDof[FACE]); nDof[FACE] += localAdmin->getNumberOfDofs(FACE); nDofEl += getGeo(FACE) * nDof[FACE]; node[FACE] = nNodeEl; @@ -514,7 +502,7 @@ namespace AMDiS { TEST_EXIT_DBG(localAdmin)("no admin[%d]\n", i); int n = localAdmin->getNumberOfDofs(position); - int n0 = localAdmin->getNumberOfPreDOFs(position); + int n0 = localAdmin->getNumberOfPreDofs(position); TEST_EXIT_DBG(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); @@ -557,11 +545,11 @@ namespace AMDiS { const DOFAdmin *Mesh::createDOFAdmin(std::string lname, DimVec<int> lnDof) { FUNCNAME("Mesh::createDOFAdmin()"); - + DOFAdmin *localAdmin = new DOFAdmin(this, lname); for (int i = 0; i < dim + 1; i++) - localAdmin->setNumberOfDOFs(i, lnDof[i]); + localAdmin->setNumberOfDofs(i, lnDof[i]); addDOFAdmin(localAdmin); @@ -612,7 +600,7 @@ namespace AMDiS { for (unsigned int i = 0; i < admin.size(); i++) { DOFAdmin *localAdmin = admin[i]; int n = localAdmin->getNumberOfDofs(position); - int n0 = localAdmin->getNumberOfPreDOFs(position); + int n0 = localAdmin->getNumberOfPreDofs(position); TEST_EXIT_DBG(n + n0 <= ndof) ("n = %d, n0 = %d too large: ndof = %d\n", n, n0, ndof); @@ -1221,7 +1209,7 @@ namespace AMDiS { Mesh testMesh(name, dim); testMesh.setElementDataPrototype(new LeafDataEstimatableVec(new LeafDataCoarsenableVec)); DOFAdmin *localAdmin = new DOFAdmin(&testMesh, admin[0]->getName()); - localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDofs()); + localAdmin->setNumberOfDofs(admin[0]->getNumberOfDofs()); testMesh.addDOFAdmin(localAdmin); MacroInfo *testMacroInfo = diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc index 0e5f5017..beb0c02d 100644 --- a/AMDiS/src/ProblemVec.cc +++ b/AMDiS/src/ProblemVec.cc @@ -45,7 +45,7 @@ namespace AMDiS { if (initFlag.isSet(CREATE_MESH) || (!adoptFlag.isSet(INIT_MESH) && (initFlag.isSet(INIT_SYSTEM) || initFlag.isSet(INIT_FE_SPACE)))) - createMesh(); + createMesh(); if (adoptProblem && (adoptFlag.isSet(INIT_MESH) || @@ -66,6 +66,10 @@ namespace AMDiS { componentMeshes[i] = componentMeshes[0]; } + + // If the problem adopts the mesh but creates an own FE space. + if (initFlag.isSet(INIT_FE_SPACE)) { + } } } @@ -304,6 +308,7 @@ namespace AMDiS { feSpaceMap[std::pair<Mesh*, int>(componentMeshes[i], degree)] = newFeSpace; feSpaces.push_back(newFeSpace); } + componentSpaces[i] = feSpaceMap[std::pair<Mesh*, int>(componentMeshes[i], degree)]; } diff --git a/AMDiS/src/Recovery.cc b/AMDiS/src/Recovery.cc index 27425a34..e262efc0 100644 --- a/AMDiS/src/Recovery.cc +++ b/AMDiS/src/Recovery.cc @@ -49,7 +49,7 @@ RecoveryStructure& RecoveryStructure::operator=(const RecoveryStructure& rhs) if (rhs.neighbors) { if (!neighbors) neighbors = new std::set<DegreeOfFreedom>; - *neighbors = *rhs.neighbors ; + *neighbors = *rhs.neighbors; } else { if (neighbors) { delete neighbors; @@ -371,7 +371,7 @@ void Recovery::compute_interior_sums(DOFVector<double> *uh, ElInfo *elInfo, void Recovery::compute_node_sums(DOFVector<double> *uh, ElInfo *elInfo, - RecoveryStructure *rec_struct, DimVec<int> preDOFs, + RecoveryStructure *rec_struct, DimVec<int> preDofs, int n_vertices, int n_edges, int n_faces) { FUNCNAME("Recovery::compute_sums()"); @@ -388,7 +388,7 @@ void Recovery::compute_node_sums(DOFVector<double> *uh, ElInfo *elInfo, for (int l = 0; l < n_vertices; l++) { // Computing contributions of vertex nodes - if (rec_struct->neighbors->insert(dof[l][preDOFs[VERTEX]]).second) { + if (rec_struct->neighbors->insert(dof[l][preDofs[VERTEX]]).second) { node = elInfo->getCoord(l); for (int i = 0; i < n_monomials; i++) { // Computing contributions to system matrix. @@ -407,7 +407,7 @@ void Recovery::compute_node_sums(DOFVector<double> *uh, ElInfo *elInfo, void Recovery::compute_sums_linear(DOFVector<double> *uh, ElInfo *elInfo, RecoveryStructure *rec_struct, - int vertex, DimVec<int> preDOFs, + int vertex, DimVec<int> preDofs, int n_vertices) { FUNCNAME("Recovery::compute_sums_linear()"); @@ -422,7 +422,7 @@ void Recovery::compute_sums_linear(DOFVector<double> *uh, ElInfo *elInfo, for (int l = 0; l < n_vertices; l++) { // Computing contributions of vertex nodes - DegreeOfFreedom k = dof[l][preDOFs[VERTEX]]; + DegreeOfFreedom k = dof[l][preDofs[VERTEX]]; if (rec_struct->neighbors->insert(k).second) { node = elInfo->getCoord(l); for (int i = 0; i < n_monomials; i++) { @@ -440,7 +440,7 @@ void Recovery::compute_sums_linear(DOFVector<double> *uh, ElInfo *elInfo, if (vertex > 1 && elInfo->getNeighbour(vertex)) { int oppVertex = elInfo->getOppVertex(vertex); - DegreeOfFreedom k = elInfo->getNeighbour(vertex)->getDof(oppVertex)[preDOFs[VERTEX]]; + DegreeOfFreedom k = elInfo->getNeighbour(vertex)->getDof(oppVertex)[preDofs[VERTEX]]; if (rec_struct->neighbors->insert(k).second) { node = elInfo->getOppCoord(vertex); @@ -479,7 +479,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, // Information from DOFAdmin. const DOFAdmin *admin = feSpace->getAdmin(); - DimVec<int> preDOFs = admin->getNumberOfPreDOFs(); + DimVec<int> preDofs = admin->getNumberOfPreDofs(); // Variables for storing temporary information. DimVec<DegreeOfFreedom> interior_vertices(dim); @@ -493,7 +493,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, DimVec<int> pre_dofs(dim, NO_INIT); if (!gradient) - pre_dofs = uh->getFeSpace()->getAdmin()->getNumberOfPreDOFs(); + pre_dofs = uh->getFeSpace()->getAdmin()->getNumberOfPreDofs(); // Variables for traversing the mesh. Flag fill_flag = @@ -514,7 +514,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, int n_neighbors = 0; // counting interior vertices of element for (int i = 0; i < n_vertices; i++) { - DegreeOfFreedom k = dof[i][preDOFs[VERTEX]]; + DegreeOfFreedom k = dof[i][preDofs[VERTEX]]; if (el_info->getBoundary(VERTEX, i) == INTERIOR) interior_vertices[n_neighbors++] = k; } @@ -523,7 +523,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, ("Each element should have a least one interior vertex!\n"); for (int i = 0; i < n_vertices; i++) { // Handling nodes on vertices. - DegreeOfFreedom k = dof[i][preDOFs[VERTEX]]; + DegreeOfFreedom k = dof[i][preDofs[VERTEX]]; // Setting world coordinates of node. if (!(*struct_vec)[k].coords) { @@ -579,7 +579,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, if (dim > 1) // Handling nodes on edges. for (int i = 0; i < n_edges; i++) for (int j = 0; j < (*nDOFs)[EDGE]; j++) { - DegreeOfFreedom k = dof[n_vertices+i][preDOFs[EDGE] + j]; + DegreeOfFreedom k = dof[n_vertices+i][preDofs[EDGE] + j]; if (!(*struct_vec)[k].coords) { // Setting world coordinates of node. @@ -595,7 +595,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, for (int m = 0; m < 2; m++) { int l = Global::getReferenceElement(dim)->getVertexOfEdge(i, m); if (el_info->getBoundary(VERTEX, l) == INTERIOR) - (*struct_vec)[k].neighbors->insert(dof[l][preDOFs[VERTEX]]); + (*struct_vec)[k].neighbors->insert(dof[l][preDofs[VERTEX]]); } else for (int m = 0; m < n_neighbors; m++) (*struct_vec)[k].neighbors->insert(interior_vertices[m]); @@ -607,7 +607,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, if (dim == 3) // Handling nodes on faces. for (int i = 0; i < n_faces; i++) for (int j = 0; j < (*nDOFs)[FACE]; j++) { - DegreeOfFreedom k = dof[n_vertices+n_edges+i][preDOFs[FACE] + j]; + DegreeOfFreedom k = dof[n_vertices+n_edges+i][preDofs[FACE] + j]; if (!(*struct_vec)[k].coords) { // Setting world coordinates of node. @@ -623,7 +623,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, for (int m = 0; m < 3; m++) { int l = Global::getReferenceElement(dim)->getVertexOfPosition(FACE, i, m); if (el_info->getBoundary(VERTEX, l) == INTERIOR) - (*struct_vec)[k].neighbors->insert(dof[l][preDOFs[VERTEX]]); + (*struct_vec)[k].neighbors->insert(dof[l][preDofs[VERTEX]]); } else for (int m = 0; m < n_neighbors; m++) @@ -635,7 +635,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, if ((*nDOFs)[CENTER]) // Handling nodes on center of element. for (int j = 0; j < (*nDOFs)[CENTER]; j++) { - DegreeOfFreedom k = dof[n_vertices+n_edges+n_faces][preDOFs[CENTER] + j]; + DegreeOfFreedom k = dof[n_vertices+n_edges+n_faces][preDofs[CENTER] + j]; // Setting world coordinates of node. el_info->coordToWorld(*basis_fcts->getCoords(n_count), coordinates); @@ -879,7 +879,7 @@ Recovery::recovery(DOFVector<double> *uh, int dim = mesh->getDim(); const BasisFunction *basFcts = fe_space->getBasisFcts(); DOFAdmin *admin = fe_space->getAdmin(); - int numPreDOFs = admin->getNumberOfPreDOFs(0); + int numPreDofs = admin->getNumberOfPreDofs(0); DimVec<double> bary(dim, DEFAULT_VALUE, (1.0 / (dim + 1.0))); WorldVector<double> barycenter; // For world coordinates at barycenter @@ -917,7 +917,7 @@ Recovery::recovery(DOFVector<double> *uh, } for (int i = 0; i < dim + 1; i++) { - DegreeOfFreedom dofIndex = dof[i][numPreDOFs]; + DegreeOfFreedom dofIndex = dof[i][numPreDofs]; (*result)[dofIndex] += grd * fAtBary * det; volume[dofIndex] += det; } diff --git a/AMDiS/src/io/DataCollector.cc b/AMDiS/src/io/DataCollector.cc index 1194027f..ce824dd9 100644 --- a/AMDiS/src/io/DataCollector.cc +++ b/AMDiS/src/io/DataCollector.cc @@ -42,7 +42,7 @@ namespace AMDiS { dofCoord = new DOFVector< std::list<WorldVector<double> > >(feSpace, "dof coords"); dim = mesh->getDim(); - nPreDofs = localAdmin->getNumberOfPreDOFs(VERTEX); + nPreDofs = localAdmin->getNumberOfPreDofs(VERTEX); } diff --git a/AMDiS/src/io/MacroReader.cc b/AMDiS/src/io/MacroReader.cc index c693f748..9ad90cf0 100644 --- a/AMDiS/src/io/MacroReader.cc +++ b/AMDiS/src/io/MacroReader.cc @@ -1346,9 +1346,9 @@ namespace AMDiS { int ndof = admin.getNumberOfDofs(VERTEX); if (ndof) { - int j0 = admin.getNumberOfPreDOFs(VERTEX); + int j0 = admin.getNumberOfPreDofs(VERTEX); TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(VERTEX)) - ("admin.getNumberOfPreDOFs(VERTEX) %d + nDOF %d > mesh->nDOF %d\n", + ("admin.getNumberOfPreDofs(VERTEX) %d + nDOF %d > mesh->nDOF %d\n", j0, ndof, mesh->getNumberOfDofs(VERTEX)); int i0 = mesh->getNode(VERTEX); for (int i = 0; i < mesh->getGeo(VERTEX); i++) { @@ -1370,10 +1370,10 @@ namespace AMDiS { if (mesh->getDim() > 1) { ndof = admin.getNumberOfDofs(EDGE); if (ndof) { - int j0 = admin.getNumberOfPreDOFs(EDGE); + int j0 = admin.getNumberOfPreDofs(EDGE); TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(EDGE)) - ("admin.getNumberOfPreDOFs(EDGE) %d + nDOF %d > mesh->nDOF %d\n", + ("admin.getNumberOfPreDofs(EDGE) %d + nDOF %d > mesh->nDOF %d\n", j0, ndof, mesh->getNumberOfDofs(EDGE)); int i0 = mesh->getNode(EDGE); @@ -1425,7 +1425,7 @@ namespace AMDiS { if (mesh->getDim() == 3) { ndof = admin.getNumberOfDofs(FACE); if (ndof) { - int j0 = admin.getNumberOfPreDOFs(FACE); + int j0 = admin.getNumberOfPreDofs(FACE); TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(FACE)) ("admin->n0_dof[FACE] %d + nDOF %d > mesh->nDOF %d\n", j0, ndof, mesh->getNumberOfDofs(FACE)); @@ -1457,9 +1457,9 @@ namespace AMDiS { if (ndof) { int i0 = mesh->getNode(CENTER); TEST(dof = el->getDof(i0))("no center dof???\n"); - int j0 = admin.getNumberOfPreDOFs(CENTER); + int j0 = admin.getNumberOfPreDofs(CENTER); TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(CENTER)) - ("admin.getNumberOfPreDOFs(CENTER) %d + nDOF %d > mesh->nDOF %d\n", + ("admin.getNumberOfPreDofs(CENTER) %d + nDOF %d > mesh->nDOF %d\n", j0, ndof, mesh->getNumberOfDofs(CENTER)); for (int j = 0; j < ndof; j++) { int jdof = dof[j0 + j]; -- GitLab