mirror of
https://github.com/NGSolve/netgen.git
synced 2024-11-11 16:49:16 +05:00
start modernizing delaunay
This commit is contained in:
parent
1321fcf3f3
commit
cc732689c2
@ -270,7 +270,8 @@ namespace netgen
|
|||||||
for (int i = 0; i < D; i++)
|
for (int i = 0; i < D; i++)
|
||||||
{
|
{
|
||||||
if (p(i) < pmin(i)) pmin(i) = p(i);
|
if (p(i) < pmin(i)) pmin(i) = p(i);
|
||||||
else if (p(i) > pmax(i)) pmax(i) = p(i);
|
/* else */ if (p(i) > pmax(i)) pmax(i) = p(i);
|
||||||
|
// optimization invalid for empty-box !
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,6 +233,7 @@ public:
|
|||||||
///
|
///
|
||||||
const MiniElement2d & GetFace (int i) const
|
const MiniElement2d & GetFace (int i) const
|
||||||
{ return faces.Get(i).Face(); }
|
{ return faces.Get(i).Face(); }
|
||||||
|
const auto & Faces() const { return faces; }
|
||||||
///
|
///
|
||||||
void Print () const;
|
void Print () const;
|
||||||
///
|
///
|
||||||
|
@ -41,8 +41,8 @@ namespace netgen
|
|||||||
PointIndex & operator[] (int i) { return pnums[i]; }
|
PointIndex & operator[] (int i) { return pnums[i]; }
|
||||||
PointIndex operator[] (int i) const { return pnums[i]; }
|
PointIndex operator[] (int i) const { return pnums[i]; }
|
||||||
|
|
||||||
int & NB1(int i) { return nb[i-1]; }
|
// int & NB1(int i) { return nb[i-1]; }
|
||||||
int NB1(int i) const { return nb[i-1]; }
|
// int NB1(int i) const { return nb[i-1]; }
|
||||||
|
|
||||||
int & NB(int i) { return nb[i]; }
|
int & NB(int i) { return nb[i]; }
|
||||||
int NB(int i) const { return nb[i]; }
|
int NB(int i) const { return nb[i]; }
|
||||||
@ -57,35 +57,38 @@ namespace netgen
|
|||||||
return i;
|
return i;
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void GetFace1 (int i, INDEX_3 & face) const
|
void GetFace1 (int i, INDEX_3 & face) const
|
||||||
{
|
{
|
||||||
face.I(1) = pnums[deltetfaces[i-1][0]];
|
face.I(1) = pnums[deltetfaces[i-1][0]];
|
||||||
face.I(2) = pnums[deltetfaces[i-1][1]];
|
face.I(2) = pnums[deltetfaces[i-1][1]];
|
||||||
face.I(3) = pnums[deltetfaces[i-1][2]];
|
face.I(3) = pnums[deltetfaces[i-1][2]];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
void GetFace (int i, INDEX_3 & face) const
|
void GetFace (int i, INDEX_3 & face) const
|
||||||
{
|
{
|
||||||
face.I(1) = pnums[deltetfaces[i][0]];
|
face.I(1) = pnums[deltetfaces[i][0]];
|
||||||
face.I(2) = pnums[deltetfaces[i][1]];
|
face.I(2) = pnums[deltetfaces[i][1]];
|
||||||
face.I(3) = pnums[deltetfaces[i][2]];
|
face.I(3) = pnums[deltetfaces[i][2]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
INDEX_3 GetFace1 (int i) const
|
INDEX_3 GetFace1 (int i) const
|
||||||
{
|
{
|
||||||
return INDEX_3 (pnums[deltetfaces[i-1][0]],
|
return INDEX_3 (pnums[deltetfaces[i-1][0]],
|
||||||
pnums[deltetfaces[i-1][1]],
|
pnums[deltetfaces[i-1][1]],
|
||||||
pnums[deltetfaces[i-1][2]]);
|
pnums[deltetfaces[i-1][2]]);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
INDEX_3 GetFace (int i) const
|
INDEX_3 GetFace (int i) const
|
||||||
{
|
{
|
||||||
return INDEX_3 (pnums[deltetfaces[i][0]],
|
return INDEX_3 (pnums[deltetfaces[i][0]],
|
||||||
pnums[deltetfaces[i][1]],
|
pnums[deltetfaces[i][1]],
|
||||||
pnums[deltetfaces[i][2]]);
|
pnums[deltetfaces[i][2]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void GetFace1 (int i, Element2d & face) const
|
void GetFace1 (int i, Element2d & face) const
|
||||||
{
|
{
|
||||||
// face.SetType(TRIG);
|
// face.SetType(TRIG);
|
||||||
@ -93,6 +96,15 @@ namespace netgen
|
|||||||
face[1] = pnums[deltetfaces[i-1][1]];
|
face[1] = pnums[deltetfaces[i-1][1]];
|
||||||
face[2] = pnums[deltetfaces[i-1][2]];
|
face[2] = pnums[deltetfaces[i-1][2]];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
void GetFace (int i, Element2d & face) const
|
||||||
|
{
|
||||||
|
// face.SetType(TRIG);
|
||||||
|
face[0] = pnums[deltetfaces[i][0]];
|
||||||
|
face[1] = pnums[deltetfaces[i][1]];
|
||||||
|
face[2] = pnums[deltetfaces[i][2]];
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -135,7 +147,7 @@ namespace netgen
|
|||||||
// get neighbour of element elnr in direction fnr
|
// get neighbour of element elnr in direction fnr
|
||||||
int GetNB (int elnr, int fnr)
|
int GetNB (int elnr, int fnr)
|
||||||
{
|
{
|
||||||
return tets.Get(elnr).NB1(fnr);
|
return tets.Get(elnr).NB(fnr-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -456,7 +468,7 @@ namespace netgen
|
|||||||
|
|
||||||
if (!nbind || !insphere.IsIn (nbind))
|
if (!nbind || !insphere.IsIn (nbind))
|
||||||
{
|
{
|
||||||
tempels.Get (celind).GetFace1 (k, face);
|
tempels.Get (celind).GetFace (k-1, face);
|
||||||
|
|
||||||
Element newel(TET);
|
Element newel(TET);
|
||||||
for (int l = 0; l < 3; l++)
|
for (int l = 0; l < 3; l++)
|
||||||
@ -611,6 +623,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
// new: local box
|
// new: local box
|
||||||
|
/*
|
||||||
mesh.GetBox (pmax, pmin); // lower bound for pmax, upper for pmin
|
mesh.GetBox (pmax, pmin); // lower bound for pmax, upper for pmin
|
||||||
for (int i = 1; i <= adfront->GetNF(); i++)
|
for (int i = 1; i <= adfront->GetNF(); i++)
|
||||||
{
|
{
|
||||||
@ -627,8 +640,20 @@ namespace netgen
|
|||||||
pmin.SetToMin (mesh.Point (pi));
|
pmin.SetToMin (mesh.Point (pi));
|
||||||
pmax.SetToMax (mesh.Point (pi));
|
pmax.SetToMax (mesh.Point (pi));
|
||||||
}
|
}
|
||||||
|
cout << "pmin = " << pmin << ", pmax = " << pmax << endl;
|
||||||
|
*/
|
||||||
|
Box<3> bbox(Box<3>::EMPTY_BOX);
|
||||||
|
|
||||||
|
for (auto & face : adfront->Faces())
|
||||||
|
for (PointIndex pi : face.Face().PNums())
|
||||||
|
bbox.Add (mesh.Point(pi));
|
||||||
|
|
||||||
|
for (PointIndex pi : mesh.LockedPoints())
|
||||||
|
bbox.Add (mesh.Point (pi));
|
||||||
|
|
||||||
|
pmin = bbox.PMin();
|
||||||
|
pmax = bbox.PMax();
|
||||||
|
// cout << "bbox = " << bbox << endl;
|
||||||
|
|
||||||
Vec3d vdiag(pmin, pmax);
|
Vec3d vdiag(pmin, pmax);
|
||||||
// double r1 = vdiag.Length();
|
// double r1 = vdiag.Length();
|
||||||
@ -862,7 +887,7 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
Element2d self(TRIG);
|
Element2d self(TRIG);
|
||||||
self.SetIndex (1);
|
self.SetIndex (1);
|
||||||
startel.GetFace1 (i, self);
|
startel.GetFace (i-1, self);
|
||||||
tempmesh.AddSurfaceElement (self);
|
tempmesh.AddSurfaceElement (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1293,7 +1318,7 @@ namespace netgen
|
|||||||
|
|
||||||
for (int j = 1; j <= 4; j++)
|
for (int j = 1; j <= 4; j++)
|
||||||
{
|
{
|
||||||
el.GetFace1 (j, hel);
|
el.GetFace (j-1, hel);
|
||||||
hel.Invert();
|
hel.Invert();
|
||||||
hel.NormalizeNumbering();
|
hel.NormalizeNumbering();
|
||||||
|
|
||||||
@ -1307,8 +1332,8 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
INDEX_2 i2 = faceht.Get(i3);
|
INDEX_2 i2 = faceht.Get(i3);
|
||||||
|
|
||||||
tempels.Elem(i).NB1(j) = i2.I1();
|
tempels.Elem(i).NB(j-1) = i2.I1();
|
||||||
tempels.Elem(i2.I1()).NB1(i2.I2()) = i;
|
tempels.Elem(i2.I1()).NB(i2.I2()-1) = i;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1468,7 +1493,7 @@ namespace netgen
|
|||||||
|
|
||||||
for (int j = 1; j <= 4; j++)
|
for (int j = 1; j <= 4; j++)
|
||||||
{
|
{
|
||||||
INDEX_3 i3 = tempels.Get(ei).GetFace1(j);
|
INDEX_3 i3 = tempels.Get(ei).GetFace(j-1);
|
||||||
/*
|
/*
|
||||||
Element2d face;
|
Element2d face;
|
||||||
tempels.Get(ei).GetFace(j, face);
|
tempels.Get(ei).GetFace(j, face);
|
||||||
@ -1478,8 +1503,8 @@ namespace netgen
|
|||||||
i3.Sort();
|
i3.Sort();
|
||||||
|
|
||||||
|
|
||||||
if (tempels.Get(ei).NB1(j))
|
if (tempels.Get(ei).NB(j-1))
|
||||||
elstack.Append (tempels.Get(ei).NB1(j));
|
elstack.Append (tempels.Get(ei).NB(j-1));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (innerfaces.Used(i3))
|
if (innerfaces.Used(i3))
|
||||||
|
Loading…
Reference in New Issue
Block a user