diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp
index 0d652dbb3f3859d33b5b5510f2a67294837d41e7..cdd35e854639e22f91318799eeac4f730291ffad 100644
--- a/Mesh/simple3D.cpp
+++ b/Mesh/simple3D.cpp
@@ -314,8 +314,6 @@ void Filler::treat_model(){
   GModel* model = GModel::current();
   GModel::riter it;
 
-  Frame_field::init_model();
-
   for(it=model->firstRegion();it!=model->lastRegion();it++)
   {
     gr = *it;
@@ -323,8 +321,6 @@ void Filler::treat_model(){
 	  treat_region(gr);
 	}
   }
-
-  Frame_field::clear();
 }
 
 void Filler::treat_region(GRegion* gr){
@@ -349,6 +345,7 @@ void Filler::treat_region(GRegion* gr){
   std::set<MVertex*>::iterator it;
   RTree<Node*,double,3,double> rtree;
 
+  Frame_field::init_model();
   octree = new MElementOctree(gr->model());
 
   for(i=0;i<gr->getNumMeshElements();i++){
@@ -438,6 +435,7 @@ void Filler::treat_region(GRegion* gr){
   for(i=0;i<garbage.size();i++) delete garbage[i];
   for(i=0;i<new_vertices.size();i++) delete new_vertices[i];
   new_vertices.clear();
+  Frame_field::clear();
 #endif
 }