diff --git a/Mesh/periodical.cpp b/Mesh/periodical.cpp index a9cf731576988188a13020119b3b49427c8c7cc4..e15c9d0de8b5ba2da01d7f2db968c76de6f78978 100644 --- a/Mesh/periodical.cpp +++ b/Mesh/periodical.cpp @@ -403,24 +403,17 @@ void voroMetal3D::correspondance(double e){ SPoint3 p1; SPoint3 p2; GFace* gf; - GVertex* v1; - GVertex* v2; GModel* model = GModel::current(); GModel::fiter it; std::vector<GFace*> faces; std::list<GVertex*> vertices; - std::list<GEdge*> edges; std::map<GFace*,SPoint3> centers; std::map<GFace*,bool> markings; - std::set<GVertex*> duplicate; std::list<GVertex*>::iterator it2; std::map<GFace*,SPoint3>::iterator it3; std::map<GFace*,SPoint3>::iterator it4; std::map<GFace*,bool>::iterator it5; std::map<GFace*,bool>::iterator it6; - std::list<GEdge*>::iterator it7; - std::set<GVertex*>::iterator it8; - std::set<GVertex*>::iterator it9; faces.clear(); @@ -468,8 +461,6 @@ void voroMetal3D::correspondance(double e){ for(i=0;i<faces.size();i++){ for(j=0;j<faces.size();j++){ - flag = 0; - it3 = centers.find(faces[i]); it4 = centers.find(faces[j]); @@ -480,33 +471,12 @@ void voroMetal3D::correspondance(double e){ delta_y = fabs(p2.y()-p1.y()); delta_z = fabs(p2.z()-p1.z()); - if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,0.0,e)){ - flag = 1; - } - if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ - flag = 1; - } - if(equal(delta_x,0.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ - flag = 1; - } - - if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ - flag = 1; - } - if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ - flag = 1; - } - if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ - flag = 1; - } - - if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ - flag = 1; - } + flag = correspondance(delta_x,delta_y,delta_z,e); if(flag){ it5 = markings.find(faces[i]); it6 = markings.find(faces[j]); + if(it5->second==0 && it6->second==0){ it5->second = 1; it6->second = 1; @@ -522,70 +492,39 @@ void voroMetal3D::correspondance(double e){ file << "};\n"; printf("\nNumber of exterior face periodicities : %d\n",2*count); - printf("Total number of exterior faces : %zu\n",faces.size()); + printf("Total number of exterior faces : %zu\n\n",faces.size()); +} + +bool voroMetal3D::correspondance(double delta_x,double delta_y,double delta_z,double e){ + bool flag; - duplicate.clear(); + flag = 0; - for(i=0;i<faces.size();i++){ - gf = faces[i]; - - edges = gf->edges(); - - for(it7=edges.begin();it7!=edges.end();it7++){ - duplicate.insert((*it7)->getBeginVertex()); - duplicate.insert((*it7)->getEndVertex()); - } + if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,0.0,e)){ + flag = 1; + } + if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ + flag = 1; + } + if(equal(delta_x,0.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ + flag = 1; } - - count = 0; - std::ofstream file2("vertices"); + if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ + flag = 1; + } + if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ + flag = 1; + } + if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ + flag = 1; + } - for(it8=duplicate.begin();it8!=duplicate.end();it8++){ - v1 = *it8; - - for(it9=duplicate.begin();it9!=duplicate.end();it9++){ - v2 = *it9; - - delta_x = fabs(v2->x()-v1->x()); - delta_y = fabs(v2->y()-v1->y()); - delta_z = fabs(v2->z()-v1->z()); - - if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,0.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - if(equal(delta_x,0.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - - if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,0.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - if(equal(delta_x,0.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - if(equal(delta_x,1.0,e) && equal(delta_y,0.0,e) && equal(delta_z,1.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - - if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ - file2 << v1->tag() << " " << v2->tag() << "\n"; - count++; - } - } + if(equal(delta_x,1.0,e) && equal(delta_y,1.0,e) && equal(delta_z,1.0,e)){ + flag = 1; } - printf("\nNumber of exterior vertex periodicities : %d\n",count); - printf("Total number of exterior vertices : %zu\n\n",duplicate.size()); + return flag; } bool voroMetal3D::equal(double x,double y,double e){