diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp index abe57b4835cf9c11c6792f8f540b7af87eeb7abd..9db0961e37c1f6de58c1b75ab4e805b334645607 100644 --- a/Mesh/directions3D.cpp +++ b/Mesh/directions3D.cpp @@ -126,8 +126,8 @@ void Frame_field::init_region(GRegion* gr){ faces = gr->faces(); + temp.clear(); field.clear(); - random.clear(); for(it=faces.begin();it!=faces.end();it++) { @@ -135,20 +135,20 @@ void Frame_field::init_region(GRegion* gr){ init_face(gf); } - duplicate = annAllocPts(field.size(),3); + duplicate = annAllocPts(temp.size(),3); index = 0; - for(it2=field.begin();it2!=field.end();it2++){ + for(it2=temp.begin();it2!=temp.end();it2++){ vertex = it2->first; m = it2->second; duplicate[index][0] = vertex->x(); duplicate[index][1] = vertex->y(); duplicate[index][2] = vertex->z(); - random.push_back(std::pair<MVertex*,Matrix>(vertex,m)); + field.push_back(std::pair<MVertex*,Matrix>(vertex,m)); index++; } - kd_tree = new ANNkd_tree(duplicate,field.size(),3); + kd_tree = new ANNkd_tree(duplicate,temp.size(),3); #endif } @@ -200,7 +200,7 @@ void Frame_field::init_face(GFace* gf){ m.set_m13(v3.x()); m.set_m23(v3.y()); m.set_m33(v3.z()); - field.insert(std::pair<MVertex*,Matrix>(vertex,m)); + temp.insert(std::pair<MVertex*,Matrix>(vertex,m)); } } } @@ -221,7 +221,7 @@ bool Frame_field::translate(GFace* gf,MElementOctree* octree,MVertex* vertex,SPo GPoint gp2; ok = true; - k = 0.1; + k = 0.00001; reparamMeshVertexOnFace(vertex,gf,point); x = point.x(); y = point.y(); @@ -247,6 +247,8 @@ bool Frame_field::translate(GFace* gf,MElementOctree* octree,MVertex* vertex,SPo if(!inside_domain(octree,x2,y2)) ok = false; } + ok = true; //? + if(ok){ gp1 = gf->point(x1,y1); gp2 = gf->point(x2,y2); @@ -286,7 +288,7 @@ Matrix Frame_field::search(double x,double y,double z){ delete[] distances; #endif - return random[index].second; + return field[index].second; } Matrix Frame_field::combine(double x,double y,double z){ @@ -369,7 +371,7 @@ void Frame_field::print_field1(){ std::ofstream file("frame1.pos"); file << "View \"test\" {\n"; - for(it=field.begin();it!=field.end();it++){ + for(it=temp.begin();it!=temp.end();it++){ vertex = it->first; m = it->second; @@ -452,8 +454,8 @@ GRegion* Frame_field::test(){ void Frame_field::clear(){ Nearest_point::clear(); + temp.clear(); field.clear(); - random.clear(); #if defined(HAVE_ANN) delete duplicate; delete kd_tree; @@ -748,7 +750,7 @@ void Nearest_point::init_region(GRegion* gr){ MElement* element; GFace* gf; std::list<GFace*> faces; - std::set<MVertex*> vertices; + std::set<MVertex*> temp; std::list<GFace*>::iterator it; std::set<MVertex*>::iterator it2; fullMatrix<double> gauss_points; @@ -759,9 +761,9 @@ void Nearest_point::init_region(GRegion* gr){ faces = gr->faces(); - random.clear(); + field.clear(); vicinity.clear(); - vertices.clear(); + temp.clear(); for(it=faces.begin();it!=faces.end();it++){ gf = *it; @@ -788,33 +790,33 @@ void Nearest_point::init_region(GRegion* gr){ y = T(u,v,y1,y2,y3); z = T(u,v,z1,z2,z3); - random.push_back(SPoint3(x,y,z)); + field.push_back(SPoint3(x,y,z)); vicinity.push_back(element); } - vertices.insert(element->getVertex(0)); - vertices.insert(element->getVertex(1)); - vertices.insert(element->getVertex(2)); + temp.insert(element->getVertex(0)); + temp.insert(element->getVertex(1)); + temp.insert(element->getVertex(2)); } } - for(it2=vertices.begin();it2!=vertices.end();it2++){ + for(it2=temp.begin();it2!=temp.end();it2++){ x = (*it2)->x(); y = (*it2)->y(); z = (*it2)->z(); - //random.push_back(SPoint3(x,y,z)); + //field.push_back(SPoint3(x,y,z)); //vicinity.push_back(NULL); } - duplicate = annAllocPts(random.size(),3); + duplicate = annAllocPts(field.size(),3); - for(i=0;i<random.size();i++){ - duplicate[i][0] = random[i].x(); - duplicate[i][1] = random[i].y(); - duplicate[i][2] = random[i].z(); + for(i=0;i<field.size();i++){ + duplicate[i][0] = field[i].x(); + duplicate[i][1] = field[i].y(); + duplicate[i][2] = field[i].z(); } - kd_tree = new ANNkd_tree(duplicate,random.size(),3); + kd_tree = new ANNkd_tree(duplicate,field.size(),3); #endif } @@ -849,7 +851,7 @@ bool Nearest_point::search(double x,double y,double z,SVector3& vec){ point = closest(vicinity[index],SPoint3(x,y,z)); } else{ - point = random[index]; + point = field[index]; } e2 = 0.000001; @@ -1021,7 +1023,7 @@ GRegion* Nearest_point::test(){ } void Nearest_point::clear(){ - random.clear(); + field.clear(); vicinity.clear(); #if defined(HAVE_ANN) delete duplicate; @@ -1032,8 +1034,8 @@ void Nearest_point::clear(){ /****************static declarations****************/ -std::map<MVertex*,Matrix> Frame_field::field; -std::vector<std::pair<MVertex*,Matrix> > Frame_field::random; +std::map<MVertex*,Matrix> Frame_field::temp; +std::vector<std::pair<MVertex*,Matrix> > Frame_field::field; #if defined(HAVE_ANN) ANNpointArray Frame_field::duplicate; ANNkd_tree* Frame_field::kd_tree; @@ -1042,7 +1044,7 @@ ANNkd_tree* Frame_field::kd_tree; std::map<MVertex*,double> Size_field::boundary; MElementOctree* Size_field::octree; -std::vector<SPoint3> Nearest_point::random; +std::vector<SPoint3> Nearest_point::field; std::vector<MElement*> Nearest_point::vicinity; #if defined(HAVE_ANN) ANNpointArray Nearest_point::duplicate;