mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-26 05:50:32 +05:00
idmap using PointIndex
This commit is contained in:
parent
34c3d971b0
commit
bcc9f43f76
@ -65,10 +65,10 @@ ShortEdge (const SpecialPoint & sp1, const SpecialPoint & sp2) const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Identification :: GetIdentifiedPoint (class Mesh & mesh, int pi)
|
PointIndex Identification :: GetIdentifiedPoint (class Mesh & mesh, PointIndex pi)
|
||||||
{
|
{
|
||||||
cout << "Identification::GetIdentifiedPoint called for base-class" << endl;
|
cout << "Identification::GetIdentifiedPoint called for base-class" << endl;
|
||||||
return -1;
|
return PointIndex::INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Identification :: IdentifyPoints (Mesh & mesh)
|
void Identification :: IdentifyPoints (Mesh & mesh)
|
||||||
@ -261,8 +261,8 @@ Identifiable (const Point<3> & p1, const Point<3> & p2) const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int PeriodicIdentification ::
|
PointIndex PeriodicIdentification ::
|
||||||
GetIdentifiedPoint (class Mesh & mesh, int pi)
|
GetIdentifiedPoint (class Mesh & mesh, PointIndex pi)
|
||||||
{
|
{
|
||||||
const Surface *snew;
|
const Surface *snew;
|
||||||
const Point<3> & p = mesh.Point (pi);
|
const Point<3> & p = mesh.Point (pi);
|
||||||
@ -885,16 +885,20 @@ ShortEdge (const SpecialPoint & sp1, const SpecialPoint & sp2) const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int CloseSurfaceIdentification ::
|
PointIndex CloseSurfaceIdentification ::
|
||||||
GetIdentifiedPoint (class Mesh & mesh, int pi)
|
GetIdentifiedPoint (class Mesh & mesh, PointIndex pi)
|
||||||
{
|
{
|
||||||
const Surface *snew;
|
const Surface *snew;
|
||||||
const Point<3> & p = mesh.Point (pi);
|
const Point<3> & p = mesh.Point (pi);
|
||||||
|
|
||||||
NgArray<int,PointIndex::BASE> identmap(mesh.GetNP());
|
idmap_type identmap(mesh.GetNP());
|
||||||
mesh.GetIdentifications().GetMap (nr, identmap);
|
mesh.GetIdentifications().GetMap (nr, identmap);
|
||||||
|
/*
|
||||||
if (identmap.Get(pi))
|
if (identmap.Get(pi))
|
||||||
return identmap.Get(pi);
|
return identmap.Get(pi);
|
||||||
|
*/
|
||||||
|
if (identmap[pi].IsValid())
|
||||||
|
return identmap[pi];
|
||||||
|
|
||||||
|
|
||||||
if (s1->PointOnSurface (p))
|
if (s1->PointOnSurface (p))
|
||||||
@ -1229,7 +1233,7 @@ BuildSurfaceElements (NgArray<Segment> & segs,
|
|||||||
bool found = 0;
|
bool found = 0;
|
||||||
int cntquads = 0;
|
int cntquads = 0;
|
||||||
|
|
||||||
NgArray<int,PointIndex::BASE> identmap;
|
idmap_type identmap;
|
||||||
identmap = 0;
|
identmap = 0;
|
||||||
|
|
||||||
mesh.GetIdentifications().GetMap (nr, identmap);
|
mesh.GetIdentifications().GetMap (nr, identmap);
|
||||||
|
@ -56,7 +56,7 @@ namespace netgen
|
|||||||
virtual void IdentifyFaces (class Mesh & mesh);
|
virtual void IdentifyFaces (class Mesh & mesh);
|
||||||
|
|
||||||
/// get point on other surface, add entry in mesh identifications
|
/// get point on other surface, add entry in mesh identifications
|
||||||
virtual int GetIdentifiedPoint (class Mesh & mesh, int pi1);
|
virtual PointIndex GetIdentifiedPoint (class Mesh & mesh, PointIndex pi1);
|
||||||
|
|
||||||
/// copy surfaces, or fill rectangles
|
/// copy surfaces, or fill rectangles
|
||||||
virtual void BuildSurfaceElements (NgArray<class Segment> & segs,
|
virtual void BuildSurfaceElements (NgArray<class Segment> & segs,
|
||||||
@ -97,7 +97,7 @@ namespace netgen
|
|||||||
const TABLE<int> & specpoint2surface) const override;
|
const TABLE<int> & specpoint2surface) const override;
|
||||||
|
|
||||||
virtual int Identifiable (const Point<3> & p1, const Point<3> & sp2) const override;
|
virtual int Identifiable (const Point<3> & p1, const Point<3> & sp2) const override;
|
||||||
virtual int GetIdentifiedPoint (class Mesh & mesh, int pi1) override;
|
virtual PointIndex GetIdentifiedPoint (class Mesh & mesh, PointIndex pi1) override;
|
||||||
virtual void IdentifyPoints (class Mesh & mesh) override;
|
virtual void IdentifyPoints (class Mesh & mesh) override;
|
||||||
virtual void IdentifyFaces (class Mesh & mesh) override;
|
virtual void IdentifyFaces (class Mesh & mesh) override;
|
||||||
virtual void BuildSurfaceElements (NgArray<class Segment> & segs,
|
virtual void BuildSurfaceElements (NgArray<class Segment> & segs,
|
||||||
@ -153,7 +153,7 @@ namespace netgen
|
|||||||
virtual int Identifiable (const Point<3> & p1, const Point<3> & sp2) const;
|
virtual int Identifiable (const Point<3> & p1, const Point<3> & sp2) const;
|
||||||
virtual int IdentifiableCandidate (const SpecialPoint & sp1) const;
|
virtual int IdentifiableCandidate (const SpecialPoint & sp1) const;
|
||||||
virtual int ShortEdge (const SpecialPoint & sp1, const SpecialPoint & sp2) const;
|
virtual int ShortEdge (const SpecialPoint & sp1, const SpecialPoint & sp2) const;
|
||||||
virtual int GetIdentifiedPoint (class Mesh & mesh, int pi1);
|
virtual PointIndex GetIdentifiedPoint (class Mesh & mesh, PointIndex pi1);
|
||||||
const Array<double> & GetSlices () const { return slices; }
|
const Array<double> & GetSlices () const { return slices; }
|
||||||
virtual void IdentifyPoints (class Mesh & mesh);
|
virtual void IdentifyPoints (class Mesh & mesh);
|
||||||
virtual void IdentifyFaces (class Mesh & mesh);
|
virtual void IdentifyFaces (class Mesh & mesh);
|
||||||
|
@ -1827,7 +1827,7 @@ void Ng_GetPeriodicVertices (int idnr, int * pairs)
|
|||||||
|
|
||||||
int Ng_GetNPeriodicEdges (int idnr)
|
int Ng_GetNPeriodicEdges (int idnr)
|
||||||
{
|
{
|
||||||
NgArray<int,PointIndex::BASE> map;
|
idmap_type map;
|
||||||
//const MeshTopology & top = mesh->GetTopology();
|
//const MeshTopology & top = mesh->GetTopology();
|
||||||
int nse = mesh->GetNSeg();
|
int nse = mesh->GetNSeg();
|
||||||
|
|
||||||
@ -1854,7 +1854,7 @@ int Ng_GetNPeriodicEdges (int idnr)
|
|||||||
|
|
||||||
void Ng_GetPeriodicEdges (int idnr, int * pairs)
|
void Ng_GetPeriodicEdges (int idnr, int * pairs)
|
||||||
{
|
{
|
||||||
NgArray<int,PointIndex::BASE> map;
|
idmap_type map;
|
||||||
const MeshTopology & top = mesh->GetTopology();
|
const MeshTopology & top = mesh->GetTopology();
|
||||||
int nse = mesh->GetNSeg();
|
int nse = mesh->GetNSeg();
|
||||||
|
|
||||||
|
@ -1361,7 +1361,7 @@ size_t Ngx_Mesh :: GetGlobalVertexNum (int locnum) const
|
|||||||
|
|
||||||
FlatArray<int> Ngx_Mesh :: GetDistantProcs (int nodetype, int locnum) const
|
FlatArray<int> Ngx_Mesh :: GetDistantProcs (int nodetype, int locnum) const
|
||||||
{
|
{
|
||||||
#ifdef PARALLEL
|
// #ifdef PARALLEL
|
||||||
if (mesh->GetCommunicator().Size() == 1)
|
if (mesh->GetCommunicator().Size() == 1)
|
||||||
return FlatArray<int>(0,nullptr);
|
return FlatArray<int>(0,nullptr);
|
||||||
|
|
||||||
@ -1379,9 +1379,9 @@ FlatArray<int> Ngx_Mesh :: GetDistantProcs (int nodetype, int locnum) const
|
|||||||
default:
|
default:
|
||||||
return FlatArray<int>(0, nullptr);
|
return FlatArray<int>(0, nullptr);
|
||||||
}
|
}
|
||||||
#else
|
// #else
|
||||||
return FlatArray<int>(0,nullptr);
|
// return FlatArray<int>(0,nullptr);
|
||||||
#endif
|
// #endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
int np = mesh.GetNP();
|
int np = mesh.GetNP();
|
||||||
|
|
||||||
// Identic points
|
// Identic points
|
||||||
NgArray<int,PointIndex::BASE> identmap1, identmap2, identmap3;
|
idmap_type identmap1, identmap2, identmap3;
|
||||||
mesh.GetIdentifications().GetMap(1, identmap1);
|
mesh.GetIdentifications().GetMap(1, identmap1);
|
||||||
mesh.GetIdentifications().GetMap(2, identmap2);
|
mesh.GetIdentifications().GetMap(2, identmap2);
|
||||||
mesh.GetIdentifications().GetMap(3, identmap3);
|
mesh.GetIdentifications().GetMap(3, identmap3);
|
||||||
@ -52,19 +52,21 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
for (j = 1; j <= 4; j++)
|
for (j = 1; j <= 4; j++)
|
||||||
for (jj = 1; jj <=4; jj++)
|
for (jj = 1; jj <=4; jj++)
|
||||||
{
|
{
|
||||||
if (identmap1.Elem(el.PNum(j)) == el.PNum(jj))
|
// if (identmap1.Elem(el.PNum(j)) == el.PNum(jj))
|
||||||
|
if (identmap1[el.PNum(j)] == el.PNum(jj))
|
||||||
{
|
{
|
||||||
cout << "\n Error: two points on a tetrahedron identified (1) with each other"
|
cout << "\n Error: two points on a tetrahedron identified (1) with each other"
|
||||||
<< "\n REFINE MESH !" << endl;
|
<< "\n REFINE MESH !" << endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (identmap2.Elem(el.PNum(j)) == el.PNum(jj))
|
// if (identmap2.Elem(el.PNum(j)) == el.PNum(jj))
|
||||||
|
if (identmap2[el.PNum(j)] == el.PNum(jj))
|
||||||
{
|
{
|
||||||
cout << "\n Error: two points on a tetrahedron identified (2) with each other"
|
cout << "\n Error: two points on a tetrahedron identified (2) with each other"
|
||||||
<< "\n REFINE MESH !" << endl;
|
<< "\n REFINE MESH !" << endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (identmap3.Elem(el.PNum(j)) == el.PNum(jj))
|
if (identmap3[el.PNum(j)] == el.PNum(jj))
|
||||||
{
|
{
|
||||||
cout << "\n Error: two points on a tetrahedron identified (3) with each other"
|
cout << "\n Error: two points on a tetrahedron identified (3) with each other"
|
||||||
<< "\n REFINE MESH !" << endl;
|
<< "\n REFINE MESH !" << endl;
|
||||||
@ -271,6 +273,7 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
int npid1 = 0;
|
int npid1 = 0;
|
||||||
int npid2 = 0;
|
int npid2 = 0;
|
||||||
int npid3 = 0;
|
int npid3 = 0;
|
||||||
|
/*
|
||||||
for (i=1; i<=np; i++)
|
for (i=1; i<=np; i++)
|
||||||
{
|
{
|
||||||
if (identmap1.Elem(i))
|
if (identmap1.Elem(i))
|
||||||
@ -280,6 +283,10 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
if (identmap3.Elem(i))
|
if (identmap3.Elem(i))
|
||||||
npid3++;
|
npid3++;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
for (auto pi : identmap1) if (pi.IsValid()) npid1++;
|
||||||
|
for (auto pi : identmap2) if (pi.IsValid()) npid1++;
|
||||||
|
for (auto pi : identmap3) if (pi.IsValid()) npid1++;
|
||||||
|
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
outfile << "# Boundary triangles\n";
|
outfile << "# Boundary triangles\n";
|
||||||
@ -302,31 +309,31 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
outfile << mesh.GetFaceDescriptor (el.GetIndex()).BCProperty() << "\n";
|
outfile << mesh.GetFaceDescriptor (el.GetIndex()).BCProperty() << "\n";
|
||||||
if (mesh.GetFaceDescriptor (el.GetIndex()).BCProperty() == bc_at_infinity)
|
if (mesh.GetFaceDescriptor (el.GetIndex()).BCProperty() == bc_at_infinity)
|
||||||
outfile << "-2\n\n";
|
outfile << "-2\n\n";
|
||||||
else if (identmap1.Elem(el.PNum(1))
|
else if (identmap1[el.PNum(1)].IsValid()
|
||||||
&&identmap1.Elem(el.PNum(2))
|
&&identmap1[el.PNum(2)].IsValid()
|
||||||
&&identmap1.Elem(el.PNum(3)))
|
&&identmap1[el.PNum(3)].IsValid())
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 3; j++)
|
for (j = 1; j <= 3; j++)
|
||||||
outfile << identmap1.Elem(el.PNum(j))<<"\n";
|
outfile << identmap1[el.PNum(j)]<<"\n";
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
else if (identmap2.Elem(el.PNum(1))
|
else if (identmap2[el.PNum(1)].IsValid()
|
||||||
&&identmap2.Elem(el.PNum(2))
|
&&identmap2[el.PNum(2)].IsValid()
|
||||||
&&identmap2.Elem(el.PNum(3)))
|
&&identmap2[el.PNum(3)].IsValid())
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 3; j++)
|
for (j = 1; j <= 3; j++)
|
||||||
outfile << identmap2.Elem(el.PNum(j))<<"\n";
|
outfile << identmap2[el.PNum(j)]<<"\n";
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
else if (identmap3.Elem(el.PNum(1))
|
else if (identmap3[el.PNum(1)].IsValid()
|
||||||
&&identmap3.Elem(el.PNum(2))
|
&&identmap3[el.PNum(2)].IsValid()
|
||||||
&&identmap3.Elem(el.PNum(3)))
|
&&identmap3[el.PNum(3)].IsValid())
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 3; j++)
|
for (j = 1; j <= 3; j++)
|
||||||
outfile << identmap3.Elem(el.PNum(j))<<"\n";
|
outfile << identmap3[el.PNum(j)]<<"\n";
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -373,10 +380,10 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
outfile << "-2\n\n";
|
outfile << "-2\n\n";
|
||||||
cout << "\nWarning: Quadrilateral at infinity found (this should not occur)!"<<endl;
|
cout << "\nWarning: Quadrilateral at infinity found (this should not occur)!"<<endl;
|
||||||
}
|
}
|
||||||
else if ( identmap1.Elem(el.PNum(1)) &&
|
else if ( identmap1[el.PNum(1)].IsValid() &&
|
||||||
identmap1.Elem(el.PNum(2)) &&
|
identmap1[el.PNum(2)].IsValid() &&
|
||||||
identmap1.Elem(el.PNum(3)) &&
|
identmap1[el.PNum(3)].IsValid() &&
|
||||||
identmap1.Elem(el.PNum(4)) )
|
identmap1[el.PNum(4)].IsValid())
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 4; j++)
|
for (j = 1; j <= 4; j++)
|
||||||
@ -384,14 +391,14 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
jj = j + ct;
|
jj = j + ct;
|
||||||
if ( jj >= 5 )
|
if ( jj >= 5 )
|
||||||
jj = jj - 4;
|
jj = jj - 4;
|
||||||
outfile << identmap1.Elem(el.PNum(jj))<<"\n";
|
outfile << identmap1[el.PNum(jj)]<<"\n";
|
||||||
}
|
}
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
else if ( identmap2.Elem(el.PNum(1)) &&
|
else if ( identmap2[el.PNum(1)].IsValid() &&
|
||||||
identmap2.Elem(el.PNum(2)) &&
|
identmap2[el.PNum(2)].IsValid() &&
|
||||||
identmap2.Elem(el.PNum(3)) &&
|
identmap2[el.PNum(3)].IsValid() &&
|
||||||
identmap2.Elem(el.PNum(4)) )
|
identmap2[el.PNum(4)].IsValid() )
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 4; j++)
|
for (j = 1; j <= 4; j++)
|
||||||
@ -399,14 +406,14 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
jj = j + ct;
|
jj = j + ct;
|
||||||
if ( jj >= 5 )
|
if ( jj >= 5 )
|
||||||
jj = jj - 4;
|
jj = jj - 4;
|
||||||
outfile << identmap2.Elem(el.PNum(jj))<<"\n";
|
outfile << identmap2[el.PNum(jj)] <<"\n";
|
||||||
}
|
}
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
else if ( identmap3.Elem(el.PNum(1)) &&
|
else if ( identmap3[el.PNum(1)].IsValid() &&
|
||||||
identmap3.Elem(el.PNum(2)) &&
|
identmap3[el.PNum(2)].IsValid() &&
|
||||||
identmap3.Elem(el.PNum(3)) &&
|
identmap3[el.PNum(3)].IsValid() &&
|
||||||
identmap3.Elem(el.PNum(4)) )
|
identmap3[el.PNum(4)].IsValid() )
|
||||||
{
|
{
|
||||||
outfile << "-1\n";
|
outfile << "-1\n";
|
||||||
for (j = 1; j <= 4; j++)
|
for (j = 1; j <= 4; j++)
|
||||||
@ -414,7 +421,7 @@ void WriteJCMFormat (const Mesh & mesh,
|
|||||||
jj = j + ct;
|
jj = j + ct;
|
||||||
if ( jj >= 5 )
|
if ( jj >= 5 )
|
||||||
jj = jj - 4;
|
jj = jj - 4;
|
||||||
outfile << identmap3.Elem(el.PNum(jj))<<"\n";
|
outfile << identmap3[el.PNum(jj)]<<"\n";
|
||||||
}
|
}
|
||||||
outfile << "\n";
|
outfile << "\n";
|
||||||
}
|
}
|
||||||
|
@ -366,12 +366,12 @@ namespace netgen
|
|||||||
uidpid = "UID";
|
uidpid = "UID";
|
||||||
|
|
||||||
|
|
||||||
NgArray< NgArray<int,PointIndex::BASE>* > idmaps;
|
NgArray< idmap_type* > idmaps;
|
||||||
for(int i=1; i<=mesh.GetIdentifications().GetMaxNr(); i++)
|
for(int i=1; i<=mesh.GetIdentifications().GetMaxNr(); i++)
|
||||||
{
|
{
|
||||||
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
||||||
{
|
{
|
||||||
idmaps.Append(new NgArray<int,PointIndex::BASE>);
|
idmaps.Append(new idmap_type);
|
||||||
mesh.GetIdentifications().GetMap(i,*idmaps.Last(),true);
|
mesh.GetIdentifications().GetMap(i,*idmaps.Last(),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
int BTSortEdges (const Mesh & mesh,
|
int BTSortEdges (const Mesh & mesh,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > & idmaps,
|
const NgArray<idmap_type*> & idmaps,
|
||||||
INDEX_2_CLOSED_HASHTABLE<int> & edgenumber)
|
INDEX_2_CLOSED_HASHTABLE<int> & edgenumber)
|
||||||
{
|
{
|
||||||
PrintMessage(4,"sorting ... ");
|
PrintMessage(4,"sorting ... ");
|
||||||
@ -981,7 +981,7 @@ namespace netgen
|
|||||||
|
|
||||||
bool BTDefineMarkedId(const Element2d & el,
|
bool BTDefineMarkedId(const Element2d & el,
|
||||||
INDEX_2_CLOSED_HASHTABLE<int> & edgenumber,
|
INDEX_2_CLOSED_HASHTABLE<int> & edgenumber,
|
||||||
const NgArray<int,PointIndex::BASE> & idmap,
|
const idmap_type & idmap,
|
||||||
MarkedIdentification & mi)
|
MarkedIdentification & mi)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1983,7 +1983,7 @@ namespace netgen
|
|||||||
|
|
||||||
void BisectTetsCopyMesh (Mesh & mesh, const NetgenGeometry *,
|
void BisectTetsCopyMesh (Mesh & mesh, const NetgenGeometry *,
|
||||||
BisectionOptions & opt,
|
BisectionOptions & opt,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > & idmaps,
|
const NgArray<idmap_type*> & idmaps,
|
||||||
const string & refinfofile)
|
const string & refinfofile)
|
||||||
{
|
{
|
||||||
auto& mtets = *mesh.bisectioninfo.mtets;
|
auto& mtets = *mesh.bisectioninfo.mtets;
|
||||||
@ -2192,7 +2192,7 @@ namespace netgen
|
|||||||
auto seg = mesh[j];
|
auto seg = mesh[j];
|
||||||
for (auto map : idmaps)
|
for (auto map : idmaps)
|
||||||
{
|
{
|
||||||
if (seg[0].IsValid() && seg[1].IsValid() && (*map)[seg[0]] && (*map)[seg[1]])
|
if (seg[0].IsValid() && seg[1].IsValid() && (*map)[seg[0]].IsValid() && (*map)[seg[1]].IsValid())
|
||||||
{
|
{
|
||||||
MarkedIdentification mi;
|
MarkedIdentification mi;
|
||||||
mi.np = 2;
|
mi.np = 2;
|
||||||
@ -2491,7 +2491,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
void UpdateEdgeMarks (Mesh & mesh,
|
void UpdateEdgeMarks (Mesh & mesh,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > & idmaps)
|
const NgArray< idmap_type* > & idmaps)
|
||||||
//const NgArray < NgArray<Element>* > & elements_before,
|
//const NgArray < NgArray<Element>* > & elements_before,
|
||||||
//const NgArray < NgArray<int>* > & markedelts_num,
|
//const NgArray < NgArray<int>* > & markedelts_num,
|
||||||
// const NgArray < NgArray<Element2d>* > & surfelements_before,
|
// const NgArray < NgArray<Element2d>* > & surfelements_before,
|
||||||
@ -2769,12 +2769,12 @@ namespace netgen
|
|||||||
LocalizeEdgePoints(mesh);
|
LocalizeEdgePoints(mesh);
|
||||||
delete loct;
|
delete loct;
|
||||||
|
|
||||||
NgArray< NgArray<int,PointIndex::BASE>* > idmaps;
|
NgArray< idmap_type* > idmaps;
|
||||||
for(int i=1; i<=mesh.GetIdentifications().GetMaxNr(); i++)
|
for(int i=1; i<=mesh.GetIdentifications().GetMaxNr(); i++)
|
||||||
{
|
{
|
||||||
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
||||||
{
|
{
|
||||||
idmaps.Append(new NgArray<int,PointIndex::BASE>);
|
idmaps.Append(new idmap_type);
|
||||||
mesh.GetIdentifications().GetMap(i,*idmaps.Last(),true);
|
mesh.GetIdentifications().GetMap(i,*idmaps.Last(),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2873,7 +2873,8 @@ namespace netgen
|
|||||||
|
|
||||||
#ifndef SABINE //Nachbarelemente mit ordx,ordy,ordz
|
#ifndef SABINE //Nachbarelemente mit ordx,ordy,ordz
|
||||||
|
|
||||||
NgArray<int,PointIndex::BASE> v_order (mesh.GetNP());
|
// NgArray<int,PointIndex::BASE> v_order (mesh.GetNP());
|
||||||
|
Array<int,PointIndex> v_order (mesh.GetNP());
|
||||||
v_order = 0;
|
v_order = 0;
|
||||||
|
|
||||||
// for (ElementIndex ei = 0; ei < ne; ei++)
|
// for (ElementIndex ei = 0; ei < ne; ei++)
|
||||||
@ -3978,7 +3979,7 @@ namespace netgen
|
|||||||
// update identification tables
|
// update identification tables
|
||||||
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
||||||
{
|
{
|
||||||
NgArray<int,PointIndex::BASE> identmap;
|
idmap_type identmap;
|
||||||
|
|
||||||
mesh.GetIdentifications().GetMap (i, identmap);
|
mesh.GetIdentifications().GetMap (i, identmap);
|
||||||
|
|
||||||
@ -4004,11 +4005,11 @@ namespace netgen
|
|||||||
for (int j = 0; j < cutedges.Size(); j++)
|
for (int j = 0; j < cutedges.Size(); j++)
|
||||||
if (cutedges.UsedPos0(j))
|
if (cutedges.UsedPos0(j))
|
||||||
{
|
{
|
||||||
INDEX_2 i2;
|
PointIndices<2> i2;
|
||||||
PointIndex newpi;
|
PointIndex newpi;
|
||||||
cutedges.GetData0 (j, i2, newpi);
|
cutedges.GetData0 (j, i2, newpi);
|
||||||
INDEX_2 oi2(identmap.Get(i2.I1()),
|
PointIndices<2> oi2(identmap[i2[0]],
|
||||||
identmap.Get(i2.I2()));
|
identmap[i2[1]]);
|
||||||
oi2.Sort();
|
oi2.Sort();
|
||||||
if (cutedges.Used (oi2))
|
if (cutedges.Used (oi2))
|
||||||
{
|
{
|
||||||
|
@ -1467,10 +1467,10 @@ void MeshOptimize3d :: SwapImprove (const NgBitArray * working_elements)
|
|||||||
|
|
||||||
void MeshOptimize3d :: SwapImproveSurface (
|
void MeshOptimize3d :: SwapImproveSurface (
|
||||||
const NgBitArray * working_elements,
|
const NgBitArray * working_elements,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps)
|
const NgArray< idmap_type* > * idmaps)
|
||||||
{
|
{
|
||||||
NgArray< NgArray<int,PointIndex::BASE>* > locidmaps;
|
NgArray< idmap_type* > locidmaps;
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * used_idmaps;
|
const NgArray< idmap_type* > * used_idmaps;
|
||||||
|
|
||||||
if(idmaps)
|
if(idmaps)
|
||||||
used_idmaps = idmaps;
|
used_idmaps = idmaps;
|
||||||
@ -1482,7 +1482,7 @@ void MeshOptimize3d :: SwapImproveSurface (
|
|||||||
{
|
{
|
||||||
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
if(mesh.GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
||||||
{
|
{
|
||||||
locidmaps.Append(new NgArray<int,PointIndex::BASE>);
|
locidmaps.Append(new idmap_type);
|
||||||
mesh.GetIdentifications().GetMap(i,*locidmaps.Last(),true);
|
mesh.GetIdentifications().GetMap(i,*locidmaps.Last(),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public:
|
|||||||
double SwapImproveEdge (const NgBitArray * working_elements, Table<ElementIndex,PointIndex> & elementsonnode, INDEX_3_HASHTABLE<int> & faces, PointIndex pi1, PointIndex pi2, bool check_only=false);
|
double SwapImproveEdge (const NgBitArray * working_elements, Table<ElementIndex,PointIndex> & elementsonnode, INDEX_3_HASHTABLE<int> & faces, PointIndex pi1, PointIndex pi2, bool check_only=false);
|
||||||
void SwapImprove (const NgBitArray * working_elements = NULL);
|
void SwapImprove (const NgBitArray * working_elements = NULL);
|
||||||
void SwapImproveSurface (const NgBitArray * working_elements = NULL,
|
void SwapImproveSurface (const NgBitArray * working_elements = NULL,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps = NULL);
|
const NgArray< idmap_type* > * idmaps = NULL);
|
||||||
void SwapImprove2 ();
|
void SwapImprove2 ();
|
||||||
double SwapImprove2 (ElementIndex eli1, int face, Table<ElementIndex, PointIndex> & elementsonnode, TABLE<SurfaceElementIndex, PointIndex::BASE> & belementsonnode, bool check_only=false );
|
double SwapImprove2 (ElementIndex eli1, int face, Table<ElementIndex, PointIndex> & elementsonnode, TABLE<SurfaceElementIndex, PointIndex::BASE> & belementsonnode, bool check_only=false );
|
||||||
|
|
||||||
|
@ -612,7 +612,7 @@ namespace netgen
|
|||||||
const NgBitArray & usepoint,
|
const NgBitArray & usepoint,
|
||||||
const NgArray< Vec<3>* > & nv,
|
const NgArray< Vec<3>* > & nv,
|
||||||
OPTIMIZEGOAL goal = OPT_QUALITY,
|
OPTIMIZEGOAL goal = OPT_QUALITY,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps = NULL);
|
const NgArray< idmap_type* > * idmaps = NULL);
|
||||||
/**
|
/**
|
||||||
free nodes in environment of openelements
|
free nodes in environment of openelements
|
||||||
for optimiztion
|
for optimiztion
|
||||||
|
@ -210,7 +210,7 @@ namespace netgen
|
|||||||
if(!have_closesurfaces)
|
if(!have_closesurfaces)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
NgArray<int, PointIndex::BASE> map;
|
idmap_type map;
|
||||||
std::set<std::tuple<int,int,int>> hex_faces;
|
std::set<std::tuple<int,int,int>> hex_faces;
|
||||||
for(auto identnr : Range(1,nmax+1))
|
for(auto identnr : Range(1,nmax+1))
|
||||||
{
|
{
|
||||||
|
@ -2785,7 +2785,7 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Identifications :: GetMap (int identnr, NgArray<int,PointIndex::BASE> & identmap, bool symmetric) const
|
void Identifications :: GetMap (int identnr, idmap_type & identmap, bool symmetric) const
|
||||||
{
|
{
|
||||||
identmap.SetSize (mesh.GetNP());
|
identmap.SetSize (mesh.GetNP());
|
||||||
identmap = 0;
|
identmap = 0;
|
||||||
@ -2812,9 +2812,14 @@ namespace netgen
|
|||||||
|
|
||||||
if (i3.I3() == identnr || !identnr)
|
if (i3.I3() == identnr || !identnr)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
identmap.Elem(i3.I1()) = i3.I2();
|
identmap.Elem(i3.I1()) = i3.I2();
|
||||||
if(symmetric)
|
if(symmetric)
|
||||||
identmap.Elem(i3.I2()) = i3.I1();
|
identmap.Elem(i3.I2()) = i3.I1();
|
||||||
|
*/
|
||||||
|
identmap[i3.I1()] = i3.I2();
|
||||||
|
if(symmetric)
|
||||||
|
identmap[i3.I2()] = i3.I1();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1653,7 +1653,8 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// typedef NgArray<PointIndex,PointIndex::BASE> idmap_type;
|
||||||
|
typedef Array<PointIndex,PointIndex> idmap_type;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1731,7 +1732,7 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
void GetMap (int identnr, NgArray<int,PointIndex::BASE> & identmap, bool symmetric = false) const;
|
void GetMap (int identnr, idmap_type & identmap, bool symmetric = false) const;
|
||||||
///
|
///
|
||||||
ID_TYPE GetType(int identnr) const
|
ID_TYPE GetType(int identnr) const
|
||||||
{
|
{
|
||||||
|
@ -749,17 +749,17 @@ namespace netgen
|
|||||||
// update identification tables
|
// update identification tables
|
||||||
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
||||||
{
|
{
|
||||||
NgArray<int,PointIndex::BASE> identmap;
|
idmap_type identmap;
|
||||||
mesh.GetIdentifications().GetMap (i, identmap);
|
mesh.GetIdentifications().GetMap (i, identmap);
|
||||||
|
|
||||||
for (int j = 1; j <= between.GetNBags(); j++)
|
for (int j = 1; j <= between.GetNBags(); j++)
|
||||||
for (int k = 1; k <= between.GetBagSize(j); k++)
|
for (int k = 1; k <= between.GetBagSize(j); k++)
|
||||||
{
|
{
|
||||||
INDEX_2 i2;
|
PointIndices<2> i2;
|
||||||
PointIndex newpi;
|
PointIndex newpi;
|
||||||
between.GetData (j, k, i2, newpi);
|
between.GetData (j, k, i2, newpi);
|
||||||
INDEX_2 oi2(identmap.Get(i2.I1()),
|
PointIndices<2> oi2(identmap[i2[0]],
|
||||||
identmap.Get(i2.I2()));
|
identmap[i2[1]]);
|
||||||
oi2.Sort();
|
oi2.Sort();
|
||||||
if (between.Used (oi2))
|
if (between.Used (oi2))
|
||||||
{
|
{
|
||||||
|
@ -351,17 +351,17 @@ namespace netgen
|
|||||||
// update identification tables
|
// update identification tables
|
||||||
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
for (int i = 1; i <= mesh.GetIdentifications().GetMaxNr(); i++)
|
||||||
{
|
{
|
||||||
NgArray<int,PointIndex::BASE> identmap;
|
idmap_type identmap;
|
||||||
mesh.GetIdentifications().GetMap (i, identmap);
|
mesh.GetIdentifications().GetMap (i, identmap);
|
||||||
|
|
||||||
for (INDEX_2_HASHTABLE<PointIndex>::Iterator it = between.Begin();
|
for (INDEX_2_HASHTABLE<PointIndex>::Iterator it = between.Begin();
|
||||||
it != between.End(); it++)
|
it != between.End(); it++)
|
||||||
{
|
{
|
||||||
INDEX_2 i2;
|
PointIndices<2> i2;
|
||||||
PointIndex newpi;
|
PointIndex newpi;
|
||||||
between.GetData (it, i2, newpi);
|
between.GetData (it, i2, newpi);
|
||||||
INDEX_2 oi2(identmap.Get(i2.I1()),
|
PointIndices<2> oi2(identmap[i2[0]],
|
||||||
identmap.Get(i2.I2()));
|
identmap[i2[1]]);
|
||||||
oi2.Sort();
|
oi2.Sort();
|
||||||
if (between.Used (oi2))
|
if (between.Used (oi2))
|
||||||
{
|
{
|
||||||
|
@ -1611,7 +1611,7 @@ void Mesh :: ImproveMeshJacobianOnSurface (const MeshingParameters & mp,
|
|||||||
const NgBitArray & usepoint,
|
const NgBitArray & usepoint,
|
||||||
const NgArray< Vec<3>* > & nv,
|
const NgArray< Vec<3>* > & nv,
|
||||||
OPTIMIZEGOAL goal,
|
OPTIMIZEGOAL goal,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps)
|
const NgArray< idmap_type* > * idmaps)
|
||||||
{
|
{
|
||||||
// int i, j;
|
// int i, j;
|
||||||
|
|
||||||
@ -1628,8 +1628,8 @@ void Mesh :: ImproveMeshJacobianOnSurface (const MeshingParameters & mp,
|
|||||||
|
|
||||||
JacobianPointFunction pf(points, volelements);
|
JacobianPointFunction pf(points, volelements);
|
||||||
|
|
||||||
NgArray< NgArray<int,PointIndex::BASE>* > locidmaps;
|
NgArray< idmap_type* > locidmaps;
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * used_idmaps;
|
const NgArray< idmap_type* > * used_idmaps;
|
||||||
|
|
||||||
if(idmaps)
|
if(idmaps)
|
||||||
used_idmaps = idmaps;
|
used_idmaps = idmaps;
|
||||||
@ -1641,7 +1641,7 @@ void Mesh :: ImproveMeshJacobianOnSurface (const MeshingParameters & mp,
|
|||||||
{
|
{
|
||||||
if(GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
if(GetIdentifications().GetType(i) == Identifications::PERIODIC)
|
||||||
{
|
{
|
||||||
locidmaps.Append(new NgArray<int,PointIndex::BASE>);
|
locidmaps.Append(new idmap_type);
|
||||||
GetIdentifications().GetMap(i,*locidmaps.Last(),true);
|
GetIdentifications().GetMap(i,*locidmaps.Last(),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ namespace netgen
|
|||||||
const NgBitArray & isnewpoint, const Refinement & refinement,
|
const NgBitArray & isnewpoint, const Refinement & refinement,
|
||||||
const NgArray<double> & pure_badness,
|
const NgArray<double> & pure_badness,
|
||||||
double max_worsening, const bool uselocalworsening,
|
double max_worsening, const bool uselocalworsening,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > & idmaps)
|
const NgArray< idmap_type* > & idmaps)
|
||||||
{
|
{
|
||||||
ostringstream ostrstr;
|
ostringstream ostrstr;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace netgen
|
|||||||
const NgBitArray & isnewpoint, const Refinement & refinement,
|
const NgBitArray & isnewpoint, const Refinement & refinement,
|
||||||
const NgArray<double> & pure_badness,
|
const NgArray<double> & pure_badness,
|
||||||
double max_worsening, const bool uselocalworsening,
|
double max_worsening, const bool uselocalworsening,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > & idmaps);
|
const NgArray< idmap_type* > & idmaps);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user