diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 271f460147d97c612b50620b9de01a935684b7c9..f2ad9f9378a431230adfab50090b70efb617e010 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -48,15 +48,15 @@ void GEdge::deleteMesh()
 void GEdge::setMeshMaster(GEdge* ge,int ori) {
 
 #warning missing:computation of affine transformation during setMeshMaster
-  
+
   GEntity::setMeshMaster(ge);
   masterOrientation = ori > 0 ? 1:-1;
-  
+
   if (ori < 0) {
     vertexCounterparts[getBeginVertex()] = ge->getEndVertex();
     vertexCounterparts[getEndVertex()] = ge->getBeginVertex();
     getBeginVertex()->setMeshMaster(ge->getEndVertex());
-    getEndVertex()  ->setMeshMaster(ge->getBeginVertex());  
+    getEndVertex()  ->setMeshMaster(ge->getBeginVertex());
   }
   else {
     vertexCounterparts[getBeginVertex()] = ge->getBeginVertex();
@@ -66,8 +66,8 @@ void GEdge::setMeshMaster(GEdge* ge,int ori) {
   }
 }
 
-void GEdge::setMeshMaster(GEdge* ge,const std::vector<double>& tfo) {
-  
+void GEdge::setMeshMaster(GEdge* ge,const std::vector<double>& tfo)
+{
   SPoint3 oriXYZ0 = ge->getBeginVertex()->xyz();
   SPoint3 oriXYZ1 = ge->getEndVertex()->xyz();
 
@@ -83,17 +83,17 @@ void GEdge::setMeshMaster(GEdge* ge,const std::vector<double>& tfo) {
     tfoXYZ0[i] += tfo[idx];
     tfoXYZ1[i] += tfo[idx];
   }
-  
+
   SPoint3 locXYZ0 = getBeginVertex()->xyz();
   SPoint3 locXYZ1 = getEndVertex()->xyz();
-    
+
   SVector3 d00 = locXYZ0 - tfoXYZ0;
   SVector3 d10 = locXYZ1 - tfoXYZ0;
   SVector3 d01 = locXYZ0 - tfoXYZ1;
   SVector3 d11 = locXYZ1 - tfoXYZ1;
 
   double tol = CTX::instance()->geom.tolerance;
-  
+
   if ((d00.norm() < tol) && (d11.norm() < tol)) {
     GEntity::setMeshMaster(ge,tfo);
     masterOrientation = 1;
@@ -112,7 +112,7 @@ void GEdge::setMeshMaster(GEdge* ge,const std::vector<double>& tfo) {
     getEndVertex()  ->setMeshMaster(ge->getBeginVertex(),tfo);
     return;
   }
-  
+
   Msg::Error("Transformation from edge %d (%d-%d) to %d (%d-%d) is incorrect",
              ge->tag(),ge->getBeginVertex()->tag(),ge->getEndVertex()->tag(),
              this->tag(),this->getBeginVertex()->tag(),this->getEndVertex()->tag());
diff --git a/Geo/GEntity.cpp b/Geo/GEntity.cpp
index 392a32f6eec5fdfb9fa448c30ae8303ee093be05..ce75f16cd22f6d00f39cf8939407048d2fdd63a0 100644
--- a/Geo/GEntity.cpp
+++ b/Geo/GEntity.cpp
@@ -73,7 +73,7 @@ GRegion *GEntity::cast2Region() { return dynamic_cast<GRegion*>(this); }
 void GEntity::setMeshMaster(GEntity* gMaster)
 {
   if (gMaster->dim() != dim()){
-    Msg::Error("Model entity %d of dimension %d cannot" 
+    Msg::Error("Model entity %d of dimension %d cannot"
                "be the mesh master of entity %d of dimension %d",
                gMaster->tag(),gMaster->dim(),tag(),dim());
     return;
@@ -84,7 +84,7 @@ void GEntity::setMeshMaster(GEntity* gMaster)
 void GEntity::setMeshMaster(GEntity* gMaster,const std::vector<double>& tfo)
 {
   if (gMaster->dim() != dim()){
-    Msg::Error("Model entity %d of dimension %d cannot" 
+    Msg::Error("Model entity %d of dimension %d cannot"
                "be the mesh master of entity %d of dimension %d",
                gMaster->tag(),gMaster->dim(),tag(),dim());
     return;
@@ -101,9 +101,5 @@ void GEntity::setMeshMaster(GEntity* gMaster,const std::vector<double>& tfo)
   _meshMaster = gMaster;
 }
 
-
-
-
 // gets the entity from which the mesh will be copied
-GEntity* GEntity::meshMaster() const {return _meshMaster;}
-
+GEntity* GEntity::meshMaster() const { return _meshMaster; }
diff --git a/Geo/GEntity.h b/Geo/GEntity.h
index acacca864d4aafe2919b203f506cc3e6083c6384..c989dd6579669df1f0aa45962a8bb4d738abb114 100644
--- a/Geo/GEntity.h
+++ b/Geo/GEntity.h
@@ -36,7 +36,6 @@ class GEntity {
   // if non-periodic
   GEntity* _meshMaster;
 
-
   // the visibility and the selection flag
   char _visible, _selection;
 
@@ -48,7 +47,7 @@ class GEntity {
 
  protected:
   SOrientedBoundingBox *_obb;
-  
+
  public: // these will become protected at some point
   // the mesh vertices uniquely owned by the entity
   std::vector<MVertex*> mesh_vertices;
@@ -244,7 +243,7 @@ class GEntity {
 
   // get the native pointer of the particular representation
   virtual void *getNativePtr() const { return 0; }
-  
+
   // get the native id (int) of the particular representation
   virtual int getNativeInt() const { return 0; }
 
@@ -268,7 +267,6 @@ class GEntity {
   // returns the master entity (for mesh)
   GEntity* meshMaster() const;
   void setMeshMaster(GEntity*);
-  
   void setMeshMaster(GEntity*,const std::vector<double>&);
 
   // get the bounding box
@@ -321,7 +319,7 @@ class GEntity {
 
   // get the number of mesh vertices in the entity
   unsigned int getNumMeshVertices() { return (int)mesh_vertices.size(); }
-  
+
   // get the mesh vertex at the given index
   MVertex *getMeshVertex(unsigned int index) { return mesh_vertices[index]; }
 
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index bf687799606ecb4b938b19e8197f1e0efe62ed9e..615ce7128de8c7ca036fff3d5822729ee6a8376b 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -1479,16 +1479,16 @@ void GFace::relocateMeshVertices()
   }
 }
 
-void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
-  
+void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo)
+{
   std::list<GEdge*>::iterator eIter;
   std::list<GVertex*>::iterator vIter;
-  
+
   // list all vertices and construct vertex to edge correspondence for local edge
-  
+
   std::set<GVertex*> l_vertices;
   std::map<std::pair<GVertex*,GVertex*>,GEdge* > l_vtxToEdge;
-  
+
   for (eIter=l_edges.begin();eIter!=l_edges.end();++eIter) {
     GVertex* v0 = (*eIter)->getBeginVertex();
     GVertex* v1 = (*eIter)->getEndVertex();
@@ -1504,11 +1504,11 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
     l_vertices.insert(v1);
     l_vtxToEdge[std::make_pair(v0,v1)] = (*eIter);
   }
-  
-  l_vertices.insert(embedded_vertices.begin(),embedded_vertices.end());    
+
+  l_vertices.insert(embedded_vertices.begin(),embedded_vertices.end());
 
   // list all vertices and vertex to edge correspondence for remote edge
-  
+
   std::list<GEdge*> m_edges = master->edges();
   std::set<GVertex*> m_vertices;
   std::map<std::pair<GVertex*,GVertex*>,GEdge* > m_vtxToEdge;
@@ -1519,7 +1519,7 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
     m_vertices.insert(v1);
     m_vtxToEdge[std::make_pair(v0,v1)] = (*eIter);
   }
-  
+
   std::list<GEdge*> m_embedded_edges = master->embeddedEdges();
 
   for (eIter=m_embedded_edges.begin();eIter!=m_embedded_edges.end();eIter++) {
@@ -1529,12 +1529,12 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
     m_vertices.insert(v1);
     m_vtxToEdge[std::make_pair(v0,v1)] = (*eIter);
   }
-    
+
   std::list<GVertex*> m_embedded_vertices = master->embeddedVertices();
   m_vertices.insert(m_embedded_vertices.begin(),m_embedded_vertices.end());
 
   // check topological correspondence
-  
+
   if (l_vertices.size() != m_vertices.size()) {
     Msg::Error("Periodic connection specified between topologically "
                "incompatible surfaces %d and %d (that have %d vs %d model vertices)",
@@ -1548,41 +1548,41 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
                master->tag(),tag(),l_vtxToEdge.size(),m_vtxToEdge.size());
     return;
   }
-  
-  // compute corresponding vertices 
+
+  // compute corresponding vertices
 
   std::map<GVertex*,GVertex*> gVertexCounterparts;
-  
+
   std::set<GVertex*>::iterator mvIter;
   for (mvIter=m_vertices.begin();mvIter!=m_vertices.end();++mvIter) {
-    
+
     GVertex* m_vertex = *mvIter;
-    
+
     double xyzOri[4] = {m_vertex->x(),
                         m_vertex->y(),
                         m_vertex->z(),1};
     SPoint3 xyzTfo(0,0,0);
-    
+
     for (size_t i=0,ij=0;i<3;i++) {
       for (size_t j=0;j<4;j++,ij++) {
         xyzTfo[i] += tfo[ij] * xyzOri[j];
       }
     }
-    
+
     GVertex* l_vertex = NULL;
 
     std::set<GVertex*>::iterator lvIter = l_vertices.begin();
     for (;lvIter!=l_vertices.end();++lvIter) {
-      
+
       SPoint3 xyz((*lvIter)->x(),(*lvIter)->y(),(*lvIter)->z());
       SVector3 dist = xyz - xyzTfo;
-      
+
       if (dist.norm() < CTX::instance()->geom.tolerance) {
         l_vertex = *lvIter;
         break;
       }
     }
-    
+
     if (l_vertex==NULL) {
       Msg::Error("Was not able to find corresponding node for %d "
                  "for periodic connection of surface %d to %d "
@@ -1592,7 +1592,7 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
     }
     gVertexCounterparts[l_vertex] = m_vertex;
   }
-  
+
   if (gVertexCounterparts.size() != m_vertices.size()) {
     Msg::Error("Could not find all node correspondances "
                "for the periodic connection from surface %d to %d",
@@ -1606,10 +1606,10 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
 
   std::map<std::pair<GVertex*,GVertex*>,GEdge*>::iterator lv2eIter;
   for (lv2eIter=l_vtxToEdge.begin();lv2eIter!=l_vtxToEdge.end();lv2eIter++) {
-    
+
     std::pair<GVertex*,GVertex*> lPair = lv2eIter->first;
     GEdge* localEdge = lv2eIter->second;
-    
+
     std::pair<GVertex*,GVertex*> mPair(gVertexCounterparts[lPair.first],
                                        gVertexCounterparts[lPair.second]);
 		int sign = 1;
@@ -1619,7 +1619,7 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
       std::pair<GVertex*,GVertex*> backward(mPair.second,mPair.first);
       mv2eIter = m_vtxToEdge.find(backward);
     }
-      
+
     if (mv2eIter == m_vtxToEdge.end()) {
       Msg::Error("Could not find periodic copy of edge %d-%d "
                  "(corresponding to vertices %d %d) in face %d",
@@ -1631,10 +1631,10 @@ void GFace::setMeshMaster(GFace* master,const std::vector<double>& tfo) {
     GEdge* masterEdge = mv2eIter->second;
     localEdge->setMeshMaster(masterEdge,tfo);
     gEdgeCounterparts[localEdge] = std::make_pair(masterEdge,sign);
-  }		
-  
+  }
+
   // complete the information at the edge level
-  
+
   edgeCounterparts   = gEdgeCounterparts;
   vertexCounterparts = gVertexCounterparts;
   GEntity::setMeshMaster(master,tfo);
@@ -1709,15 +1709,13 @@ struct myLine {
   }
 };
 
-
-
-void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
-
+void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies)
+{
   std::map<GVertex*,GVertex*> vs2vt;
-  
+
   for (std::list<GEdge*>::iterator it=l_edges.begin();it!=l_edges.end();++it){
-    
-    // slave edge 
+
+    // slave edge
     GEdge* le = *it;
 
     int sign = 1;
@@ -1734,10 +1732,10 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
         return;
       }
     }
-    
+
     // master edge
     GEdge *me = master->model()->getEdgeByTag(abs(source_e));
-    
+
     if (source_e * sign > 0){
       vs2vt[me->getBeginVertex()] = le->getBeginVertex();
       vs2vt[me->getEndVertex()]   = le->getEndVertex();
@@ -1748,11 +1746,11 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
     }
   }
 
-  // --- find out the transformation 
+  // --- find out the transformation
 
   bool translation = true;
   SVector3 DX;
- 
+
   int count = 0;
   for (std::map<GVertex*, GVertex*>::iterator it = vs2vt.begin();
        it != vs2vt.end() ; ++it){
@@ -1769,24 +1767,24 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
   }
 
   std::vector<double> tfo(16);
-  
+
   if (translation) {
     Msg::Info("Periodic mesh translation found: dx = (%g,%g,%g)",
               DX.x(), DX.y(), DX.z());
-    
+
     for (size_t i=0;i<16;i++) tfo[i] = 0;
     for (size_t i=0;i<3;i++)  tfo[i*4+i] = 1;
     tfo[3]  = DX.x();
     tfo[7]  = DX.y();
-    tfo[11] = DX.z(); 
+    tfo[11] = DX.z();
   }
-  
+
   else {
-    
+
     bool rotation = false;
     myLine LINE;
     double ANGLE=0;
-    
+
     count = 0;
     rotation = true;
     std::vector<SPoint3> mps, mpt;
@@ -1800,14 +1798,14 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
     mean_plane mean_source, mean_target;
     computeMeanPlaneSimple(mps, mean_source);
     computeMeanPlaneSimple(mpt, mean_target);
-    
+
     myPlane PLANE_SOURCE(SPoint3(mean_source.x,mean_source.y,mean_source.z),
                          SVector3(mean_source.a,mean_source.b,mean_source.c));
     myPlane PLANE_TARGET(SPoint3(mean_target.x,mean_target.y,mean_target.z),
                          SVector3(mean_target.a,mean_target.b,mean_target.c));
-    
+
     LINE = myLine(PLANE_SOURCE, PLANE_TARGET);
-    
+
     // LINE is the axis of rotation
     // let us compute the angle of rotation
     count = 0;
@@ -1841,7 +1839,7 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
         }
       }
     }
-    
+
     if (rotation){
       Msg::Info("Periodic mesh rotation found: axis (%g,%g,%g) point (%g %g %g) angle %g",
                 LINE.t.x(), LINE.t.y(), LINE.t.z(), LINE.p.x(), LINE.p.y(), LINE.p.z(),
@@ -1850,22 +1848,22 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
       double ux = LINE.t.x();
       double uy = LINE.t.y();
       double uz = LINE.t.z();
-      
+
       tfo[0*4+0] = cos (ANGLE) + ux*ux*(1.-cos(ANGLE));
       tfo[0*4+1] = ux*uy*(1.-cos(ANGLE)) - uz * sin(ANGLE);
       tfo[0*4+2] = ux*uz*(1.-cos(ANGLE)) + uy * sin(ANGLE);
-      
+
       tfo[1*4+0] = ux*uy*(1.-cos(ANGLE)) + uz * sin(ANGLE);
       tfo[1*4+1] = cos (ANGLE) + uy*uy*(1.-cos(ANGLE));
       tfo[1*4+2] = uy*uz*(1.-cos(ANGLE)) - ux * sin(ANGLE);
-      
+
       tfo[2*4+0] = ux*uz*(1.-cos(ANGLE)) - uy * sin(ANGLE);
       tfo[2*4+1] = uy*uz*(1.-cos(ANGLE)) + ux * sin(ANGLE);
       tfo[2*4+2] = cos (ANGLE) + uz*uz*(1.-cos(ANGLE));
-      
+
       tfo[3] = tfo[7] = tfo[11] = 0;
       for (int i=0;i<4;i++) tfo[12+i] = 0;
-      
+
     }
     else {
       Msg::Error("Only rotations or translations can currently be computed "
@@ -1874,9 +1872,9 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies) {
       return;
     }
   }
-  
+
   // --- now check and encode the transformation
   // --- including for edges and vertices
 
-  setMeshMaster(master,tfo);
+  setMeshMaster(master, tfo);
 }
diff --git a/Geo/GModelFactory.cpp b/Geo/GModelFactory.cpp
index 109af03ba801c2f415d2b30ea2411cae7c2e988c..36f2539f82e18732754cf2c6499d5b0cdd4d089e 100644
--- a/Geo/GModelFactory.cpp
+++ b/Geo/GModelFactory.cpp
@@ -1220,25 +1220,24 @@ void OCCFactory::setPeriodicAllFaces(GModel *gm, std::vector<double> FaceTransla
 
 /* setPeriodicPairOfFaces: set periodic given a Slave/Master pair of
    numFace-Edgelist */
-void OCCFactory::setPeriodicPairOfFaces(GModel *gm, int numFaceMaster, 
+void OCCFactory::setPeriodicPairOfFaces(GModel *gm, int numFaceMaster,
                                         std::vector<int> EdgeListMaster,
-                                        int numFaceSlave, 
+                                        int numFaceSlave,
                                         std::vector<int> EdgeListSlave)
 {
-  int NEdges=EdgeListMaster.size();
   if (EdgeListMaster.size() != EdgeListSlave.size()){
     Msg::Error("Slave/Master faces don't have the same number of edges!");
   }
   else {
-    
+
     std::map<int,int> edgeCounterparts;
     std::vector<int>::iterator siter = EdgeListSlave.begin();
     std::vector<int>::iterator miter = EdgeListMaster.begin();
-    
+
     for (;siter!=EdgeListSlave.end();++siter,++miter) {
       edgeCounterparts[*siter] = *miter;
     }
-    
+
     Surface *s_slave = FindSurface(abs(numFaceSlave));
     if(s_slave){
       s_slave->master = numFaceMaster;
diff --git a/Geo/GModelIO_GEO.cpp b/Geo/GModelIO_GEO.cpp
index bdbab02a040f65c252065ca2eddb454b449ffdf5..c9bf423aee61923cacd59c5fa33b17b56d692a69 100644
--- a/Geo/GModelIO_GEO.cpp
+++ b/Geo/GModelIO_GEO.cpp
@@ -331,41 +331,45 @@ int GModel::importGEOInternals()
         ge->physicals.push_back(pnum);
     }
   }
-  
-  std::map<int,GEO_Internals::MasterEdge>::iterator peIter = _geo_internals->periodicEdges.begin();
+
+  std::map<int,GEO_Internals::MasterEdge>::iterator peIter =
+    _geo_internals->periodicEdges.begin();
   for (;peIter!=_geo_internals->periodicEdges.end();++peIter) {
-    
     int iTarget = peIter->first;
     GEO_Internals::MasterEdge& me = peIter->second;
     int iSource = me.tag;
-
     GEdge* target = getEdgeByTag(iTarget);
     GEdge* source = getEdgeByTag(iSource);
-
-    if (!target) Msg::Error("Unknown target line for periodic connection from %d to %d",iTarget,iSource);
-    if (!source) Msg::Error("Unknown source line for periodic connection from %d to %d",iTarget,iSource);
-
-    if (me.affineTransform.size()==16) target->setMeshMaster(source,me.affineTransform);
-    else                               target->setMeshMaster(source,me.tag > 0 ? 1 : -1);
-    
+    if (!target)
+      Msg::Error("Unknown target line for periodic connection from %d to %d",
+                 iTarget, iSource);
+    if (!source)
+      Msg::Error("Unknown source line for periodic connection from %d to %d",
+                 iTarget, iSource);
+    if (me.affineTransform.size()==16)
+      target->setMeshMaster(source,me.affineTransform);
+    else
+      target->setMeshMaster(source,me.tag > 0 ? 1 : -1);
   }
 
-
-  std::map<int,GEO_Internals::MasterFace>::iterator pfIter = _geo_internals->periodicFaces.begin();
+  std::map<int,GEO_Internals::MasterFace>::iterator pfIter =
+    _geo_internals->periodicFaces.begin();
   for (;pfIter!=_geo_internals->periodicFaces.end();++pfIter) {
-
     int iTarget = pfIter->first;
     GEO_Internals::MasterFace& mf = pfIter->second;
     int iSource = mf.tag;
-    
     GFace* target = getFaceByTag(iTarget);
     GFace* source = getFaceByTag(iSource);
-
-    if (!target) Msg::Error("Unknown target surface for periodic connection from %d to %d",iTarget,iSource);
-    if (!source) Msg::Error("Unknown source surface for periodic connection from %d to %d",iTarget,iSource);
-    
-    if (mf.affineTransform.size()==16) target->setMeshMaster(source,mf.affineTransform);
-    else                               target->setMeshMaster(source,mf.edgeCounterparts);
+    if (!target)
+      Msg::Error("Unknown target surface for periodic connection from %d to %d",
+                 iTarget, iSource);
+    if (!source)
+      Msg::Error("Unknown source surface for periodic connection from %d to %d",
+                 iTarget, iSource);
+    if (mf.affineTransform.size()==16)
+      target->setMeshMaster(source,mf.affineTransform);
+    else
+      target->setMeshMaster(source,mf.edgeCounterparts);
   }
 
   Msg::Debug("Gmsh model (GModel) imported:");
@@ -373,7 +377,6 @@ int GModel::importGEOInternals()
   Msg::Debug("%d Edges", edges.size());
   Msg::Debug("%d Faces", faces.size());
   Msg::Debug("%d Regions", regions.size());
-
   return 1;
 }
 
diff --git a/Geo/Geo.h b/Geo/Geo.h
index 7e22189f2ab1ef56b77da3b3af15a2adfbf5cb67..b93a6ed9982d9b4541fc92cee2baa585b4e2027d 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -288,7 +288,7 @@ class GEO_Internals{
   void alloc_all();
   void free_all();
  public:
-  
+
   Tree_T *Points;
   Tree_T *Curves;
   Tree_T *Surfaces;
@@ -300,12 +300,11 @@ class GEO_Internals{
   int MaxPointNum, MaxLineNum, MaxLineLoopNum, MaxSurfaceNum;
   int MaxSurfaceLoopNum, MaxVolumeNum, MaxPhysicalNum;
 
-  
   struct MasterEdge {
     int tag; // signed
     std::vector<double> affineTransform;
   };
-  
+
   std::map<int,MasterEdge> periodicEdges;
 
   struct MasterFace {
@@ -316,7 +315,7 @@ class GEO_Internals{
   };
 
   std::map<int,MasterFace> periodicFaces;
-  
+
   GEO_Internals(){ alloc_all(); }
   ~GEO_Internals(){ free_all(); }
   void destroy(){ free_all(); alloc_all(); }
diff --git a/Graphics/drawGlyph.cpp b/Graphics/drawGlyph.cpp
index c7c73fae9c774be306a3ad36080cb985d33ce963..f932f8c749eed23bc1e3caecab94e0d33bed7dad 100644
--- a/Graphics/drawGlyph.cpp
+++ b/Graphics/drawGlyph.cpp
@@ -229,6 +229,7 @@ void drawContext::drawImage(const std::string &name, double x, double y, double
   glEnable(GL_TEXTURE_2D);
   glBindTexture(GL_TEXTURE_2D, img->tex);
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
   glBegin(GL_QUADS);
   glTexCoord2f(1.0f, 1.0f); glVertex3d(x+wx*w, y+wy*w, z+wz*w);
   glTexCoord2f(1.0f, 0.0f); glVertex3d(x+wx*w+hx*h, y+wy*w+hy*h, z+wz*w+hz*h);
@@ -240,7 +241,7 @@ void drawContext::drawImage(const std::string &name, double x, double y, double
 
   if(billboard){
     glPopMatrix();
-    glMatrixMode (GL_PROJECTION);
+    glMatrixMode(GL_PROJECTION);
     glPopMatrix();
     glMatrixMode(matrixMode);
   }
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index bb2a20bfe4e65a36c3d39a1a3ed33641fc2bdac5..f67008341441edc3ab68de6402a0c053af9be1b1 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -70,8 +70,6 @@ static void computeElementShapes(GFace *gf, double &worst, double &avg,
   avg /= nT;
 }
 
-
-
 class quadMeshRemoveHalfOfOneDMesh
 {
   GFace *_gf;
@@ -79,10 +77,12 @@ public:
   std::map<GEdge*,std::vector<MLine*> > _backup;
   std::map<MEdge, MVertex*,Less_Edge> _middle;
   // remove one point every two and remember middle points
-  quadMeshRemoveHalfOfOneDMesh (GFace* gf) : _gf(gf){
+  quadMeshRemoveHalfOfOneDMesh (GFace* gf) : _gf(gf)
+  {
     // only do it if a recombination has to be done
-    if((CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine) && CTX::instance()->mesh.algoRecombine == 2){
-      //      printf("GFace %d removing half of the points in the 1D mesh\n",gf->tag());
+    if((CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine) &&
+       CTX::instance()->mesh.algoRecombine == 2){
+      // printf("GFace %d removing half of the points in the 1D mesh\n",gf->tag());
       std::list<GEdge*> edges = gf->edges();
       std::list<GEdge*>::iterator ite = edges.begin();
       while(ite != edges.end()){
@@ -110,7 +110,8 @@ public:
     }
     backgroundMesh::setSizeFactor(2.0);
   }
-  void subdivide (){
+  void subdivide ()
+  {
     std::vector<MQuadrangle*> qnew;
 
     std::map<MEdge,MVertex*,Less_Edge> eds;
@@ -184,9 +185,11 @@ public:
     _gf->quadrangles = qnew;
     //    printf("%d triangles %d quads\n",_gf->triangles.size(),_gf->quadrangles.size());
   }
-  void finish (){
+  void finish ()
+  {
     backgroundMesh::setSizeFactor(1.0);
-    if((CTX::instance()->mesh.recombineAll || _gf->meshAttributes.recombine) && CTX::instance()->mesh.algoRecombine == 2){
+    if((CTX::instance()->mesh.recombineAll || _gf->meshAttributes.recombine) &&
+       CTX::instance()->mesh.algoRecombine == 2){
       // recombine the elements on the half mesh
       recombineIntoQuads(_gf,true,true,.1);
       Msg::Info("subdividing");
@@ -203,7 +206,8 @@ public:
 			   _gf->meshStatistics.nbGoodQuality);
     }
   }
-  void restore (){
+  void restore ()
+  {
     std::list<GEdge*> edges = _gf->edges();
     std::list<GEdge*>::iterator ite = edges.begin();
     while(ite != edges.end()){
@@ -216,53 +220,47 @@ public:
   }
 };
 
-
-
 static void copyMesh(GFace *source, GFace *target)
 {
   std::map<MVertex*, MVertex*> vs2vt;
-      
+
   // add principal vertex pairs
-  
+
   std::list<GVertex*> s_vtcs = source->vertices();
   std::list<GVertex*> t_vtcs = target->vertices();
-  
-  
+
   if (s_vtcs.size() != t_vtcs.size()) {
     Msg::Info("Periodicity imposed on topologically incompatible surfaces"
               "(%d vs %d bounding vertices)",s_vtcs.size(),t_vtcs.size());
   }
-  
-  
+
   std::set<GVertex*> checkVtcs;
   checkVtcs.insert(s_vtcs.begin(),s_vtcs.end());
 
   for (std::list<GVertex*>::iterator tvIter=t_vtcs.begin();tvIter!=t_vtcs.end();++tvIter) {
-    
+
     GVertex* gvt = *tvIter;
     std::map<GVertex*,GVertex*>::iterator gvsIter = target->vertexCounterparts.find(gvt);
-    
-    
+
     if (gvsIter == target->vertexCounterparts.end()) {
       Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                 "vertex %d has no periodic counterpart",
                 target->tag(),source->tag(),gvt->tag());
     }
-    
+
     GVertex* gvs = gvsIter->second;
     if (checkVtcs.find(gvs) == checkVtcs.end()) {
       if (gvs) Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                          "vertex %d has periodic counterpart %d outside of source surface",
                          target->tag(),source->tag(),gvt->tag(),gvs->tag());
-      
+
       else Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                      "vertex %d has no periodic counterpart",
                      target->tag(),source->tag(),gvt->tag());
     }
-    
+
     vs2vt[gvs->mesh_vertices[0]] = gvt->mesh_vertices[0];
   }
-  
 
   // add corresponding edge nodes assuming edges were correctly meshed already
 
@@ -271,27 +269,27 @@ static void copyMesh(GFace *source, GFace *target)
 
   std::set<GEdge*> checkEdges;
   checkEdges.insert(s_edges.begin(),s_edges.end());
-  
-  for (std::list<GEdge*>::iterator te_iter = t_edges.begin();te_iter!=t_edges.end();++te_iter) {
-    
+
+  for (std::list<GEdge*>::iterator te_iter = t_edges.begin();
+       te_iter != t_edges.end(); ++te_iter) {
+
     GEdge* get = *te_iter;
-    std::map<GEdge*,std::pair<GEdge*,int> >::iterator gesIter = target->edgeCounterparts.find(get);
-    
+
+    std::map<GEdge*,std::pair<GEdge*,int> >::iterator gesIter =
+      target->edgeCounterparts.find(get);
     if (gesIter == target->edgeCounterparts.end()) {
       Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                 "edge %d has no periodic counterpart",
                 target->tag(),source->tag(),get->tag());
     }
-    
-    GEdge* ges = gesIter->second.first;
 
+    GEdge* ges = gesIter->second.first;
     if (checkEdges.find(ges) == checkEdges.end()) {
       Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                 "edge %d has periodic counterpart %d outside of get surface",
                 target->tag(),source->tag(),get->tag(),ges->tag());
     }
 
-
     if (get->mesh_vertices.size() != ges->mesh_vertices.size()) {
       Msg::Info("Error during periodic meshing of surface %d with surface %d:"
                 "edge %d has %d vertices, whereas correspondant %d has %d",
@@ -299,34 +297,32 @@ static void copyMesh(GFace *source, GFace *target)
                 get->tag(),get->mesh_vertices.size(),
                 ges->tag(),ges->mesh_vertices.size());
     }
-    
+
     int orientation = gesIter->second.second;
     int is = orientation == 1 ? 0 : get->mesh_vertices.size()-1;
-    
+
     for (unsigned it=0;it<get->mesh_vertices.size();it++,is+=orientation) {
       vs2vt[ges->mesh_vertices[is]] = get->mesh_vertices[it];
     }
   }
-  
+
   // now transform
-  
   std::vector<double>& tfo = target->affineTransform;
 
-
   for(unsigned int i = 0; i < source->mesh_vertices.size(); i++){
     MVertex *vs = source->mesh_vertices[i];
     SPoint2 XXX;
-    
+
     double ps[4] = {vs->x(), vs->y(), vs->z(), 1.};
     double res[4] = {0., 0., 0., 0.};
     int idx = 0;
     for(int i = 0; i < 4; i++)
       for(int j = 0; j < 4; j++)
         res[i] +=  tfo[idx++] * ps[j];
-    
+
     SPoint3 tp (res[0], res[1], res[2]);
     XXX = target->parFromPoint(tp);
-    
+
     GPoint gp = target->point(XXX);
     MVertex *vt = new MFaceVertex(gp.x(), gp.y(), gp.z(), target, gp.u(), gp.v());
     target->mesh_vertices.push_back(vt);
@@ -536,9 +532,10 @@ static bool recoverEdge(BDS_Mesh *m, GEdge *ge,
         BDS_Edge *e = m->recover_edge(pstart->iD, pend->iD, _fatallyFailed, e2r, notRecovered);
         if(e) e->g = g;
         else {
-	  if (_fatallyFailed) Msg::Error("Unable to recover an edge %g %g && %g %g (%d/%d)",
-					 vstart->x(), vstart->y(), vend->x(), vend->y(), i,
-					 ge->mesh_vertices.size());
+	  if (_fatallyFailed)
+            Msg::Error("Unable to recover an edge %g %g && %g %g (%d/%d)",
+                       vstart->x(), vstart->y(), vend->x(), vend->y(), i,
+                       ge->mesh_vertices.size());
 	  return !_fatallyFailed;
 	}
       }
@@ -2745,9 +2742,10 @@ static void getGFaceOrientation(GFace *gf, BoundaryLayerColumns *blc,
     const bool isBLEl = existBL &&
                         (blc->_toFirst.find(e) != blc->_toFirst.end());
     SVector3 nf;
-    if ((!isBLEl && orientNonBL == 0) || (isBLEl && orientBL == 0)) {       // Check only if orientation of BL/non-BL el. not already known
+    // Check only if orientation of BL/non-BL el. not already known
+    if ((!isBLEl && orientNonBL == 0) || (isBLEl && orientBL == 0)) {
       const bool found = fromVert ? getGFaceNormalFromVert(gf, e, nf) :
-                                    getGFaceNormalFromBary(gf, e, nf);
+        getGFaceNormalFromBary(gf, e, nf);
       if (found) {
         SVector3 ne = e->getFace(0).normal();
         const int orient = (dot(ne, nf) > 0.) ? 1 : -1;
@@ -2755,7 +2753,8 @@ static void getGFaceOrientation(GFace *gf, BoundaryLayerColumns *blc,
         else orientNonBL = orient;
       }
     }
-    if ((orientNonBL != 0) && (orientBL != 0)) break;                       // Stop when orientation found for non-BL and BL el.
+    // Stop when orientation found for non-BL and BL el.
+    if ((orientNonBL != 0) && (orientBL != 0)) break;
   }
 }
 
@@ -2804,18 +2803,21 @@ void orientMeshGFace::operator()(GFace *gf)
     }
 
     // Reverse BL and non-BL elements if needed
-    if (existBL) {                                                          // If there is a BL, test BL/non-BL elements
+    if (existBL) { // If there is a BL, test BL/non-BL elements
       if ((orientNonBL == -1) || (orientBL == -1))
         for (unsigned int iEl = 0; iEl < gf->getNumMeshElements(); iEl++) {
           MElement *e = gf->getMeshElement(iEl);
-          if (blc->_toFirst.find(e) == blc->_toFirst.end()) {               // If el. outside of BL...
-            if (orientNonBL == -1) e->reverse();                            // ... reverse if needed
+          // If el. outside of BL...
+          if (blc->_toFirst.find(e) == blc->_toFirst.end()) {
+            // ... reverse if needed
+            if (orientNonBL == -1) e->reverse();
           }
-          else                                                              // If el. in BL
-            if (orientBL == -1) e->reverse();                               // ... reverse if needed
+          else // If el. in BL
+            // ... reverse if needed
+            if (orientBL == -1) e->reverse();
         }
     }
-    else                                                                    // If no BL, reverse all elements if needed
+    else // If no BL, reverse all elements if needed
       if (orientNonBL == -1)
         for (unsigned int iEl = 0; iEl < gf->getNumMeshElements(); iEl++)
           gf->getMeshElement(iEl)->reverse();
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 8d1e662afe14a87fdb9ad5641be1de1ca70d1b76..e482c5051f4e562548a6f628048905237451df02 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -4026,201 +4026,207 @@ Constraints :
   | tSmoother tSurface ListOfDouble tAFFECT FExpr tEND
     {
       for(int i = 0; i < List_Nbr($3); i++){
-				double d;
-				List_Read($3, i, &d);
-				int j = (int)d;
-				Surface *s = FindSurface(j);
-				if(s){
-					s->TransfiniteSmoothing = (int)$5;
-				}
-				else{
-					GFace *gf = GModel::current()->getFaceByTag(j);
-					if(gf)
-						gf->meshAttributes.transfiniteSmoothing = (int)$5;
-					else
-						yymsg(1, "Unknown surface %d", (int)$5);
-				}
+        double d;
+        List_Read($3, i, &d);
+        int j = (int)d;
+        Surface *s = FindSurface(j);
+        if(s){
+          s->TransfiniteSmoothing = (int)$5;
+        }
+        else{
+          GFace *gf = GModel::current()->getFaceByTag(j);
+          if(gf)
+            gf->meshAttributes.transfiniteSmoothing = (int)$5;
+          else
+            yymsg(1, "Unknown surface %d", (int)$5);
+        }
       }
       List_Delete($3);
     }
-  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' tTransform PeriodicTransform tEND
-	{
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master lines (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-			if (List_Nbr($11) < 12){
-				yymsg(0, "Affine transformation requires at least 12 entries");
-			}
-			else {
-				
-				std::vector<double> transfo(16,0);
-				for(int i = 0; i < List_Nbr($11); i++) List_Read($11, i, &transfo[i]);
-				
-				for(int i = 0; i < List_Nbr($4); i++){ 
-					double d_master, d_slave;
-					List_Read($8, i, &d_master);
-					List_Read($4, i, &d_slave);
-					int j_master = (int)d_master;
-					int j_slave  = (int)d_slave;
-					
-					addPeriodicEdge(j_slave,j_master,transfo);
-				}
-			}
-		}	
-		List_Delete($8);
-		List_Delete($4);
-	}
-  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}'  tTransform PeriodicTransform tEND
-	{
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master faces (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-			if (List_Nbr($11) < 12){
-				yymsg(0, "Affine transformation requires at least 12 entries");
-			}
-			else {
-				std::vector<double> transfo(16,0);
-				for(int i = 0; i < List_Nbr($11); i++) List_Read($11, i, &transfo[i]);
-				
-				for(int i = 0; i < List_Nbr($4); i++){ 
-					double d_master, d_slave;
-					List_Read($8, i, &d_master);
-					List_Read($4, i, &d_slave);
-					addPeriodicFace(d_slave,d_master,transfo);
-				}
-			}
-		}
-		List_Delete($4);
-		List_Delete($8);
-	}
-  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' tRotate '{' VExpr ',' VExpr ',' FExpr '}' tEND
-	{		
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master edges (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-			SPoint3 origin($12[0],$12[1],$12[2]);
-			SPoint3 axis($14[0],$14[1],$14[2]);
-			double  angle($16);
-			SPoint3 translation(0,0,0);
-			
-			std::vector<double> transfo;
-			computeAffineTransformation(origin,axis,angle,translation,transfo);
-			
-			for(int i = 0; i < List_Nbr($4); i++){ 
-				double d_master, d_slave;
-				List_Read($8, i, &d_master);
-				List_Read($4, i, &d_slave);
-				addPeriodicEdge(d_slave,d_master,transfo);
-			}
-		}
-		List_Delete($4);
-		List_Delete($8);
-	}
-  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' tRotate '{' VExpr ',' VExpr ',' FExpr '}' tEND
-	{
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master faces (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-				
-			SPoint3 origin($12[0],$12[1],$12[2]);
-			SPoint3 axis($14[0],$14[1],$14[2]);
-			double  angle($16);
-			SPoint3 translation(0,0,0);
-			
-			std::vector<double> transfo;
-			computeAffineTransformation(origin,axis,angle,translation,transfo);
-			
-			for(int i = 0; i < List_Nbr($4); i++){ 
-				double d_master, d_slave;
-				List_Read($8, i, &d_master);
-				List_Read($4, i, &d_slave);
-				addPeriodicFace(d_slave,d_master,transfo);
-			}
-		}
-		List_Delete($4);
-		List_Delete($8);
-	}
-  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' tTranslate VExpr tEND
-	{		
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master edges (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-			SPoint3 origin(0,0,0);
-			SPoint3 axis(0,0,0);
-			double  angle(0);
-			SPoint3 translation($11[0],$11[1],$11[2]);
-			
-			std::vector<double> transfo;
-			computeAffineTransformation(origin,axis,angle,translation,transfo);
-			
-			for(int i = 0; i < List_Nbr($4); i++){ 
-				double d_master, d_slave;
-				List_Read($8, i, &d_master);
-				List_Read($4, i, &d_slave);
-				addPeriodicEdge(d_slave,d_master,transfo);
-			}
-		}
-		List_Delete($4);
-		List_Delete($8);
-	}
-  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT '{' RecursiveListOfDouble '}' tTranslate VExpr tEND
-	{
-		if (List_Nbr($4) != List_Nbr($8)){
-			yymsg(0, "Number of master faces (%d) different from number of "
-						"slaves (%d) ", List_Nbr($8), List_Nbr($4));
-		}
-		else{
-			SPoint3 origin(0,0,0);
-			SPoint3 axis(0,0,0);
-			double  angle(0);
-			SPoint3 translation($11[0],$11[1],$11[2]);
-			
-			std::vector<double> transfo;
-			computeAffineTransformation(origin,axis,angle,translation,transfo);
-			
-			for(int i = 0; i < List_Nbr($4); i++){ 
-				double d_master, d_slave;
-				List_Read($8, i, &d_master);
-				List_Read($4, i, &d_slave);
-				addPeriodicFace(d_slave,d_master,transfo);
-			}
-		}
-		List_Delete($4);
-		List_Delete($8);
-	}
-  | tPeriodic tSurface FExpr '{' RecursiveListOfDouble '}' tAFFECT FExpr '{' RecursiveListOfDouble '}' tEND
-	{
-		if (List_Nbr($5) != List_Nbr($10)){
-			yymsg(0, "Number of master surface edges (%d) different from number of "
-						"slave (%d) edges", List_Nbr($10), List_Nbr($5));
-		}
-		else{
-			int j_master = (int)$8;
-			int j_slave = (int)$3;
-			
-			std::map<int,int> edgeCounterParts;
-			for (int i = 0; i < List_Nbr($5); i++){
-				double ds,dm;
-				List_Read($5,i,&ds);
-				List_Read($10,i,&dm);
-				edgeCounterParts[(int) ds] = (int) dm;
-				std::cout << "edge " << ds << " to " << dm << std::endl;
-			}
-			addPeriodicFace(j_slave,j_master,edgeCounterParts);
-		}
-		List_Delete($5);
-		List_Delete($10);
-	}
+  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}' tTransform PeriodicTransform tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master lines (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        if (List_Nbr($11) < 12){
+          yymsg(0, "Affine transformation requires at least 12 entries");
+        }
+        else {
+
+          std::vector<double> transfo(16,0);
+          for(int i = 0; i < List_Nbr($11); i++) List_Read($11, i, &transfo[i]);
+
+          for(int i = 0; i < List_Nbr($4); i++){
+            double d_master, d_slave;
+            List_Read($8, i, &d_master);
+            List_Read($4, i, &d_slave);
+            int j_master = (int)d_master;
+            int j_slave  = (int)d_slave;
+
+            addPeriodicEdge(j_slave,j_master,transfo);
+          }
+        }
+      }
+      List_Delete($8);
+      List_Delete($4);
+    }
+  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}'  tTransform PeriodicTransform tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master faces (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        if (List_Nbr($11) < 12){
+          yymsg(0, "Affine transformation requires at least 12 entries");
+        }
+        else {
+          std::vector<double> transfo(16,0);
+          for(int i = 0; i < List_Nbr($11); i++) List_Read($11, i, &transfo[i]);
+
+          for(int i = 0; i < List_Nbr($4); i++){
+            double d_master, d_slave;
+            List_Read($8, i, &d_master);
+            List_Read($4, i, &d_slave);
+            addPeriodicFace(d_slave,d_master,transfo);
+          }
+        }
+      }
+      List_Delete($4);
+      List_Delete($8);
+    }
+  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}' tRotate '{' VExpr ',' VExpr ',' FExpr '}' tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master edges (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        SPoint3 origin($12[0],$12[1],$12[2]);
+        SPoint3 axis($14[0],$14[1],$14[2]);
+        double  angle($16);
+        SPoint3 translation(0,0,0);
+
+        std::vector<double> transfo;
+        computeAffineTransformation(origin,axis,angle,translation,transfo);
+
+        for(int i = 0; i < List_Nbr($4); i++){
+          double d_master, d_slave;
+          List_Read($8, i, &d_master);
+          List_Read($4, i, &d_slave);
+          addPeriodicEdge(d_slave,d_master,transfo);
+        }
+      }
+      List_Delete($4);
+      List_Delete($8);
+    }
+  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}' tRotate '{' VExpr ',' VExpr ',' FExpr '}' tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master faces (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        SPoint3 origin($12[0],$12[1],$12[2]);
+        SPoint3 axis($14[0],$14[1],$14[2]);
+        double  angle($16);
+        SPoint3 translation(0,0,0);
+
+        std::vector<double> transfo;
+        computeAffineTransformation(origin,axis,angle,translation,transfo);
+
+        for(int i = 0; i < List_Nbr($4); i++){
+          double d_master, d_slave;
+          List_Read($8, i, &d_master);
+          List_Read($4, i, &d_slave);
+          addPeriodicFace(d_slave,d_master,transfo);
+        }
+      }
+      List_Delete($4);
+      List_Delete($8);
+    }
+  | tPeriodic tLine '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}' tTranslate VExpr tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master edges (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        SPoint3 origin(0,0,0);
+        SPoint3 axis(0,0,0);
+        double  angle(0);
+        SPoint3 translation($11[0],$11[1],$11[2]);
+
+        std::vector<double> transfo;
+        computeAffineTransformation(origin,axis,angle,translation,transfo);
+
+        for(int i = 0; i < List_Nbr($4); i++){
+          double d_master, d_slave;
+          List_Read($8, i, &d_master);
+          List_Read($4, i, &d_slave);
+          addPeriodicEdge(d_slave,d_master,transfo);
+        }
+      }
+      List_Delete($4);
+      List_Delete($8);
+    }
+  | tPeriodic tSurface '{' RecursiveListOfDouble '}' tAFFECT
+    '{' RecursiveListOfDouble '}' tTranslate VExpr tEND
+    {
+      if (List_Nbr($4) != List_Nbr($8)){
+        yymsg(0, "Number of master faces (%d) different from number of "
+              "slaves (%d) ", List_Nbr($8), List_Nbr($4));
+      }
+      else{
+        SPoint3 origin(0,0,0);
+        SPoint3 axis(0,0,0);
+        double  angle(0);
+        SPoint3 translation($11[0],$11[1],$11[2]);
+
+        std::vector<double> transfo;
+        computeAffineTransformation(origin,axis,angle,translation,transfo);
+
+        for(int i = 0; i < List_Nbr($4); i++){
+          double d_master, d_slave;
+          List_Read($8, i, &d_master);
+          List_Read($4, i, &d_slave);
+          addPeriodicFace(d_slave,d_master,transfo);
+        }
+      }
+      List_Delete($4);
+      List_Delete($8);
+    }
+  | tPeriodic tSurface FExpr '{' RecursiveListOfDouble '}'
+    tAFFECT FExpr '{' RecursiveListOfDouble '}' tEND
+    {
+      if (List_Nbr($5) != List_Nbr($10)){
+        yymsg(0, "Number of master surface edges (%d) different from number of "
+              "slave (%d) edges", List_Nbr($10), List_Nbr($5));
+      }
+      else{
+        int j_master = (int)$8;
+        int j_slave = (int)$3;
+
+        std::map<int,int> edgeCounterParts;
+        for (int i = 0; i < List_Nbr($5); i++){
+          double ds,dm;
+          List_Read($5,i,&ds);
+          List_Read($10,i,&dm);
+          edgeCounterParts[(int) ds] = (int) dm;
+          std::cout << "edge " << ds << " to " << dm << std::endl;
+        }
+        addPeriodicFace(j_slave,j_master,edgeCounterParts);
+      }
+      List_Delete($5);
+      List_Delete($10);
+    }
   | tPoint '{' RecursiveListOfDouble '}' tIn tSurface '{' FExpr '}' tEND
     {
       Surface *s = FindSurface((int)$8);
@@ -5994,121 +6000,117 @@ void yymsg(int level, const char *fmt, ...)
 
 
 void addPeriodicFace(int iTarget,int iSource,
-										 const std::vector<double>& affineTransform) {
-	
-	Surface *target = FindSurface(abs(iTarget));
-	
-	if (target) {
-		GEO_Internals::MasterFace& mf = 
-			GModel::current()->getGEOInternals()->periodicFaces[iTarget];
-		mf.tag = iSource;
-		mf.edgeCounterparts.clear();
-		mf.affineTransform = affineTransform;
-	}
-	else{
-		GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); 
-		GFace *source = GModel::current()->getFaceByTag(abs(iSource)); 
-		if (!target)  Msg::Error("Could not find edge %d for periodic copy from %d",
-														iTarget,iSource);
-		target->setMeshMaster(source,affineTransform);
-	}
+                     const std::vector<double>& affineTransform)
+{
+  Surface *target = FindSurface(abs(iTarget));
+
+  if (target) {
+    GEO_Internals::MasterFace& mf =
+      GModel::current()->getGEOInternals()->periodicFaces[iTarget];
+    mf.tag = iSource;
+    mf.edgeCounterparts.clear();
+    mf.affineTransform = affineTransform;
+  }
+  else{
+    GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
+    GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+    if (!target)  Msg::Error("Could not find edge %d for periodic copy from %d",
+                             iTarget,iSource);
+    target->setMeshMaster(source,affineTransform);
+  }
 }
 
-
 void addPeriodicFace(int iTarget,int iSource,
-										 const std::map<int,int>& edgeCounterparts) {
-	
-	Surface *target = FindSurface(abs(iTarget));	
-	
-	std::cout << "Encoding periodic connection between " << iTarget << " and " << iSource << std::endl;
-	std::map<int,int>::const_iterator sIter = edgeCounterparts.begin();
-	for (;sIter!=edgeCounterparts.end();++sIter) {
-		std::cout << sIter->first << " - " << sIter->second << std::endl;
-	}
+                     const std::map<int,int>& edgeCounterparts)
+{
+  Surface *target = FindSurface(abs(iTarget));
 
+  std::cout << "Encoding periodic connection between " << iTarget << " and " << iSource << std::endl;
+  std::map<int,int>::const_iterator sIter = edgeCounterparts.begin();
+  for (;sIter!=edgeCounterparts.end();++sIter) {
+    std::cout << sIter->first << " - " << sIter->second << std::endl;
+  }
 
-	if (target) {
-		GEO_Internals::MasterFace& mf = 
-			GModel::current()->getGEOInternals()->periodicFaces[iTarget];
-		mf.tag = iSource;
-		mf.edgeCounterparts = edgeCounterparts;
-		mf.affineTransform.clear();
-	}
-	else{
-		GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); 
-		GFace *source = GModel::current()->getFaceByTag(abs(iSource)); 
-		if (!target || !source)  Msg::Error("Could not find surface %d or %d for periodic copy",
-																				iTarget,iSource);
-		target->setMeshMaster(source,edgeCounterparts);
-	}
+  if (target) {
+    GEO_Internals::MasterFace& mf =
+      GModel::current()->getGEOInternals()->periodicFaces[iTarget];
+    mf.tag = iSource;
+    mf.edgeCounterparts = edgeCounterparts;
+    mf.affineTransform.clear();
+  }
+  else{
+    GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
+    GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+    if (!target || !source)  Msg::Error("Could not find surface %d or %d for periodic copy",
+                                        iTarget,iSource);
+    target->setMeshMaster(source,edgeCounterparts);
+  }
 }
 
 void addPeriodicEdge(int iTarget,int iSource,
-										 const std::vector<double>& affineTransform) {
-	
-	Curve *target = FindCurve(abs(iTarget));
-	if (target) {
-		GEO_Internals::MasterEdge& me = GModel::current()->getGEOInternals()->periodicEdges[iTarget];
-		me.tag = iSource;
-		me.affineTransform = affineTransform;
-		
-		GEO_Internals::MasterEdge& test = GModel::current()->getGEOInternals()->periodicEdges[iTarget];
-	}
-	else{
-		GEdge *target = GModel::current()->getEdgeByTag(abs(iTarget)); 
-		GEdge *source = GModel::current()->getEdgeByTag(abs(iSource)); 
-		if (!target || !source) Msg::Error("Could not find surface %d or %d for periodic copy",
-																			 iTarget,iSource);
-		if (affineTransform.size() == 16) {
-			target->setMeshMaster(source,affineTransform);
-		}
-		else {
-			target->setMeshMaster(source,iSource*iTarget < 0 ? -1:1);
-		}
-	}
+                     const std::vector<double>& affineTransform)
+{
+  Curve *target = FindCurve(abs(iTarget));
+  if (target) {
+    GEO_Internals::MasterEdge& me =
+      GModel::current()->getGEOInternals()->periodicEdges[iTarget];
+    me.tag = iSource;
+    me.affineTransform = affineTransform;
+  }
+  else{
+    GEdge *target = GModel::current()->getEdgeByTag(abs(iTarget));
+    GEdge *source = GModel::current()->getEdgeByTag(abs(iSource));
+    if (!target || !source) Msg::Error("Could not find surface %d or %d for periodic copy",
+                                       iTarget,iSource);
+    if (affineTransform.size() == 16) {
+      target->setMeshMaster(source,affineTransform);
+    }
+    else {
+      target->setMeshMaster(source,iSource*iTarget < 0 ? -1:1);
+    }
+  }
 }
 
 void computeAffineTransformation(SPoint3& origin,
-																 SPoint3& axis,
-																 double angle,
-																 SPoint3& translation,
-																 std::vector<double>& tfo) {
-
-	tfo.resize(16,0.0);
-
-	angle *= acos(-1.)/180.;
-	
-	double ca = cos(angle);
-	double sa = sin(angle);
-
-	double ux = axis.x();
-	double uy = axis.y();
-	double uz = axis.z();
-	
-	tfo.resize(16);
-  
-	tfo[0*4+0] = ca + ux*ux*(1.-ca);
-	tfo[0*4+1] = ux*uy*(1.-ca) - uz * sa;
-	tfo[0*4+2] = ux*uz*(1.-ca) + uy * sa;
-  
-	tfo[1*4+0] = ux*uy*(1.-ca) + uz * sa;
-	tfo[1*4+1] = ca + uy*uy*(1.-ca);
-	tfo[1*4+2] = uy*uz*(1.-ca) - ux * sa;
-  
-	tfo[2*4+0] = ux*uz*(1.-ca) - uy * sa;
-	tfo[2*4+1] = uy*uz*(1.-ca) + ux * sa;
-	tfo[2*4+2] = ca + uz*uz*(1.-ca);
-	
-	int idx = 0;
-	for (size_t i=0;i<3;i++) {
-		int tIdx = i*4+3;
-		tfo[tIdx] = translation[i];
-		for (int j=0;j<3;j++,idx++) {
-			tfo[tIdx] -= tfo[idx] * origin[j];
-		}
-		idx++;
-	}
-	
-	for (int i=0;i<4;i++) tfo[12+i] = 0;
-	tfo[15] = 1;
+                                 SPoint3& axis,
+                                 double angle,
+                                 SPoint3& translation,
+                                 std::vector<double>& tfo)
+{
+  tfo.resize(16,0.0);
+  angle *= acos(-1.)/180.;
+
+  double ca = cos(angle);
+  double sa = sin(angle);
+
+  double ux = axis.x();
+  double uy = axis.y();
+  double uz = axis.z();
+
+  tfo.resize(16);
+
+  tfo[0*4+0] = ca + ux*ux*(1.-ca);
+  tfo[0*4+1] = ux*uy*(1.-ca) - uz * sa;
+  tfo[0*4+2] = ux*uz*(1.-ca) + uy * sa;
+
+  tfo[1*4+0] = ux*uy*(1.-ca) + uz * sa;
+  tfo[1*4+1] = ca + uy*uy*(1.-ca);
+  tfo[1*4+2] = uy*uz*(1.-ca) - ux * sa;
+
+  tfo[2*4+0] = ux*uz*(1.-ca) - uy * sa;
+  tfo[2*4+1] = uy*uz*(1.-ca) + ux * sa;
+  tfo[2*4+2] = ca + uz*uz*(1.-ca);
+
+  int idx = 0;
+  for (size_t i = 0; i < 3; i++) {
+    int tIdx = i*4+3;
+    tfo[tIdx] = translation[i];
+    for (int j = 0; j < 3; j++, idx++) {
+      tfo[tIdx] -= tfo[idx] * origin[j];
+    }
+    idx++;
+  }
+
+  for (int i = 0; i < 4; i++) tfo[12+i] = 0;
+  tfo[15] = 1;
 }