Skip to content
Snippets Groups Projects
Commit 31df27e3 authored by Tristan Carrier Baudouin's avatar Tristan Carrier Baudouin
Browse files

hexahedra

parent 826f311a
Branches
Tags
No related merge requests found
...@@ -56,6 +56,7 @@ class Metric{ ...@@ -56,6 +56,7 @@ class Metric{
class Node{ class Node{
private: private:
int layer;
double h; double h;
Metric m; Metric m;
SPoint3 point; SPoint3 point;
...@@ -65,9 +66,11 @@ class Node{ ...@@ -65,9 +66,11 @@ class Node{
Node(); Node();
Node(SPoint3); Node(SPoint3);
~Node(); ~Node();
void set_layer(int);
void set_size(double); void set_size(double);
void set_metric(Metric); void set_metric(Metric);
void set_point(SPoint3); void set_point(SPoint3);
int get_layer();
double get_size(); double get_size();
Metric get_metric(); Metric get_metric();
SPoint3 get_point(); SPoint3 get_point();
...@@ -242,6 +245,10 @@ Node::Node(SPoint3 new_point){ ...@@ -242,6 +245,10 @@ Node::Node(SPoint3 new_point){
Node::~Node(){} Node::~Node(){}
void Node::set_layer(int new_layer){
layer = new_layer;
}
void Node::set_size(double new_h){ void Node::set_size(double new_h){
h = new_h; h = new_h;
} }
...@@ -254,6 +261,10 @@ void Node::set_point(SPoint3 new_point){ ...@@ -254,6 +261,10 @@ void Node::set_point(SPoint3 new_point){
point = new_point; point = new_point;
} }
int Node::get_layer(){
return layer;
}
double Node::get_size(){ double Node::get_size(){
return h; return h;
} }
...@@ -350,12 +361,15 @@ void Filler::treat_region(GRegion* gr){ ...@@ -350,12 +361,15 @@ void Filler::treat_region(GRegion* gr){
MElementOctree* octree; MElementOctree* octree;
deMeshGRegion deleter; deMeshGRegion deleter;
Wrapper wrapper; Wrapper wrapper;
GFace* gf;
std::queue<Node*> fifo; std::queue<Node*> fifo;
std::vector<Node*> spawns; std::vector<Node*> spawns;
std::vector<Node*> garbage; std::vector<Node*> garbage;
std::vector<MVertex*> boundary_vertices; std::vector<MVertex*> boundary_vertices;
std::set<MVertex*> temp; std::set<MVertex*> temp;
std::list<GFace*> faces;
std::set<MVertex*>::iterator it; std::set<MVertex*>::iterator it;
std::list<GFace*>::iterator it2;
RTree<Node*,double,3,double> rtree; RTree<Node*,double,3,double> rtree;
Frame_field::init_region(gr); Frame_field::init_region(gr);
...@@ -366,6 +380,19 @@ void Filler::treat_region(GRegion* gr){ ...@@ -366,6 +380,19 @@ void Filler::treat_region(GRegion* gr){
boundary_vertices.clear(); boundary_vertices.clear();
temp.clear(); temp.clear();
new_vertices.clear(); new_vertices.clear();
faces.clear();
/*faces = gr->faces();
for(it2=faces.begin();it2!=faces.end();it2++){
gf = *it2;
for(i=0;i<gf->getNumMeshElements();i++){
element = gf->getMeshElement(i);
for(j=0;j<element->getNumVertices();j++){
vertex = element->getVertex(j);
temp.insert(vertex);
}
}
}*/
for(i=0;i<gr->getNumMeshElements();i++){ for(i=0;i<gr->getNumMeshElements();i++){
element = gr->getMeshElement(i); element = gr->getMeshElement(i);
...@@ -390,6 +417,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -390,6 +417,7 @@ void Filler::treat_region(GRegion* gr){
node = new Node(SPoint3(x,y,z)); node = new Node(SPoint3(x,y,z));
compute_parameters(node,gr); compute_parameters(node,gr);
node->set_layer(0);
rtree.Insert(node->min,node->max,node); rtree.Insert(node->min,node->max,node);
fifo.push(node); fifo.push(node);
//print_node(node,file); //print_node(node,file);
...@@ -420,6 +448,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -420,6 +448,7 @@ void Filler::treat_region(GRegion* gr){
if(inside_domain(octree,x,y,z)){ if(inside_domain(octree,x,y,z)){
compute_parameters(individual,gr); compute_parameters(individual,gr);
individual->set_layer(parent->get_layer()+1);
if(far_from_boundary(octree,individual)){ if(far_from_boundary(octree,individual)){
wrapper.set_ok(1); wrapper.set_ok(1);
wrapper.set_individual(individual); wrapper.set_individual(individual);
...@@ -462,6 +491,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -462,6 +491,7 @@ void Filler::treat_region(GRegion* gr){
for(i=0;i<new_vertices.size();i++) delete new_vertices[i]; for(i=0;i<new_vertices.size();i++) delete new_vertices[i];
new_vertices.clear(); new_vertices.clear();
delete octree; delete octree;
rtree.RemoveAll();
Size_field::clear(); Size_field::clear();
Frame_field::clear(); Frame_field::clear();
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment