diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 29c1b80723c9afa3eb6a600b97d7e2b1abf3c341..c7bd8591ebc63c2db06cec9b6a5ba9c33d8cc9f7 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1508,7 +1508,7 @@ void GModel::createTopologyFromRegions(std::vector<discreteRegion*> &discRegions
   Msg::Debug("Done creating topology from regions");
 }
 
-void GModel::createTopologyFromFaces(std::vector<discreteFace*> &discFaces)
+void GModel::createTopologyFromFaces(std::vector<discreteFace*> &discFaces, int onlyOneBoundary)
 {
   Msg::Debug("Creating topology from faces...");
 
@@ -1597,6 +1597,11 @@ void GModel::createTopologyFromFaces(std::vector<discreteFace*> &discFaces)
     std::vector<std::vector<MEdge> > boundaries;
     int nbBounds = connectedSurfaceBoundaries(myEdges, boundaries);   
 
+    //EMI RBF fix
+    if (onlyOneBoundary){
+      nbBounds = 1;
+    }
+
     // create new discrete edges
     for (int ib = 0; ib < nbBounds; ib++){
       int numE = getMaxElementaryNumber(1) + 1;
diff --git a/Geo/GModel.h b/Geo/GModel.h
index f716e7ad80280be457b3d03cc590c65c0dafbd1b..329834195be4b53f0c86785c8a44a2c41c03c130 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -351,7 +351,7 @@ class GModel
   // create topology from mesh
   void createTopologyFromMesh();
   void createTopologyFromRegions(std::vector<discreteRegion*> &discRegions);
-  void createTopologyFromFaces(std::vector<discreteFace*> &pFaces);
+  void createTopologyFromFaces(std::vector<discreteFace*> &pFaces, int onlyOneBoundary=0);
   void makeDiscreteRegionsSimplyConnected();
   void makeDiscreteFacesSimplyConnected();