using bool for in/strict-in, and more unique-ptrs

This commit is contained in:
Joachim Schöberl 2020-10-16 10:14:50 +02:00
parent 4d2e4fea44
commit b841b1c57b
4 changed files with 98 additions and 86 deletions

View File

@ -1163,10 +1163,10 @@ namespace netgen
m2 = fac * grad; m2 = fac * grad;
// (*testout) << "hp = " << hp << ", m = " << m << ", m2 = " << m2 << endl; // (*testout) << "hp = " << hp << ", m = " << m << ", m2 = " << m2 << endl;
Solid * locsol2; // Solid * locsol2;
locsol -> TangentialSolid3 (hp, m, m2, locsol2, locsurfind2, ideps*size); auto locsol2 = locsol -> TangentialSolid3 (hp, m, m2, locsurfind2, ideps*size);
if (!locsol2) ok = 0; if (!locsol2) ok = 0;
delete locsol2; // delete locsol2;
if (ok) if (ok)

View File

@ -640,7 +640,7 @@ namespace netgen
unique_ptr<Solid> Solid :: TangentialSolid (const Point<3> & p, NgArray<int> & surfids, double eps) const unique_ptr<Solid> Solid :: TangentialSolid (const Point<3> & p, NgArray<int> & surfids, double eps) const
{ {
int in, strin; bool in, strin;
Solid * tansol = nullptr; Solid * tansol = nullptr;
RecTangentialSolid (p, tansol, surfids, in, strin, eps); RecTangentialSolid (p, tansol, surfids, in, strin, eps);
surfids.SetSize (0); surfids.SetSize (0);
@ -651,7 +651,7 @@ namespace netgen
void Solid :: RecTangentialSolid (const Point<3> & p, Solid *& tansol, NgArray<int> & surfids, void Solid :: RecTangentialSolid (const Point<3> & p, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const bool & in, bool & strin, double eps) const
{ {
tansol = NULL; tansol = NULL;
@ -673,7 +673,7 @@ namespace netgen
} }
case SECTION: case SECTION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialSolid (p, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid (p, tansol1, surfids, in1, strin1, eps);
@ -688,13 +688,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 && in2); in = in1 && in2;
strin = (strin1 && strin2); strin = strin1 && strin2;
break; break;
} }
case UNION: case UNION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1 = 0, * tansol2 = 0; Solid * tansol1 = 0, * tansol2 = 0;
s1 -> RecTangentialSolid (p, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid (p, tansol1, surfids, in1, strin1, eps);
@ -714,13 +714,13 @@ namespace netgen
delete tansol1; delete tansol1;
delete tansol2; delete tansol2;
} }
in = (in1 || in2); in = in1 || in2;
strin = (strin1 || strin2); strin = strin1 || strin2;
break; break;
} }
case SUB: case SUB:
{ {
int hin, hstrin; bool hin, hstrin;
Solid * tansol1; Solid * tansol1;
s1 -> RecTangentialSolid (p, tansol1, surfids, hin, hstrin, eps); s1 -> RecTangentialSolid (p, tansol1, surfids, hin, hstrin, eps);
@ -742,22 +742,24 @@ namespace netgen
void Solid :: TangentialSolid2 (const Point<3> & p, unique_ptr<Solid> Solid :: TangentialSolid2 (const Point<3> & p,
const Vec<3> & t, const Vec<3> & t,
Solid *& tansol, NgArray<int> & surfids, double eps) const NgArray<int> & surfids, double eps) const
{ {
int in, strin; Solid * tansol = nullptr;
bool in, strin;
surfids.SetSize (0); surfids.SetSize (0);
RecTangentialSolid2 (p, t, tansol, surfids, in, strin, eps); RecTangentialSolid2 (p, t, tansol, surfids, in, strin, eps);
if (tansol) if (tansol)
tansol -> GetTangentialSurfaceIndices2 (p, t, surfids, eps); tansol -> GetTangentialSurfaceIndices2 (p, t, surfids, eps);
return unique_ptr<Solid> (tansol);
} }
void Solid :: RecTangentialSolid2 (const Point<3> & p, const Vec<3> & t, void Solid :: RecTangentialSolid2 (const Point<3> & p, const Vec<3> & t,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const bool & in, bool & strin, double eps) const
{ {
tansol = NULL; tansol = nullptr;
switch (op) switch (op)
{ {
@ -776,8 +778,8 @@ namespace netgen
if (ist == DOES_INTERSECT) if (ist == DOES_INTERSECT)
ist = prim->VecInSolid (p, t, eps); ist = prim->VecInSolid (p, t, eps);
in = (ist == IS_INSIDE || ist == DOES_INTERSECT); in = (ist == IS_INSIDE) || (ist == DOES_INTERSECT);
strin = (ist == IS_INSIDE); strin = ist == IS_INSIDE;
if (ist == DOES_INTERSECT) if (ist == DOES_INTERSECT)
{ {
@ -788,7 +790,7 @@ namespace netgen
} }
case SECTION: case SECTION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, in1, strin1, eps);
@ -803,13 +805,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 && in2); in = in1 && in2;
strin = (strin1 && strin2); strin = strin1 && strin2;
break; break;
} }
case UNION: case UNION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, in1, strin1, eps);
@ -824,13 +826,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 || in2); in = in1 || in2;
strin = (strin1 || strin2); strin = strin1 || strin2;
break; break;
} }
case SUB: case SUB:
{ {
int hin, hstrin; bool hin, hstrin;
Solid * tansol1; Solid * tansol1;
s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, hin, hstrin, eps); s1 -> RecTangentialSolid2 (p, t, tansol1, surfids, hin, hstrin, eps);
@ -856,25 +858,28 @@ namespace netgen
void Solid :: TangentialSolid3 (const Point<3> & p, unique_ptr<Solid> Solid :: TangentialSolid3 (const Point<3> & p,
const Vec<3> & t, const Vec<3> & t2, const Vec<3> & t, const Vec<3> & t2,
Solid *& tansol, NgArray<int> & surfids, NgArray<int> & surfids,
double eps) const double eps) const
{ {
int in, strin; bool in, strin;
Solid * tansol = nullptr;
surfids.SetSize (0); surfids.SetSize (0);
RecTangentialSolid3 (p, t, t2, tansol, surfids, in, strin, eps); RecTangentialSolid3 (p, t, t2, tansol, surfids, in, strin, eps);
if (tansol) if (tansol)
tansol -> GetTangentialSurfaceIndices3 (p, t, t2, surfids, eps); tansol -> GetTangentialSurfaceIndices3 (p, t, t2, surfids, eps);
return unique_ptr<Solid>(tansol);
} }
void Solid :: RecTangentialSolid3 (const Point<3> & p, void Solid :: RecTangentialSolid3 (const Point<3> & p,
const Vec<3> & t, const Vec<3> & t2, const Vec<3> & t, const Vec<3> & t2,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const bool & in, bool & strin, double eps) const
{ {
tansol = NULL; tansol = nullptr;
switch (op) switch (op)
{ {
@ -884,8 +889,8 @@ namespace netgen
if (ist == DOES_INTERSECT) if (ist == DOES_INTERSECT)
ist = prim->VecInSolid3 (p, t, t2, eps); ist = prim->VecInSolid3 (p, t, t2, eps);
in = (ist == IS_INSIDE || ist == DOES_INTERSECT); in = (ist == IS_INSIDE) || (ist == DOES_INTERSECT);
strin = (ist == IS_INSIDE); strin = ist == IS_INSIDE;
if (ist == DOES_INTERSECT) if (ist == DOES_INTERSECT)
{ {
@ -896,7 +901,7 @@ namespace netgen
} }
case SECTION: case SECTION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, in1, strin1, eps);
@ -911,13 +916,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 && in2); in = in1 && in2;
strin = (strin1 && strin2); strin = strin1 && strin2;
break; break;
} }
case UNION: case UNION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, in1, strin1, eps);
@ -932,13 +937,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 || in2); in = in1 || in2;
strin = (strin1 || strin2); strin = strin1 || strin2;
break; break;
} }
case SUB: case SUB:
{ {
int hin, hstrin; bool hin, hstrin;
Solid * tansol1; Solid * tansol1;
s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, hin, hstrin, eps); s1 -> RecTangentialSolid3 (p, t, t2, tansol1, surfids, hin, hstrin, eps);
@ -967,12 +972,13 @@ namespace netgen
void Solid :: TangentialEdgeSolid (const Point<3> & p, unique_ptr<Solid> Solid :: TangentialEdgeSolid (const Point<3> & p,
const Vec<3> & t, const Vec<3> & t2, const Vec<3> & m, const Vec<3> & t, const Vec<3> & t2, const Vec<3> & m,
Solid *& tansol, NgArray<int> & surfids, NgArray<int> & surfids,
double eps) const double eps) const
{ {
int in, strin; Solid * tansol = nullptr;
bool in, strin;
surfids.SetSize (0); surfids.SetSize (0);
// *testout << "tangentialedgesolid,sol = " << (*this) << endl; // *testout << "tangentialedgesolid,sol = " << (*this) << endl;
@ -980,12 +986,14 @@ namespace netgen
if (tansol) if (tansol)
tansol -> RecGetTangentialEdgeSurfaceIndices (p, t, t2, m, surfids, eps); tansol -> RecGetTangentialEdgeSurfaceIndices (p, t, t2, m, surfids, eps);
return unique_ptr<Solid> (tansol);
} }
void Solid :: RecTangentialEdgeSolid (const Point<3> & p, void Solid :: RecTangentialEdgeSolid (const Point<3> & p,
const Vec<3> & t, const Vec<3> & t2, const Vec<3> & m, const Vec<3> & t, const Vec<3> & t2, const Vec<3> & m,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const bool & in, bool & strin, double eps) const
{ {
tansol = NULL; tansol = NULL;
@ -1007,8 +1015,8 @@ namespace netgen
// (*testout) << "ist2 = " << ist << endl; // (*testout) << "ist2 = " << ist << endl;
in = (ist == IS_INSIDE || ist == DOES_INTERSECT); in = (ist == IS_INSIDE) || (ist == DOES_INTERSECT);
strin = (ist == IS_INSIDE); strin = ist == IS_INSIDE;
if (ist == DOES_INTERSECT) if (ist == DOES_INTERSECT)
{ {
@ -1019,7 +1027,7 @@ namespace netgen
} }
case SECTION: case SECTION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, in1, strin1, eps);
@ -1034,13 +1042,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 && in2); in = in1 && in2;
strin = (strin1 && strin2); strin = strin1 && strin2;
break; break;
} }
case UNION: case UNION:
{ {
int in1, in2, strin1, strin2; bool in1, in2, strin1, strin2;
Solid * tansol1, * tansol2; Solid * tansol1, * tansol2;
s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, in1, strin1, eps); s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, in1, strin1, eps);
@ -1055,13 +1063,13 @@ namespace netgen
else if (tansol2) else if (tansol2)
tansol = tansol2; tansol = tansol2;
} }
in = (in1 || in2); in = in1 || in2;
strin = (strin1 || strin2); strin = strin1 || strin2;
break; break;
} }
case SUB: case SUB:
{ {
int hin, hstrin; bool hin, hstrin;
Solid * tansol1; Solid * tansol1;
s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, hin, hstrin, eps); s1 -> RecTangentialEdgeSolid (p, t, t2, m, tansol1, surfids, hin, hstrin, eps);
@ -1097,29 +1105,31 @@ namespace netgen
int Solid :: Edge (const Point<3> & p, const Vec<3> & v, double eps) const int Solid :: Edge (const Point<3> & p, const Vec<3> & v, double eps) const
{ {
int in, strin, faces; bool in, strin;
int faces;
RecEdge (p, v, in, strin, faces, eps); RecEdge (p, v, in, strin, faces, eps);
return faces >= 2; return faces >= 2;
} }
int Solid :: OnFace (const Point<3> & p, const Vec<3> & v, double eps) const int Solid :: OnFace (const Point<3> & p, const Vec<3> & v, double eps) const
{ {
int in, strin, faces; bool in, strin;
int faces;
RecEdge (p, v, in, strin, faces, eps); RecEdge (p, v, in, strin, faces, eps);
return faces >= 1; return faces >= 1;
} }
void Solid :: RecEdge (const Point<3> & p, const Vec<3> & v, void Solid :: RecEdge (const Point<3> & p, const Vec<3> & v,
int & in, int & strin, int & faces, double eps) const bool & in, bool & strin, int & faces, double eps) const
{ {
switch (op) switch (op)
{ {
case TERM: case TERM_REF: case TERM: case TERM_REF:
{ {
INSOLID_TYPE ist = prim->VecInSolid (p, v, eps); INSOLID_TYPE ist = prim->VecInSolid (p, v, eps);
in = (ist == IS_INSIDE || ist == DOES_INTERSECT); in = (ist == IS_INSIDE) || (ist == DOES_INTERSECT);
strin = (ist == IS_INSIDE); strin = ist == IS_INSIDE;
/* /*
in = VectorIn (p, v); in = VectorIn (p, v);
strin = VectorStrictIn (p, v); strin = VectorStrictIn (p, v);
@ -1145,7 +1155,8 @@ namespace netgen
} }
case SECTION: case SECTION:
{ {
int in1, in2, strin1, strin2, faces1, faces2; bool in1, in2, strin1, strin2;
int faces1, faces2;
s1 -> RecEdge (p, v, in1, strin1, faces1, eps); s1 -> RecEdge (p, v, in1, strin1, faces1, eps);
s2 -> RecEdge (p, v, in2, strin2, faces2, eps); s2 -> RecEdge (p, v, in2, strin2, faces2, eps);
@ -1159,7 +1170,8 @@ namespace netgen
} }
case UNION: case UNION:
{ {
int in1, in2, strin1, strin2, faces1, faces2; bool in1, in2, strin1, strin2;
int faces1, faces2;
s1 -> RecEdge (p, v, in1, strin1, faces1, eps); s1 -> RecEdge (p, v, in1, strin1, faces1, eps);
s2 -> RecEdge (p, v, in2, strin2, faces2, eps); s2 -> RecEdge (p, v, in2, strin2, faces2, eps);
@ -1173,7 +1185,7 @@ namespace netgen
} }
case SUB: case SUB:
{ {
int in1, strin1; bool in1, strin1;
s1 -> RecEdge (p, v, in1, strin1, faces, eps); s1 -> RecEdge (p, v, in1, strin1, faces, eps);
in = !strin1; in = !strin1;
strin = !in1; strin = !in1;

View File

@ -117,13 +117,13 @@ namespace netgen
unique_ptr<Solid> TangentialSolid (const Point<3> & p, NgArray<int> & surfids, double eps) const; unique_ptr<Solid> TangentialSolid (const Point<3> & p, NgArray<int> & surfids, double eps) const;
/// compute localization in point p tangential to vector t /// compute localization in point p tangential to vector t
void TangentialSolid2 (const Point<3> & p, const Vec<3> & t, unique_ptr<Solid> TangentialSolid2 (const Point<3> & p, const Vec<3> & t,
Solid *& tansol, NgArray<int> & surfids, double eps) const; NgArray<int> & surfids, double eps) const;
/** compute localization in point p, with second order approximation to edge /** compute localization in point p, with second order approximation to edge
p + s t + s*s/2 t2 **/ p + s t + s*s/2 t2 **/
void TangentialSolid3 (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2, unique_ptr<Solid> TangentialSolid3 (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
Solid *& tansol, NgArray<int> & surfids, double eps) const; NgArray<int> & surfids, double eps) const;
@ -133,9 +133,9 @@ namespace netgen
p + s t + s*s/2 t2 + r m p + s t + s*s/2 t2 + r m
with first order with first order
**/ **/
void TangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2, unique_ptr<Solid> TangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
const Vec<3> & m, const Vec<3> & m,
Solid *& tansol, NgArray<int> & surfids, double eps) const; NgArray<int> & surfids, double eps) const;
void CalcOnePrimitiveSpecialPoints (const Box<3> & box, NgArray<Point<3> > & pts) const; void CalcOnePrimitiveSpecialPoints (const Box<3> & box, NgArray<Point<3> > & pts) const;
@ -180,24 +180,24 @@ namespace netgen
int & in, int & strin) const; int & in, int & strin) const;
/// ///
void RecTangentialSolid (const Point<3> & p, Solid *& tansol, NgArray<int> & surfids, void RecTangentialSolid (const Point<3> & p, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const; bool & in, bool & strin, double eps) const;
void RecTangentialSolid2 (const Point<3> & p, const Vec<3> & vec, void RecTangentialSolid2 (const Point<3> & p, const Vec<3> & vec,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const; bool & in, bool & strin, double eps) const;
/// ///
void RecTangentialSolid3 (const Point<3> & p, const Vec<3> & vec,const Vec<3> & vec2, void RecTangentialSolid3 (const Point<3> & p, const Vec<3> & vec,const Vec<3> & vec2,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const; bool & in, bool & strin, double eps) const;
/// ///
void RecTangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2, void RecTangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
const Vec<3> & m, const Vec<3> & m,
Solid *& tansol, NgArray<int> & surfids, Solid *& tansol, NgArray<int> & surfids,
int & in, int & strin, double eps) const; bool & in, bool & strin, double eps) const;
/// ///
void RecEdge (const Point<3> & p, const Vec<3> & v, void RecEdge (const Point<3> & p, const Vec<3> & v,
int & in, int & strin, int & faces, double eps) const; bool & in, bool & strin, int & faces, double eps) const;
/// ///
void CalcSurfaceInverseRec (int inv); void CalcSurfaceInverseRec (int inv);
/// ///

View File

@ -1967,8 +1967,8 @@ namespace netgen
(locsol, p, t, surfind2); (locsol, p, t, surfind2);
*/ */
Solid * locsol2; // Solid * locsol2;
locsol -> TangentialSolid3 (p, t, t2, locsol2, surfind2, ideps*geomsize); auto locsol2 = locsol -> TangentialSolid3 (p, t, t2, surfind2, ideps*geomsize);
if (!locsol2) continue; if (!locsol2) continue;
// locsol2 -> GetTangentialSurfaceIndices3 (p, t, t2, surfind2, 1e-9*geomsize); // locsol2 -> GetTangentialSurfaceIndices3 (p, t, t2, surfind2, 1e-9*geomsize);
@ -2014,10 +2014,10 @@ namespace netgen
Vec<3> m2 = -m1; Vec<3> m2 = -m1;
bool isface1 = 0, isface2 = 0; bool isface1 = 0, isface2 = 0;
Solid * locsol3; // Solid * locsol3;
// locsol2 -> TangentialSolid2 (p, m1, locsol3, surfind3, 1e-9*geomsize); // locsol2 -> TangentialSolid2 (p, m1, locsol3, surfind3, 1e-9*geomsize);
locsol -> TangentialEdgeSolid (p, t, t2, m1, locsol3, surfind3, ideps*geomsize); auto locsol3 = locsol -> TangentialEdgeSolid (p, t, t2, m1, surfind3, ideps*geomsize);
#ifdef DEVELOP #ifdef DEVELOP
(*testout) << "m1 = " << m1 << ", surfind3 = " << surfind3 << endl; (*testout) << "m1 = " << m1 << ", surfind3 = " << surfind3 << endl;
#endif #endif
@ -2025,10 +2025,10 @@ namespace netgen
if (surfind3.Contains(surfind2[l])) if (surfind3.Contains(surfind2[l]))
isface1 = 1; isface1 = 1;
delete locsol3; // delete locsol3;
// locsol2 -> TangentialSolid2 (p, m2, locsol3, surfind3, 1e-9*geomsize); // locsol2 -> TangentialSolid2 (p, m2, locsol3, surfind3, 1e-9*geomsize);
locsol -> TangentialEdgeSolid (p, t, t2, m2, locsol3, surfind3, ideps*geomsize); locsol3 = locsol -> TangentialEdgeSolid (p, t, t2, m2, surfind3, ideps*geomsize);
#ifdef DEVELOP #ifdef DEVELOP
(*testout) << "m2 = " << m2 << ", surfind3 = " << surfind3 << endl; (*testout) << "m2 = " << m2 << ", surfind3 = " << surfind3 << endl;
#endif #endif
@ -2038,7 +2038,7 @@ namespace netgen
if (surfind3.Contains(surfind2[l])) if (surfind3.Contains(surfind2[l]))
isface2 = 1; isface2 = 1;
delete locsol3; // delete locsol3;
if (isface1 != isface2) if (isface1 != isface2)
cnt_tang_faces++; cnt_tang_faces++;
@ -2051,7 +2051,7 @@ namespace netgen
if (cnt_tang_faces < 1) if (cnt_tang_faces < 1)
ok = false; ok = false;
delete locsol2; // delete locsol2;
if (!ok) continue; if (!ok) continue;
} }