Commit 8f323098 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

* Solved bug which causes infinte refinements at boundaries with periodic boundary conditions

parent 299ccf0d
...@@ -134,8 +134,16 @@ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \ ...@@ -134,8 +134,16 @@ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \ $(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \
$(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \ $(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \
$(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \ $(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \
$(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh $(SOURCE_DIR)/MemoryManager.h $(SOURCE_DIR)/Mesh.h $(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh $(SOURCE_DIR)/OEMSolver.h \ $(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \
$(SOURCE_DIR)/OEMSolver.hh $(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh $(SOURCE_DIR)/Parameters.h $(SOURCE_DIR)/Parametric.h $(SOURCE_DIR)/Preconditioner.h \ $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \
$(SOURCE_DIR)/MemoryManager.h \
$(SOURCE_DIR)/Mesh.h \
$(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh \
$(SOURCE_DIR)/OEMSolver.h $(SOURCE_DIR)/OEMSolver.hh \
$(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh \
$(SOURCE_DIR)/Parameters.h \
$(SOURCE_DIR)/Parametric.h \
$(SOURCE_DIR)/Preconditioner.h \
$(SOURCE_DIR)/Quadrature.h \ $(SOURCE_DIR)/Quadrature.h \
$(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \ $(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \
$(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ $(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \
......
...@@ -548,8 +548,16 @@ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \ ...@@ -548,8 +548,16 @@ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \ $(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \
$(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \ $(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \
$(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \ $(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \
$(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh $(SOURCE_DIR)/MemoryManager.h $(SOURCE_DIR)/Mesh.h $(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh $(SOURCE_DIR)/OEMSolver.h \ $(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \
$(SOURCE_DIR)/OEMSolver.hh $(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh $(SOURCE_DIR)/Parameters.h $(SOURCE_DIR)/Parametric.h $(SOURCE_DIR)/Preconditioner.h \ $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \
$(SOURCE_DIR)/MemoryManager.h \
$(SOURCE_DIR)/Mesh.h \
$(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh \
$(SOURCE_DIR)/OEMSolver.h $(SOURCE_DIR)/OEMSolver.hh \
$(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh \
$(SOURCE_DIR)/Parameters.h \
$(SOURCE_DIR)/Parametric.h \
$(SOURCE_DIR)/Preconditioner.h \
$(SOURCE_DIR)/Quadrature.h \ $(SOURCE_DIR)/Quadrature.h \
$(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \ $(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \
$(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ $(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \
......
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
#include "SubElInfo.h" #include "SubElInfo.h"
#include "SubPolytope.h" #include "SubPolytope.h"
bool bool SubPolytope::checkIntPoints()
SubPolytope::checkIntPoints()
{ {
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// //
...@@ -15,13 +14,14 @@ SubPolytope::checkIntPoints() ...@@ -15,13 +14,14 @@ SubPolytope::checkIntPoints()
// false - no // false - no
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
int i,j;
int zeroCounter; int zeroCounter;
for (i = 0; i < numIntPoints; i++) { for (int i = 0; i < numIntPoints; i++) {
zeroCounter = 0; zeroCounter = 0;
for (j = 0; j < dim+1; j++) { for (int j = 0; j < dim+1; j++) {
if ( fabs((*intPoints)[i][j]) <= 1.e-15 ) { zeroCounter++; } if (fabs((*intPoints)[i][j]) <= 1.e-15 ) {
zeroCounter++;
}
} }
/** /**
...@@ -29,21 +29,27 @@ SubPolytope::checkIntPoints() ...@@ -29,21 +29,27 @@ SubPolytope::checkIntPoints()
* *
* "Inner" points on edges aren't equal to 0.0 in any component. * "Inner" points on edges aren't equal to 0.0 in any component.
*/ */
if ( dim == 1 && zeroCounter != 0 ) { return false; } if (dim == 1 && zeroCounter != 0 ) {
return false;
}
/** /**
* Dimension 2 * Dimension 2
* *
* "Inner" points on edges are equal to 0.0 in exactly 1 component. * "Inner" points on edges are equal to 0.0 in exactly 1 component.
*/ */
if ( dim == 2 && zeroCounter != 1 ) { return false; } if (dim == 2 && zeroCounter != 1) {
return false;
}
/** /**
* Dimension 3 * Dimension 3
* *
* "Inner" points on edges are equal to 0.0 in exactly 2 components. * "Inner" points on edges are equal to 0.0 in exactly 2 components.
*/ */
if ( dim == 3 && zeroCounter != 2 ) { return false; } if (dim == 3 && zeroCounter != 2) {
return false;
}
} }
return true; return true;
...@@ -57,7 +63,7 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_, ...@@ -57,7 +63,7 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_,
intPoints(intPoints_), intPoints(intPoints_),
numIntPoints(numIntPoints_) numIntPoints(numIntPoints_)
{ {
FUNCNAME("SubPolytope::SubPolytope"); FUNCNAME("SubPolytope::SubPolytope()");
dim = (*intPoints_)[0].getSize() - 1; dim = (*intPoints_)[0].getSize() - 1;
...@@ -87,8 +93,7 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_, ...@@ -87,8 +93,7 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_,
case 3: case 3:
if (numIntPoints == 3) { if (numIntPoints == 3) {
createSubElementPolytopeIsSubElement2D3D(); createSubElementPolytopeIsSubElement2D3D();
} } else {
else {
createSubElementsForPolytope3D(indexElVertInPol_); createSubElementsForPolytope3D(indexElVertInPol_);
} }
break; break;
...@@ -98,8 +103,8 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_, ...@@ -98,8 +103,8 @@ SubPolytope::SubPolytope(const ElInfo *elInfo_,
} }
} }
void
SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol) void SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol)
{ {
//************************************************************************** //**************************************************************************
// The intersection of the one-dimensional element (interval) divides // The intersection of the one-dimensional element (interval) divides
...@@ -107,7 +112,7 @@ SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol) ...@@ -107,7 +112,7 @@ SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol)
// subelement to take. // subelement to take.
//************************************************************************** //**************************************************************************
FUNCNAME("SubPolytope::createSubElementPolytopeIsSubElement1D"); FUNCNAME("SubPolytope::createSubElementPolytopeIsSubElement1D()");
TEST_EXIT(dim == 1 && numIntPoints == 1)("invalid call of this routine\n"); TEST_EXIT(dim == 1 && numIntPoints == 1)("invalid call of this routine\n");
...@@ -158,8 +163,7 @@ SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol) ...@@ -158,8 +163,7 @@ SubPolytope::createSubElementPolytopeIsSubElement1D(int indexElVertInPol)
} }
void void SubPolytope::createSubElementPolytopeIsSubElement2D3D()
SubPolytope::createSubElementPolytopeIsSubElement2D3D()
{ {
//************************************************************************** //**************************************************************************
// The intersection with element produced dim intersection points. // The intersection with element produced dim intersection points.
...@@ -176,7 +180,7 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D() ...@@ -176,7 +180,7 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D()
// components. // components.
//************************************************************************** //**************************************************************************
FUNCNAME("SubPolytope::createSubElementPolytopeIsSubElement2D3D"); FUNCNAME("SubPolytope::createSubElementPolytopeIsSubElement2D3D()");
TEST_EXIT((dim == 2 && numIntPoints == 2) || TEST_EXIT((dim == 2 && numIntPoints == 2) ||
(dim == 3 && numIntPoints == 3)) (dim == 3 && numIntPoints == 3))
...@@ -190,10 +194,11 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D() ...@@ -190,10 +194,11 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D()
* Get the vertex which - with the intersection points intPoints - forms * Get the vertex which - with the intersection points intPoints - forms
* a subelement of element. * a subelement of element.
*/ */
int i,j; for (int i = 0; i < numIntPoints; i++) {
for (i = 0; i < numIntPoints; i++) { for (int j = 0; j < dim+1; j++) {
for (j = 0; j < dim+1; j++) { if ( fabs((*intPoints)[i][j]) <= 1.e-15 ) {
if ( fabs((*intPoints)[i][j]) <= 1.e-15 ) { vertex[j] = 0.0; }; vertex[j] = 0.0;
};
} }
} }
...@@ -206,7 +211,7 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D() ...@@ -206,7 +211,7 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D()
* not to be an intersection point. * not to be an intersection point.
*/ */
(*subElVertices)[0] = vertex; (*subElVertices)[0] = vertex;
for (i = 0; i < numIntPoints; i++) { for (int i = 0; i < numIntPoints; i++) {
(*subElVertices)[i+1] = (*intPoints)[i]; (*subElVertices)[i+1] = (*intPoints)[i];
} }
...@@ -222,22 +227,21 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D() ...@@ -222,22 +227,21 @@ SubPolytope::createSubElementPolytopeIsSubElement2D3D()
DELETE subElVertices; DELETE subElVertices;
} }
int
SubPolytope::getIndexSecondFaceIntPoint0(int indexFirstFace, int dim)
{
int i;
for (i = 0; i < dim+1; i++) { int SubPolytope::getIndexSecondFaceIntPoint0(int indexFirstFace, int dim)
{
for (int i = 0; i < dim+1; i++) {
if ( fabs((*intPoints)[0][i]) <= 1.e-15 && i != indexFirstFace ) { if ( fabs((*intPoints)[0][i]) <= 1.e-15 && i != indexFirstFace ) {
return i; return i;
} }
} }
ERROR_EXIT("couldn't determine the second face for IntPoint0\n"); ERROR_EXIT("couldn't determine the second face for IntPoint0\n");
return -1; return -1;
} }
void
SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) void SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
{ {
//************************************************************************** //**************************************************************************
// The intersection with element produced four intersection points. Thus the // The intersection with element produced four intersection points. Thus the
...@@ -292,14 +296,13 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -292,14 +296,13 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
int indexEdge[2]; // For a vertex lying on an edge indexEdge int indexEdge[2]; // For a vertex lying on an edge indexEdge
// stores the indices of the two barycentric // stores the indices of the two barycentric
// coordinates which are not equal to zero. // coordinates which are not equal to zero.
int indexA; int indexA = 0;
int indexB; int indexB = 0;
int indexS_0; int indexS_0 = 0;
int indexS_1; int indexS_1 = 0;
int indexS_2; int indexS_2 = 0;
int indexS_3; int indexS_3 = 0;
int indexSecondFaceIntPoint0; int indexSecondFaceIntPoint0 = 0;
int i,j,k;
/** /**
* Get the second vertex of element lying in subpolytope. * Get the second vertex of element lying in subpolytope.
...@@ -312,10 +315,10 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -312,10 +315,10 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
*/ */
// Get the edges including the intersection points. // Get the edges including the intersection points.
for (i = 0; i < numIntPoints; i++) { for (int i = 0; i < numIntPoints; i++) {
k = 0; int k = 0;
for (j = 0; j < dim+1; j++) { for (int j = 0; j < dim+1; j++) {
if ( fabs((*intPoints)[i][j]) > 1.e-15 ) { if (fabs((*intPoints)[i][j]) > 1.e-15 ) {
indexEdge[k] = j; indexEdge[k] = j;
k++; k++;
} }
...@@ -327,9 +330,9 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -327,9 +330,9 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
// Get the vertex of element adjacent with indexElVertInPol1 whose // Get the vertex of element adjacent with indexElVertInPol1 whose
// common edge with indexElVertInPol1 doesn't contain an // common edge with indexElVertInPol1 doesn't contain an
// intersection point, and store it in indexElVertInPol2. // intersection point, and store it in indexElVertInPol2.
for (i = 0; i < dim+1; i++) { for (int i = 0; i < dim+1; i++) {
if ( intPointOnEdge[indexElVertInPol1][i] == false && if (intPointOnEdge[indexElVertInPol1][i] == false &&
i != indexElVertInPol1 ) { i != indexElVertInPol1 ) {
indexElVertInPol2 = i; indexElVertInPol2 = i;
break; break;
} }
...@@ -343,23 +346,21 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -343,23 +346,21 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
* face opposite to A. * face opposite to A.
*/ */
if ( fabs((*intPoints)[0][indexElVertInPol1]) <= 1.e-15 ) { if (fabs((*intPoints)[0][indexElVertInPol1]) <= 1.e-15) {
// (*intPoints)[0] lies in the face opposite to vertex // (*intPoints)[0] lies in the face opposite to vertex
// /ref indexElVertInPol1. // /ref indexElVertInPol1.
indexA = indexElVertInPol2; indexA = indexElVertInPol2;
indexB = indexElVertInPol1; indexB = indexElVertInPol1;
} } else if (fabs((*intPoints)[0][indexElVertInPol2]) <= 1.e-15) {
else if ( fabs((*intPoints)[0][indexElVertInPol2]) <= 1.e-15 ) {
// (*intPoints)[0] lies in the face opposite to vertex // (*intPoints)[0] lies in the face opposite to vertex
// /ref indexElVertInPol2. // /ref indexElVertInPol2.
indexA = indexElVertInPol1; indexA = indexElVertInPol1;
indexB = indexElVertInPol2; indexB = indexElVertInPol2;
} } else {
else {
ERROR_EXIT("couldn't determine A and B\n"); ERROR_EXIT("couldn't determine A and B\n");
} }
...@@ -370,7 +371,7 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -370,7 +371,7 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
// (*intPoints)[0] is a neighbour of A (A has been constructed this way). // (*intPoints)[0] is a neighbour of A (A has been constructed this way).
indexS_0 = 0; indexS_0 = 0;
if ( fabs((*intPoints)[1][indexB]) <= 1.e-15 ) { if (fabs((*intPoints)[1][indexB]) <= 1.e-15) {
// (*intPoints)[1] lies in the face opposite to B, thus is a neighbour // (*intPoints)[1] lies in the face opposite to B, thus is a neighbour
// of A. // of A.
...@@ -379,14 +380,13 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -379,14 +380,13 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
indexSecondFaceIntPoint0 = getIndexSecondFaceIntPoint0(indexB, dim); indexSecondFaceIntPoint0 = getIndexSecondFaceIntPoint0(indexB, dim);
if ( fabs((*intPoints)[2][indexSecondFaceIntPoint0]) <= 1.e-15 ) { if (fabs((*intPoints)[2][indexSecondFaceIntPoint0]) <= 1.e-15) {
// (*intPoints)[2] is neighbour of (*intPoints)[0] // (*intPoints)[2] is neighbour of (*intPoints)[0]
indexS_2 = 3; indexS_2 = 3;
indexS_3 = 2; indexS_3 = 2;
} } else {
else {
// (*intPoints)[2] is opposite to (*intPoints)[0] in the intersection // (*intPoints)[2] is opposite to (*intPoints)[0] in the intersection
// plane // plane
...@@ -394,28 +394,26 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -394,28 +394,26 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
indexS_2 = 2; indexS_2 = 2;
indexS_3 = 3; indexS_3 = 3;
} }
} } else if (fabs((*intPoints)[1][indexA]) <= 1.e-15) {
else if ( fabs((*intPoints)[1][indexA]) <= 1.e-15 ) {
// (*intPoints)[1] lies in the face opposite to A // (*intPoints)[1] lies in the face opposite to A
indexSecondFaceIntPoint0 = getIndexSecondFaceIntPoint0(indexB, dim); indexSecondFaceIntPoint0 = getIndexSecondFaceIntPoint0(indexB, dim);
if ( fabs((*intPoints)[1][indexSecondFaceIntPoint0]) <= 1.e-15 ) { if (fabs((*intPoints)[1][indexSecondFaceIntPoint0]) <= 1.e-15) {
// (*intPoints)[1] is neighbour of (*intPoints)[0], but isn't // (*intPoints)[1] is neighbour of (*intPoints)[0], but isn't
// neighbour of A // neighbour of A
indexS_3 = 1; indexS_3 = 1;
if ( fabs((*intPoints)[2][indexB]) <= 1.e-15 ) { if (fabs((*intPoints)[2][indexB]) <= 1.e-15) {
// (*intPoints)[2] is neighbour of (*intPoints)[0] and neighbour of A // (*intPoints)[2] is neighbour of (*intPoints)[0] and neighbour of A
indexS_1 = 2; indexS_1 = 2;
indexS_2 = 3; indexS_2 = 3;
} } else {
else {
// (*intPoints)[2] is opposite to (*intPoints)[0] in the intersection // (*intPoints)[2] is opposite to (*intPoints)[0] in the intersection
// plane // plane
...@@ -423,22 +421,20 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -423,22 +421,20 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
indexS_1 = 3; indexS_1 = 3;
indexS_2 = 2; indexS_2 = 2;
} }
} } else {
else {
// (*intPoints)[1] isn't neighbour of (*intPoints)[0], thus lies opposite // (*intPoints)[1] isn't neighbour of (*intPoints)[0], thus lies opposite
// to (*intPoints)[0] in the intersection plane // to (*intPoints)[0] in the intersection plane
indexS_2 = 1; indexS_2 = 1;
if ( fabs((*intPoints)[2][indexB]) <= 1.e-15 ) { if (fabs((*intPoints)[2][indexB]) <= 1.e-15) {
// (*intPoints)[2] is neighbour of A // (*intPoints)[2] is neighbour of A
indexS_1 = 2; indexS_1 = 2;
indexS_3 = 3; indexS_3 = 3;
} } else {
else {
// (*intPoints)[2] isn't neighbour of A // (*intPoints)[2] isn't neighbour of A
...@@ -446,8 +442,7 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1) ...@@ -446,8 +442,7 @@ SubPolytope::createSubElementsForPolytope3D(int indexElVertInPol1)
indexS_3 = 2; indexS_3 = 2;
} }
} }
} } else {
else {
ERROR_EXIT("IntPoint1 isn't either part of the face opposite to A nor part of the face opposite to B\n"); ERROR_EXIT("IntPoint1 isn't either part of the face opposite to A nor part of the face opposite to B\n");
} }
......
...@@ -93,7 +93,9 @@ namespace AMDiS { ...@@ -93,7 +93,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref degree_. * Returns \ref degree_.
*/ */
inline int getDegree() const { return degree_; }; inline int getDegree() const {
return degree_;
};
/** \brief /** \brief
* Deligates the evaluation to overriden method f. * Deligates the evaluation to overriden method f.
...@@ -132,7 +134,9 @@ namespace AMDiS { ...@@ -132,7 +134,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref degree_. * Returns \ref degree_.
*/ */
inline int getDegree() const { return degree_; }; inline int getDegree() const {
return degree_;
};
/** \brief /** \brief
* function evaluation. * function evaluation.
...@@ -174,7 +178,9 @@ namespace AMDiS { ...@@ -174,7 +178,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref degree_. * Returns \ref degree_.
*/ */
inline int getDegree() const { return degree_; }; inline int getDegree() const {
return degree_;
};
/** \brief /** \brief
* function evaluation. * function evaluation.
......
...@@ -69,7 +69,9 @@ namespace AMDiS { ...@@ -69,7 +69,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref name_ * Returns \ref name_
*/ */
inline const ::std::string& getName() const { return name_; }; inline const ::std::string& getName() const {
return name_;
};
/** \brief /** \brief
* Returns \ref problemIteration_ * Returns \ref problemIteration_
...@@ -85,7 +87,9 @@ namespace AMDiS { ...@@ -85,7 +87,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref adaptInfo_ * Returns \ref adaptInfo_
*/ */
inline AdaptInfo *getAdaptInfo() { return adaptInfo_; }; inline AdaptInfo *getAdaptInfo() {
return adaptInfo_;
};
/** \brief /** \brief
* Returns \ref problemTime_ * Returns \ref problemTime_
...@@ -101,7 +105,9 @@ namespace AMDiS { ...@@ -101,7 +105,9 @@ namespace AMDiS {
/** \brief /** \brief
* Returns \ref initialAdaptInfo_ * Returns \ref initialAdaptInfo_
*/ */
inline AdaptInfo *getInitialAdaptInfo() { return initialAdaptInfo_; }; inline AdaptInfo *getInitialAdaptInfo() {
return initialAdaptInfo_;
};