diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index f9fbae1c18cfa704b4e78f239938d89ab2ef9851..799edb3cb4b344f695484a9e71aa3cf370b819fc 100644 --- a/AMDiS/src/DOFVector.cc +++ b/AMDiS/src/DOFVector.cc @@ -555,6 +555,7 @@ namespace AMDiS { } else { if (!result) { result = NEW WorldVector<DOFVector<double>*>; + result->set(NULL); } for (int i = 0; i < dow; i++) { @@ -586,8 +587,9 @@ namespace AMDiS { numNodes += numPositionNodes; } - TEST_EXIT_DBG(numNodes == mesh->getNumberOfNodes()) - ("invalid number of nodes\n"); +// TEST_EXIT_DBG(numNodes == mesh->getNumberOfNodes()) +// ("invalid number of nodes\n"); + TEST_EXIT_DBG(numDOFs == basFcts->getNumber()) ("number of dofs != number of basis functions\n"); @@ -598,7 +600,7 @@ namespace AMDiS { // traverse mesh std::vector<bool> visited(getUsedSize(), false); TraverseStack stack; - Flag fillFlag = Mesh::CALL_LEAF_EL | Mesh::FILL_GRD_LAMBDA; + Flag fillFlag = Mesh::CALL_LEAF_EL | Mesh::FILL_GRD_LAMBDA | Mesh::FILL_COORDS; ElInfo *elInfo = stack.traverseFirst(mesh, -1, fillFlag); WorldVector<double> grd; @@ -614,11 +616,10 @@ namespace AMDiS { DegreeOfFreedom dofIndex = dof[i][numNodePreDOFs[localDOFNr] + j]; if (!visited[dofIndex]) { - basFcts->evalGrdUh(*(bary[localDOFNr]), grdLambda, - localUh, &grd); + basFcts->evalGrdUh(*(bary[localDOFNr]), grdLambda, localUh, &grd); for (int k = 0; k < dow; k++) { - (*result)[k][dofIndex] = grd[k]; + (*(*result)[k])[dofIndex] = grd[k]; } visited[dofIndex] = true;