diff --git a/Geo/GFaceCompound.cpp b/Geo/GFaceCompound.cpp
index 39639edb15146f257a1ed512440a48e7e3c87c0f..0df3769d1ecd9db2b1b8247ee243bce896617471 100644
--- a/Geo/GFaceCompound.cpp
+++ b/Geo/GFaceCompound.cpp
@@ -1279,6 +1279,10 @@ GFaceCompound::~GFaceCompound()
  _deleteInternals();
 }
 
+void GFaceCompound::deleteInternals(){
+  _deleteInternals();
+}
+
 void GFaceCompound::_deleteInternals()
 {
   for (unsigned int i = 0; i < myParamVert.size(); i++)
diff --git a/Geo/GFaceCompound.h b/Geo/GFaceCompound.h
index 6e1b0e22f3c85ef94a5b72e43d571d2a10d10a66..e086c40a659b5e06f24929b1a5740f357e7d6d56 100644
--- a/Geo/GFaceCompound.h
+++ b/Geo/GFaceCompound.h
@@ -178,6 +178,8 @@ class GFaceCompound : public GFace {
   GPoint intersectionWithCircle (const SVector3 &n1, const SVector3 &n2, const SVector3 &p,
 				 const double &d, double uv[2]) const;
 
+  void deleteInternals();
+	
  private:
   void _deleteInternals();
   mutable typeOfCompound _toc;
diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp
index bba0a7b1719a9c862c43c2be78b60112357119ae..1c355b1d7c3462f2a99739b7b42c2f45f01bbb00 100644
--- a/Mesh/directions3D.cpp
+++ b/Mesh/directions3D.cpp
@@ -13,6 +13,7 @@
 #include "MTetrahedron.h"
 #include "directions3D.h"
 #include "OS.h"
+#include "GFaceCompound.h"
 
 #if defined(HAVE_PETSC)
 #include "dofManager.h"
@@ -79,6 +80,10 @@ void Frame_field::init_face(GFace* gf){
   MElementOctree* octree;
   STensor3 m(1.0);
 
+  if(gf->geomType()==GEntity::CompoundSurface){
+    ((GFaceCompound*)gf)->deleteInternals();
+    ((GFaceCompound*)gf)->parametrize();
+  }
   backgroundMesh::set(gf);
   octree = backgroundMesh::current()->get_octree();