From 733882475c5fd9179dcab3a274f9c6a41cfca65b Mon Sep 17 00:00:00 2001
From: Darcy Beurle <darcy@neonfe.io>
Date: Tue, 19 Jun 2018 18:23:20 +0200
Subject: [PATCH] Change to std::size_t instead of size_type

---
 Common/gmsh.cpp                      |  8 ++---
 Geo/Chain.cpp                        |  2 +-
 Geo/GFace.cpp                        | 10 +++---
 Geo/GModel.cpp                       | 34 +++++++++----------
 Geo/GModelCreateTopologyFromMesh.cpp |  2 +-
 Geo/GModelIO_DIFF.cpp                |  4 +--
 Geo/GModelIO_INP.cpp                 |  2 +-
 Geo/GModelIO_NEU.cpp                 |  2 +-
 Geo/GModelIO_TOCHNOG.cpp             |  2 +-
 Geo/GModelIO_UNV.cpp                 |  2 +-
 Geo/GModelVertexArrays.cpp           |  4 +--
 Geo/GeomMeshMatcher.cpp              |  2 +-
 Geo/MElement.cpp                     | 18 +++++-----
 Geo/MElement.h                       |  5 +--
 Geo/MElementCut.cpp                  | 20 +++++------
 Geo/MElementCut.h                    |  4 +--
 Geo/MElementOctree.cpp               |  8 ++---
 Geo/MFace.cpp                        |  2 +-
 Geo/MFace.h                          | 20 ++++-------
 Geo/MHexahedron.h                    |  8 ++---
 Geo/MLine.h                          |  6 ++--
 Geo/MPoint.h                         |  2 +-
 Geo/MPrism.h                         |  8 ++---
 Geo/MPyramid.h                       |  4 +--
 Geo/MQuadrangle.cpp                  |  2 +-
 Geo/MQuadrangle.h                    |  8 ++---
 Geo/MTetrahedron.h                   |  6 ++--
 Geo/MTriangle.cpp                    |  2 +-
 Geo/MTriangle.h                      |  6 ++--
 Geo/MTrihedron.h                     |  2 +-
 Geo/gmshLevelset.cpp                 |  2 +-
 Graphics/drawMesh.cpp                |  6 ++--
 Mesh/BGMBase.cpp                     | 10 +++---
 Mesh/BackgroundMesh2D.cpp            |  6 ++--
 Mesh/BackgroundMesh3D.cpp            | 14 ++++----
 Mesh/BoundaryLayers.cpp              |  4 +--
 Mesh/Generator.cpp                   |  2 +-
 Mesh/HighOrder.cpp                   | 16 ++++-----
 Mesh/QuadTriExtruded2D.cpp           |  8 ++---
 Mesh/ThinLayer.cpp                   |  2 +-
 Mesh/Voronoi3D.cpp                   |  6 ++--
 Mesh/directions3D.cpp                | 22 ++++++------
 Mesh/meshGFace.cpp                   |  6 ++--
 Mesh/meshGFaceLloyd.cpp              |  2 +-
 Mesh/meshGFaceOptimize.cpp           |  2 +-
 Mesh/meshGFaceOptimize.h             |  2 +-
 Mesh/meshGRegionCarveHole.cpp        |  4 +--
 Mesh/meshGRegionRelocateVertex.cpp   |  6 ++--
 Mesh/meshMetric.cpp                  |  8 ++---
 Mesh/meshPartition.cpp               | 10 +++---
 Mesh/pointInsertion.cpp              |  2 +-
 Mesh/simple3D.cpp                    |  8 ++---
 Mesh/surfaceFiller.cpp               | 10 +++---
 Mesh/yamakawa.cpp                    | 50 ++++++++++++++--------------
 Numeric/approximationError.cpp       |  2 +-
 Plugin/Crack.cpp                     | 10 +++---
 Plugin/Distance.cpp                  | 12 +++----
 Plugin/FaultZone.cpp                 |  8 ++---
 Plugin/FieldFromAmplitudePhase.cpp   |  2 +-
 Plugin/MeshSubEntities.cpp           |  2 +-
 Plugin/ShowNeighborElements.cpp      |  4 +--
 Plugin/ThinLayerFixMesh.cpp          |  2 +-
 Plugin/VoroMetal.cpp                 |  2 +-
 Post/OctreePost.cpp                  |  6 ++--
 Post/PViewDataGModel.cpp             |  2 +-
 Solver/elasticitySolver.cpp          | 10 +++---
 Solver/filters.h                     |  2 +-
 Solver/groupOfElements.h             |  4 +--
 Solver/thermicSolver.cpp             |  6 ++--
 69 files changed, 239 insertions(+), 248 deletions(-)

diff --git a/Common/gmsh.cpp b/Common/gmsh.cpp
index 2014d02ef0..750b6f9dc2 100644
--- a/Common/gmsh.cpp
+++ b/Common/gmsh.cpp
@@ -940,7 +940,7 @@ GMSH_API void gmsh::model::mesh::getElements(std::vector<int> &elementTypes,
         MElement *e = ge->getMeshElement(j);
         if(e->getTypeForMSH() == elementType){
           elementTags.back().push_back(e->getNum());
-          for(MElement::size_type k = 0; k < e->getNumVertices(); k++){
+          for(std::size_t k = 0; k < e->getNumVertices(); k++){
             nodeTags.back().push_back(e->getVertex(k)->getNum());
           }
         }
@@ -961,7 +961,7 @@ GMSH_API void gmsh::model::mesh::getElement(const int elementTag,
   }
   elementType = e->getTypeForMSH();
   nodeTags.clear();
-  for(MElement::size_type i = 0; i < e->getNumVertices(); i++){
+  for(std::size_t i = 0; i < e->getNumVertices(); i++){
     MVertex *v = e->getVertex(i);
     if(!v){
       Msg::Error("Unknown node in element %d", elementTag);
@@ -988,7 +988,7 @@ GMSH_API void gmsh::model::mesh::getElementByCoordinates(const double x,
   elementTag = e->getNum();
   elementType = e->getTypeForMSH();
   nodeTags.clear();
-  for(MElement::size_type i = 0; i < e->getNumVertices(); i++){
+  for(std::size_t i = 0; i < e->getNumVertices(); i++){
     MVertex *v = e->getVertex(i);
     if(!v){
       Msg::Error("Unknown node in element %d", elementTag);
@@ -1181,7 +1181,7 @@ GMSH_API void gmsh::model::mesh::getElementsByType(const int elementType,
         MElement *e = ge->getMeshElementByType(familyType, j);
         if(haveElementTags) elementTags[o] = e->getNum();
         if(haveNodeTags){
-          for(MElement::size_type k = 0; k < e->getNumVertices(); k++){
+          for(std::size_t k = 0; k < e->getNumVertices(); k++){
             nodeTags[idx++] = e->getVertex(k)->getNum();
           }
         }
diff --git a/Geo/Chain.cpp b/Geo/Chain.cpp
index dca304eafd..805c5dd2fe 100644
--- a/Geo/Chain.cpp
+++ b/Geo/Chain.cpp
@@ -259,7 +259,7 @@ bool ElemChain::inEntity(GEntity* e) const
 {
   if(_vertexCache[e].empty()) {
     for(unsigned int i = 0; i < e->getNumMeshElements(); i++)
-      for(GEntity::size_type j = 0; j < e->getMeshElement(i)->getNumVertices(); j++)
+      for(std::size_t j = 0; j < e->getMeshElement(i)->getNumVertices(); j++)
         _vertexCache[e].insert(e->getMeshElement(i)->getVertex(j));
   }
 
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index f848074642..2e953c9e30 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -153,7 +153,7 @@ void GFace::deleteMesh(bool onlyDeleteElements)
   model()->destroyMeshCaches();
 }
 
-GEntity::size_type GFace::getNumMeshElements() const
+std::size_t GFace::getNumMeshElements() const
 {
   return triangles.size() + quadrangles.size() + polygons.size();
 }
@@ -2112,21 +2112,21 @@ void GFace::alignElementsWithMaster()
 
     std::set<MFace,Less_Face> srcFaces;
 
-    for(GEntity::size_type i = 0; i < master->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < master->getNumMeshElements(); i++) {
       MElement *face = master->getMeshElement(i);
       std::vector<MVertex *> vtcs;
       vtcs.reserve(face->getNumVertices());
-      for(MFace::size_type j = 0; j < face->getNumVertices(); j++) {
+      for(std::size_t j = 0; j < face->getNumVertices(); j++) {
         vtcs.push_back(face->getVertex(j));
       }
       srcFaces.insert(MFace(vtcs));
     }
 
-    for (GEntity::size_type i=0;i<getNumMeshElements();i++) {
+    for (std::size_t i=0;i<getNumMeshElements();i++) {
 
       MElement* face = getMeshElement(i);
       std::vector<MVertex*> vtcs;
-      for (MElement::size_type j=0;j<face->getNumVertices();j++) {
+      for (std::size_t j=0;j<face->getNumVertices();j++) {
         MVertex* tv = face->getVertex(j);
 
         std::map<MVertex*,MVertex*>::iterator cIter = correspondingVertices.find(tv);
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index b5adae43e4..8084fcdba2 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -911,9 +911,9 @@ static void checkConformity
   else{
     //A face can exist  twice (inside) or once (boundary)
     if(connectivity != 2){
-      for(MElement::size_type iV = 0; iV < face.getNumVertices(); iV++)
+      for(std::size_t iV = 0; iV < face.getNumVertices(); iV++)
         if(face.getVertex(iV)->onWhat()->dim() == 3 || connectivity != 1){
-          for(MElement::size_type jV = 0; jV < face.getNumVertices(); jV++)
+          for(std::size_t jV = 0; jV < face.getNumVertices(); jV++)
             Msg::Info("Vertex %i dim %i",face.getVertex(jV)->getNum(),
                       face.getVertex(iV)->onWhat()->dim());
           Msg::Error("Non conforming element %i (%i connection(s) for a face "
@@ -1345,9 +1345,9 @@ void GModel::getMeshVerticesForPhysicalGroup(int dim, int num, std::vector<MVert
       sv.insert(g->mesh_vertices[0]);
     }
     else{
-      for(MElement::size_type j = 0; j < entities[i]->getNumMeshElements(); j++){
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++){
         MElement *e = entities[i]->getMeshElement(j);
-        for(MElement::size_type k = 0; k < e->getNumVertices(); k++)
+        for(std::size_t k = 0; k < e->getNumVertices(); k++)
           sv.insert(e->getVertex(k));
       }
     }
@@ -1468,9 +1468,9 @@ int GModel::indexMeshVertices(bool all, int singlePartition, bool renumber)
   // in that partition)
   for(unsigned int i = 0; i < entities.size(); i++){
     if(all || entities[i]->physicals.size()){
-      for(MElement::size_type j = 0; j < entities[i]->getNumMeshElements(); j++){
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++){
         MElement *e = entities[i]->getMeshElement(j);
-        for(MElement::size_type k = 0; k < e->getNumVertices(); k++){
+        for(std::size_t k = 0; k < e->getNumVertices(); k++){
           if(singlePartition <= 0 || e->getPartition() == singlePartition)
             e->getVertex(k)->setIndex(0);
           else if(e->getVertex(k)->getIndex() == -1)
@@ -1482,8 +1482,8 @@ int GModel::indexMeshVertices(bool all, int singlePartition, bool renumber)
 
   // renumber all the mesh vertices tagged with 0
   int numVertices = 0, index = 0;
-  for(MElement::size_type i = 0; i < entities.size(); i++){
-    for(MElement::size_type j = 0; j < entities[i]->mesh_vertices.size(); j++){
+  for(std::size_t i = 0; i < entities.size(); i++){
+    for(std::size_t j = 0; j < entities[i]->mesh_vertices.size(); j++){
       MVertex *v = entities[i]->mesh_vertices[j];
       if(!v->getIndex()){
         index++;
@@ -1506,8 +1506,8 @@ void GModel::scaleMesh(double factor)
 {
   std::vector<GEntity*> entities;
   getEntities(entities);
-  for(MElement::size_type i = 0; i < entities.size(); i++)
-    for(MElement::size_type j = 0; j < entities[i]->mesh_vertices.size(); j++){
+  for(std::size_t i = 0; i < entities.size(); i++)
+    for(std::size_t j = 0; j < entities[i]->mesh_vertices.size(); j++){
       MVertex *v = entities[i]->mesh_vertices[j];
       v->x() *= factor;
       v->y() *= factor;
@@ -1662,7 +1662,7 @@ static void _associateEntityWithElementVertices(GEntity *ge,
                                                 bool force = false)
 {
   for(unsigned int i = 0; i < elements.size(); i++) {
-    for(GEntity::size_type j = 0; j < elements[i]->getNumVertices(); j++) {
+    for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++) {
       if(force || !elements[i]->getVertex(j)->onWhat() ||
          elements[i]->getVertex(j)->onWhat()->dim() > ge->dim())
         elements[i]->getVertex(j)->setEntity(ge);
@@ -1992,13 +1992,13 @@ GModel *GModel::createGModel
         entityToElementsMap.begin(); it != entityToElementsMap.end();
       it++) {
     int entity = it->first;
-    for(MElement::size_type iE = 0; iE < it->second.size(); iE++) {
+    for(std::size_t iE = 0; iE < it->second.size(); iE++) {
       MElement* me = it->second[iE];
-      for(MElement::size_type iV = 0; iV < me->getNumVertices(); iV++) {
+      for(std::size_t iV = 0; iV < me->getNumVertices(); iV++) {
         vertexMap[me->getVertex(iV)->getNum()] = me->getVertex(iV);
       }
       std::vector<int> entityPhysicals = entityToPhysicalsMap[entity];
-      for(MElement::size_type i = 0; i < entityPhysicals.size(); i++) {
+      for(std::size_t i = 0; i < entityPhysicals.size(); i++) {
         physicals[me->getDim()][entity][entityPhysicals[i]] = "unnamed";
       }
     }
@@ -2126,14 +2126,14 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
     return 0;
   }
 
-  for(GEntity::size_type i = 0; i < entities.size(); i++){
+  for(std::size_t i = 0; i < entities.size(); i++){
     GEntity* ge = entities[i];
     // clear list of vertices owned by entity
     ge->mesh_vertices.clear();
     // replace vertices in element
-    for(MElement::size_type j = 0; j < ge->getNumMeshElements(); j++){
+    for(std::size_t j = 0; j < ge->getNumMeshElements(); j++){
       MElement *e = ge->getMeshElement(j);
-      for(MElement::size_type k = 0; k < e->getNumVertices(); k++){
+      for(std::size_t k = 0; k < e->getNumVertices(); k++){
         std::map<MVertex*, MVertex*>::iterator it = duplicates.find(e->getVertex(k));
         if(it != duplicates.end())
           e->setVertex(k, it->second);
diff --git a/Geo/GModelCreateTopologyFromMesh.cpp b/Geo/GModelCreateTopologyFromMesh.cpp
index 8a96cb097b..6dd8c5d03a 100644
--- a/Geo/GModelCreateTopologyFromMesh.cpp
+++ b/Geo/GModelCreateTopologyFromMesh.cpp
@@ -552,7 +552,7 @@ public:
     std::vector<MVertex*> tmp;
     MFace face = elt->getFace(num);
 
-    for (MElement::size_type i=0;i<face.getNumVertices();i++) {
+    for (std::size_t i=0;i<face.getNumVertices();i++) {
       vtcs.insert(face.getVertex(i)->getNum());
     }
   }
diff --git a/Geo/GModelIO_DIFF.cpp b/Geo/GModelIO_DIFF.cpp
index bb3dfbd9ff..d0e9434beb 100644
--- a/Geo/GModelIO_DIFF.cpp
+++ b/Geo/GModelIO_DIFF.cpp
@@ -394,7 +394,7 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
       boundaryIndicators.push_back(gf->tag());
       for(unsigned int i = 0; i < gf->getNumMeshElements(); i++){
         MElement *e = gf->getMeshElement(i);
-        for(MElement::size_type j = 0; j < e->getNumVertices(); j++){
+        for(std::size_t j = 0; j < e->getNumVertices(); j++){
           MVertex *v = e->getVertex(j);
           if(v->getIndex() > 0)
             vertexTags[v->getIndex() - 1].push_back(gf->tag());
@@ -421,7 +421,7 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
         dim = std::max(dim, entities[i]->getMeshElement(j)->getDim());
 
   // loop over all elements we need to save
-  MElement::size_type numElements = 0, maxNumNodesPerElement = 0;
+  std::size_t numElements = 0, maxNumNodesPerElement = 0;
   for(unsigned int i = 0; i < entities.size(); i++){
     if(entities[i]->physicals.size() || saveAll){
       for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
diff --git a/Geo/GModelIO_INP.cpp b/Geo/GModelIO_INP.cpp
index ede8ab1abf..40474a6de7 100644
--- a/Geo/GModelIO_INP.cpp
+++ b/Geo/GModelIO_INP.cpp
@@ -117,7 +117,7 @@ int GModel::writeINP(const std::string &name, bool saveAll, bool saveGroupsOfNod
         for(unsigned int i = 0; i < entities.size(); i++){
           for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
             MElement *e = entities[i]->getMeshElement(j);
-            for (MElement::size_type k = 0; k < e->getNumVertices(); k++)
+            for (std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
           }
         }
diff --git a/Geo/GModelIO_NEU.cpp b/Geo/GModelIO_NEU.cpp
index 3fc2eb5485..c6daca23db 100644
--- a/Geo/GModelIO_NEU.cpp
+++ b/Geo/GModelIO_NEU.cpp
@@ -119,7 +119,7 @@ namespace
     for (GModel::fiter it = gm->firstFace(); it != gm->lastFace(); ++it) {
       for (unsigned i = 0; i < (*it)->triangles.size(); ++i) {
         MTriangle* tri = (*it)->triangles[i];
-        for (MElement::size_type j = 0; j < tri->getNumVertices(); ++j) {
+        for (std::size_t j = 0; j < tri->getNumVertices(); ++j) {
           vertmap[tri->getVertex(j)->getNum()].push_back(tri->getNum());
         }
       }
diff --git a/Geo/GModelIO_TOCHNOG.cpp b/Geo/GModelIO_TOCHNOG.cpp
index 315da25fdf..1948a00bb4 100644
--- a/Geo/GModelIO_TOCHNOG.cpp
+++ b/Geo/GModelIO_TOCHNOG.cpp
@@ -163,7 +163,7 @@ int GModel::writeTOCHNOG(const std::string &name, bool saveAll, bool saveGroupsO
         for(unsigned int i = 0; i < entities.size(); i++){
           for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
             MElement *e = entities[i]->getMeshElement(j);
-            for (MElement::size_type k = 0; k < e->getNumVertices(); k++)
+            for (std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
           }
         }
diff --git a/Geo/GModelIO_UNV.cpp b/Geo/GModelIO_UNV.cpp
index 0020c476cd..8975384dfe 100644
--- a/Geo/GModelIO_UNV.cpp
+++ b/Geo/GModelIO_UNV.cpp
@@ -286,7 +286,7 @@ int GModel::writeUNV(const std::string &name, bool saveAll, bool saveGroupsOfNod
         for(unsigned int i = 0; i < entities.size(); i++){
           for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
             MElement *e = entities[i]->getMeshElement(j);
-            for (MElement::size_type k = 0; k < e->getNumVertices(); k++)
+            for (std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
           }
         }
diff --git a/Geo/GModelVertexArrays.cpp b/Geo/GModelVertexArrays.cpp
index 05c2b84ade..ae357dbd0d 100644
--- a/Geo/GModelVertexArrays.cpp
+++ b/Geo/GModelVertexArrays.cpp
@@ -69,7 +69,7 @@ static unsigned int getColorByElement(MElement *ele)
     // e.g. a triangle can have no vertices categorized on a surface),
     // but it's the best we can do "fast" since we don't store the
     // associated entity in the element
-    for(MElement::size_type i = 0; i < ele->getNumVertices(); i++){
+    for(std::size_t i = 0; i < ele->getNumVertices(); i++){
       GEntity *e = ele->getVertex(i)->onWhat();
       if(e && (e->dim() == ele->getDim()))
         return getColorByEntity(e);
@@ -90,7 +90,7 @@ static double intersectClipPlane(int clip, MElement *ele)
 {
   MVertex *v = ele->getVertex(0);
   double val = evalClipPlane(clip, v->x(), v->y(), v->z());
-  for(MElement::size_type i = 1; i < ele->getNumVertices(); i++){
+  for(std::size_t i = 1; i < ele->getNumVertices(); i++){
     v = ele->getVertex(i);
     if(val * evalClipPlane(clip, v->x(), v->y(), v->z()) <= 0)
       return 0.; // the element intersects the cut plane
diff --git a/Geo/GeomMeshMatcher.cpp b/Geo/GeomMeshMatcher.cpp
index fc5e414fd4..728c2f1c73 100644
--- a/Geo/GeomMeshMatcher.cpp
+++ b/Geo/GeomMeshMatcher.cpp
@@ -759,7 +759,7 @@ static void copy_elements (std::vector<ELEMENT*> &to,
   for (unsigned int i=0;i < from.size();i++){
     ELEMENT *e = from[i];
     std::vector<MVertex*> nodes;
-    for(typename ELEMENT::size_type j=0;j<e->getNumVertices();j++) {
+    for(std::size_t j=0;j<e->getNumVertices();j++) {
       nodes.push_back(_mesh_to_geom[e->getVertex(j)]);
       if (_mesh_to_geom[e->getVertex(j)] == 0) {
         printf("Error vertex %i\n", e->getVertex(j)->getNum());
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 25e4d4871a..a992960207 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -644,7 +644,7 @@ std::string MElement::getInfoString(bool multline)
   if(multline) sstream << "\n";
 
   sstream << " Nodes:";
-  for(MElement::size_type i = 0; i < getNumVertices(); i++)
+  for(std::size_t i = 0; i < getNumVertices(); i++)
     sstream << " " << getVertex(i)->getNum();
   if(multline) sstream << "\n";
 
@@ -1578,14 +1578,14 @@ void MElement::writeSTL(FILE *fp, bool binary, double scalingFactor)
 void MElement::writePLY2(FILE *fp)
 {
   fprintf(fp, "3 ");
-  for(size_type i = 0; i < getNumVertices(); i++)
+  for(std::size_t i = 0; i < getNumVertices(); i++)
     fprintf(fp, " %d", getVertex(i)->getIndex() - 1);
   fprintf(fp, "\n");
 }
 
 void MElement::writeVRML(FILE *fp)
 {
-  for(size_type i = 0; i < getNumVertices(); i++)
+  for(std::size_t i = 0; i < getNumVertices(); i++)
     fprintf(fp, "%d,", getVertex(i)->getIndex() - 1);
   fprintf(fp, "-1,\n");
 }
@@ -1647,7 +1647,7 @@ void MElement::writeMATLAB(FILE *fp, int filetype, int elementary, int physical,
     {
       if(physical < 0) reverse();
 
-      for(size_type i = 0; i < getNumVertices(); i++)
+      for(std::size_t i = 0; i < getNumVertices(); i++)
 	fprintf(fp, " %d", getVertex(i)->getIndex());
       fprintf(fp, " %d\n", physical ? abs(physical) : elementary);
 
@@ -1691,7 +1691,7 @@ void MElement::writeMESH(FILE *fp, int elementTagType, int elementary,
 {
   if(physical < 0) reverse();
 
-  for(size_type i = 0; i < getNumVertices(); i++)
+  for(std::size_t i = 0; i < getNumVertices(); i++)
     if (getTypeForMSH() == MSH_TET_10 && i == 8)
       fprintf(fp, " %d", getVertex(9)->getIndex());
     else if (getTypeForMSH() == MSH_TET_10 && i == 9)
@@ -1709,7 +1709,7 @@ void MElement::writeNEU(FILE *fp, unsigned gambitType, int idAdjust, int phys)
   if(phys < 0) reverse();
 
   fprintf(fp, "%8d %2d %2lu ", _num-idAdjust, gambitType, getNumVertices());
-  for(size_type i = 0; i < getNumVertices(); ++i) {
+  for(std::size_t i = 0; i < getNumVertices(); ++i) {
     fprintf(fp, "%8d", getVertex(i)->getIndex());
   }
   fprintf(fp, "\n");
@@ -1815,7 +1815,7 @@ void MElement::writeINP(FILE *fp, int num)
 void MElement::writeSU2(FILE *fp, int num)
 {
   fprintf(fp, "%d ", getTypeForVTK());
-  for(size_type i = 0; i < getNumVertices(); i++)
+  for(std::size_t i = 0; i < getNumVertices(); i++)
     fprintf(fp, "%d ", getVertexVTK(i)->getIndex() - 1);
   if(num >= 0) fprintf(fp, "%d\n", num);
   else fprintf(fp, "\n");
@@ -1984,7 +1984,7 @@ MElement *MElement::copy(std::map<int, MVertex*> &vertexMap,
   int eType = getTypeForMSH();
   MElement *eParent = getParent();
   if(getNumChildren() == 0) {
-    for(size_type i = 0; i < getNumVertices(); i++) {
+    for(std::size_t i = 0; i < getNumVertices(); i++) {
       MVertex *v = getVertex(i);
       int numV = v->getNum(); //Index();
       if(vertexMap.count(numV))
@@ -1998,7 +1998,7 @@ MElement *MElement::copy(std::map<int, MVertex*> &vertexMap,
   }
   else {
     for(int i = 0; i < getNumChildren(); i++) {
-      for(size_type j = 0; j < getChild(i)->getNumVertices(); j++) {
+      for(std::size_t j = 0; j < getChild(i)->getNumVertices(); j++) {
         MVertex *v = getChild(i)->getVertex(j);
         int numV = v->getNum(); //Index();
         if(vertexMap.count(numV))
diff --git a/Geo/MElement.h b/Geo/MElement.h
index def9c45254..42453aa53b 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -54,9 +54,6 @@ protected:
   static bool _getFaceInfo(const MFace &face, const MFace &other, int &sign,
                            int &rot);
 
-public:
-  typedef std::vector<int>::size_type size_type;
-
 public:
   MElement(int num = 0, int part = 0);
   virtual ~MElement() {}
@@ -98,7 +95,7 @@ public:
   virtual void setVisibility(char val) { _visible = val; }
 
   // get & set the vertices
-  virtual size_type getNumVertices() const = 0;
+  virtual std::size_t getNumVertices() const = 0;
   virtual const MVertex *getVertex(int num) const = 0;
   virtual MVertex *getVertex(int num) = 0;
   void getVertices(std::vector<MVertex *> &verts)
diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp
index 624f887427..754e37ba5e 100644
--- a/Geo/MElementCut.cpp
+++ b/Geo/MElementCut.cpp
@@ -620,7 +620,7 @@ static void elementSplitMesh(MElement *e, std::vector<gLevelset *> &RPN,
   //split according to values of vertices (keep +)
   int lsTag = (verticesLs(iLs, e->getVertex(0)->getIndex()) > eps) ? -1 : 1;
   int ils = 0;
-  for(MElement::size_type k = 1; k < e->getNumVertices(); k++){
+  for(std::size_t k = 1; k < e->getNumVertices(); k++){
     int lsTag2 = (verticesLs(iLs, e->getVertex(k)->getIndex()) > eps) ? -1 : 1;
     if (lsTag * lsTag2 < 0) {
       lsTag = -1;
@@ -745,7 +745,7 @@ static void elementSplitMesh(MElement *e, std::vector<gLevelset *> &RPN,
       MFace mf = e->getFace(k);
       bool sameSign = true;
       double val0 = (verticesLs(iLs, mf.getVertex(0)->getIndex()) > eps) ? 1 : -1;
-      for (MElement::size_type j = 1; j < mf.getNumVertices(); j++){
+      for (std::size_t j = 1; j < mf.getNumVertices(); j++){
         double valj = (verticesLs(iLs, mf.getVertex(j)->getIndex()) > eps) ? 1 : -1;
         if (val0*valj < 0.0){ sameSign = false; break;}
       }
@@ -815,7 +815,7 @@ static bool equalV(MVertex *v, const DI_Point *p)
 
 static int getElementVertexNum(DI_Point *p, MElement *e)
 {
-  for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+  for(std::size_t i = 0; i < e->getNumVertices(); i++)
     if(equalV(e->getVertex(i), p))
       return e->getVertex(i)->getNum();
   return -1;
@@ -879,7 +879,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                    e->getVertex(2)->x(), e->getVertex(2)->y(), e->getVertex(2)->z(),
                    e->getVertex(3)->x(), e->getVertex(3)->y(), e->getVertex(3)->z());
         T.setPolynomialOrder(recur+1);
-        for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+        for(std::size_t i = 0; i < e->getNumVertices(); i++)
           nodeLs[i] = &verticesLs(0, e->getVertex(i)->getIndex());
         isCut = T.cut(RPN, ipV, ipS, cp, integOrder, integOrder, integOrder,
                       tetras, quads, triangles, recur, nodeLs);
@@ -894,7 +894,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                   e->getVertex(6)->x(), e->getVertex(6)->y(), e->getVertex(6)->z(),
                   e->getVertex(7)->x(), e->getVertex(7)->y(), e->getVertex(7)->z());
         H.setPolynomialOrder(recur+1);
-        for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+        for(std::size_t i = 0; i < e->getNumVertices(); i++)
           nodeLs[i] = &verticesLs(0, e->getVertex(i)->getIndex());
         isCut = H.cut(RPN, ipV, ipS, cp, integOrder, integOrder, integOrder, integOrder,
                       hexas, tetras, quads, triangles, lines, recur, nodeLs);
@@ -961,7 +961,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                        t->getVertex(2)->x(), t->getVertex(2)->y(), t->getVertex(2)->z(),
                        t->getVertex(3)->x(), t->getVertex(3)->y(), t->getVertex(3)->z());
           Tet.setPolynomialOrder(recur+1);
-          for(MElement::size_type i = 0; i < t->getNumVertices(); i++)
+          for(std::size_t i = 0; i < t->getNumVertices(); i++)
             nodeLs[i] = &verticesLs(0, t->getVertex(i)->getIndex());
           bool iC = Tet.cut(RPN, ipV, ipS, cp, integOrder, integOrder, integOrder,
                             tetras, quads, triangles, recur, nodeLs);
@@ -1121,7 +1121,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                       e->getVertex(1)->x(), e->getVertex(1)->y(), e->getVertex(1)->z(),
                       e->getVertex(2)->x(), e->getVertex(2)->y(), e->getVertex(2)->z());
         T.setPolynomialOrder(recur+1);
-        for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+        for(std::size_t i = 0; i < e->getNumVertices(); i++)
           nodeLs[i] = &verticesLs(0, e->getVertex(i)->getIndex());
         isCut = T.cut(RPN, ipV, ipS, cp, integOrder, integOrder, integOrder,
                       quads, triangles, lines, recur, nodeLs);
@@ -1132,7 +1132,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                   e->getVertex(2)->x(), e->getVertex(2)->y(), e->getVertex(2)->z(),
                   e->getVertex(3)->x(), e->getVertex(3)->y(), e->getVertex(3)->z());
         Q.setPolynomialOrder(recur+1);
-        for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+        for(std::size_t i = 0; i < e->getNumVertices(); i++)
           nodeLs[i] = &verticesLs(0, e->getVertex(i)->getIndex());
         isCut = Q.cut(RPN, ipV, ipS, cp, integOrder,integOrder,integOrder,
                       quads, triangles, lines, recur, nodeLs);
@@ -1144,7 +1144,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
                           t->getVertex(1)->x(), t->getVertex(1)->y(), t->getVertex(1)->z(),
                           t->getVertex(2)->x(), t->getVertex(2)->y(), t->getVertex(2)->z());
           Tri.setPolynomialOrder(recur+1);
-          for(MElement::size_type i = 0; i < t->getNumVertices(); i++)
+          for(std::size_t i = 0; i < t->getNumVertices(); i++)
             nodeLs[i] = &verticesLs(0, t->getVertex(i)->getIndex());
           bool iC = Tri.cut(RPN, ipV, ipS, cp, integOrder, integOrder, integOrder,
                             quads, triangles, lines, recur, nodeLs);
@@ -1343,7 +1343,7 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN,
       DI_Line L(e->getVertex(0)->x(), e->getVertex(0)->y(), e->getVertex(0)->z(),
                 e->getVertex(1)->x(), e->getVertex(1)->y(), e->getVertex(1)->z());
       L.setPolynomialOrder(recur+1);
-      for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+      for(std::size_t i = 0; i < e->getNumVertices(); i++)
         nodeLs[i] = &verticesLs(0, e->getVertex(i)->getIndex());
       isCut = L.cut(RPN, ipV, cp, integOrder, lines, recur, nodeLs);
 
diff --git a/Geo/MElementCut.h b/Geo/MElementCut.h
index e78859cefb..4aded274cd 100644
--- a/Geo/MElementCut.h
+++ b/Geo/MElementCut.h
@@ -59,7 +59,7 @@ class MPolyhedron : public MElement {
     if(_intpt) delete [] _intpt;
   }
   virtual int getDim() const { return 3; }
-  virtual size_type getNumVertices() const { return _vertices.size() + _innerVertices.size(); }
+  virtual std::size_t getNumVertices() const { return _vertices.size() + _innerVertices.size(); }
   virtual int getNumVolumeVertices() const { return _innerVertices.size(); }
   virtual MVertex *getVertex(int num)
   {
@@ -220,7 +220,7 @@ class MPolygon : public MElement {
     if(_intpt) delete [] _intpt;
   }
   virtual int getDim() const { return 2; }
-  virtual size_type getNumVertices() const { return _vertices.size() + _innerVertices.size(); }
+  virtual std::size_t getNumVertices() const { return _vertices.size() + _innerVertices.size(); }
   virtual int getNumFaceVertices() const { return _innerVertices.size(); }
   virtual MVertex *getVertex(int num)
   {
diff --git a/Geo/MElementOctree.cpp b/Geo/MElementOctree.cpp
index 3f61ef826a..67ebe34721 100644
--- a/Geo/MElementOctree.cpp
+++ b/Geo/MElementOctree.cpp
@@ -21,7 +21,7 @@ void MElementBB(void *a, double *min, double *max)
     min[0] = max[0] = v->x();
     min[1] = max[1] = v->y();
     min[2] = max[2] = v->z();
-    for(MElement::size_type i = 1; i < e->getNumVertices(); i++) {
+    for(std::size_t i = 1; i < e->getNumVertices(); i++) {
       v = e->getVertex(i);
       min[0] = std::min(min[0], v->x());
       max[0] = std::max(max[0], v->x());
@@ -42,7 +42,7 @@ void MElementBB(void *a, double *min, double *max)
     min[0] = max[0] = bezNodes(0, 0);
     min[1] = max[1] = bezNodes(0, 1);
     min[2] = max[2] = bezNodes(0, 2);
-    for(MElement::size_type i = 1; i < e->getNumVertices(); i++) {
+    for(std::size_t i = 1; i < e->getNumVertices(); i++) {
       min[0] = std::min(min[0], bezNodes(i, 0));
       max[0] = std::max(max[0], bezNodes(i, 0));
       min[1] = std::min(min[1], bezNodes(i, 1));
@@ -120,8 +120,8 @@ MElementOctree::MElementOctree(GModel *m) : _gm(m)
 MElementOctree::MElementOctree(const std::vector<MElement*> &v) : _gm(0), _elems(v)
 {
   SBoundingBox3d bb;
-  for (MElement::size_type i = 0; i < v.size(); i++){
-    for(MElement::size_type j = 0; j < v[i]->getNumVertices(); j++){
+  for (std::size_t i = 0; i < v.size(); i++){
+    for(std::size_t j = 0; j < v[i]->getNumVertices(); j++){
       //if (!_gm) _gm = v[i]->getVertex(j)->onWhat()->model();
       bb += SPoint3(v[i]->getVertex(j)->x(),
                     v[i]->getVertex(j)->y(),
diff --git a/Geo/MFace.cpp b/Geo/MFace.cpp
index 3a5d439eb5..5a657ad750 100644
--- a/Geo/MFace.cpp
+++ b/Geo/MFace.cpp
@@ -86,7 +86,7 @@ bool MFace::computeCorrespondence(const MFace &other,
   swap = false;
 
   if (*this == other) {
-    for (size_type i = 0; i < getNumVertices(); i++) {
+    for (std::size_t i = 0; i < getNumVertices(); i++) {
       if (_v[0] == other.getVertex(i)) {
         rotation = i;
         break;
diff --git a/Geo/MFace.h b/Geo/MFace.h
index 8d37893272..202dda21c3 100644
--- a/Geo/MFace.h
+++ b/Geo/MFace.h
@@ -22,14 +22,11 @@ private:
   std::vector<MVertex *> _v;
   std::vector<char> _si; // sorted indices
 
-public:
-  typedef std::vector<MVertex *>::size_type size_type;
-
 public:
   MFace() {}
   MFace(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3 = 0);
   MFace(const std::vector<MVertex *> &v);
-  size_type getNumVertices() const { return _v.size(); }
+  std::size_t getNumVertices() const { return _v.size(); }
   MVertex *getVertex(const int i) const { return _v[i]; }
   MVertex *getSortedVertex(const int i) const { return _v[int(_si[i])]; }
   MEdge getEdge(const int i) const
@@ -41,12 +38,12 @@ public:
 
   void getOrderedVertices(std::vector<MVertex *> &verts) const
   {
-    for(size_type i = 0; i < getNumVertices(); i++)
+    for(std::size_t i = 0; i < getNumVertices(); i++)
       verts.push_back(getSortedVertex(i));
   }
   void getOrderedVertices(const MVertex **const verts) const
   {
-    for(size_type i = 0; i < getNumVertices(); i++) {
+    for(std::size_t i = 0; i < getNumVertices(); i++) {
       verts[i] = getSortedVertex(i);
     }
   }
@@ -110,7 +107,7 @@ public:
 inline bool operator==(const MFace &f1, const MFace &f2)
 {
   if(f1.getNumVertices() != f2.getNumVertices()) return false;
-  for(MFace::size_type i = 0; i < f1.getNumVertices(); i++)
+  for(std::size_t i = 0; i < f1.getNumVertices(); i++)
     if(f1.getSortedVertex(i) != f2.getSortedVertex(i)) return false;
   return true;
 }
@@ -118,7 +115,7 @@ inline bool operator==(const MFace &f1, const MFace &f2)
 inline bool operator!=(const MFace &f1, const MFace &f2)
 {
   if(f1.getNumVertices() != f2.getNumVertices()) return true;
-  for(MFace::size_type i = 0; i < f1.getNumVertices(); i++)
+  for(std::size_t i = 0; i < f1.getNumVertices(); i++)
     if(f1.getSortedVertex(i) != f2.getSortedVertex(i)) return true;
   return false;
 }
@@ -132,7 +129,7 @@ struct Less_Face : public std::binary_function<MFace, MFace, bool> {
   {
     if(f1.getNumVertices() != f2.getNumVertices())
       return f1.getNumVertices() < f2.getNumVertices();
-    for(MFace::size_type i = 0; i < f1.getNumVertices(); i++) {
+    for(std::size_t i = 0; i < f1.getNumVertices(); i++) {
       if(f1.getSortedVertex(i)->getNum() < f2.getSortedVertex(i)->getNum())
         return true;
       if(f1.getSortedVertex(i)->getNum() > f2.getSortedVertex(i)->getNum())
@@ -148,9 +145,6 @@ private:
   int _order;
   std::vector<MVertex *> _v;
 
-public:
-  typedef std::vector<MVertex *>::size_type size_type;
-
 public:
   MFaceN() {}
   MFaceN(int type, int order, const std::vector<MVertex *> &v);
@@ -158,7 +152,7 @@ public:
   int getPolynomialOrder() const { return _order; }
   int getType() const { return _type; }
   bool isTriangular() const { return _type == TYPE_TRI; }
-  size_type getNumVertices() const { return (int)_v.size(); }
+  std::size_t getNumVertices() const { return (int)_v.size(); }
   int getNumCorners() const { return isTriangular() ? 3 : 4; }
   int getNumVerticesOnBoundary() const { return getNumCorners() * _order; }
 
diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h
index ff1ff63291..bdf17719da 100644
--- a/Geo/MHexahedron.h
+++ b/Geo/MHexahedron.h
@@ -55,7 +55,7 @@ class MHexahedron : public MElement {
   }
   ~MHexahedron(){}
   virtual int getDim() const { return 3; }
-  virtual size_type getNumVertices() const { return 8; }
+  virtual std::size_t getNumVertices() const { return 8; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const { return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
@@ -228,7 +228,7 @@ class MHexahedron20 : public MHexahedron {
   }
   ~MHexahedron20(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 20; }
+  virtual std::size_t getNumVertices() const { return 20; }
   virtual MVertex *getVertex(int num){ return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual const MVertex *getVertex(int num) const { return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 8) _v[num] = v; else _vs[num - 8] = v; }
@@ -357,7 +357,7 @@ class MHexahedron27 : public MHexahedron {
   }
   ~MHexahedron27(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 27; }
+  virtual std::size_t getNumVertices() const { return 27; }
   virtual MVertex *getVertex(int num){ return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual const MVertex *getVertex(int num) const { return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 8) _v[num] = v; else _vs[num - 8] = v; }
@@ -494,7 +494,7 @@ class MHexahedronN : public MHexahedron {
   }
   ~MHexahedronN(){}
   virtual int getPolynomialOrder() const { return (int)_order; }
-  virtual size_type getNumVertices() const { return 8 + _vs.size(); }
+  virtual std::size_t getNumVertices() const { return 8 + _vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual const MVertex *getVertex(int num) const { return num < 8 ? _v[num] : _vs[num - 8]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 8) _v[num] = v; else _vs[num - 8] = v; }
diff --git a/Geo/MLine.h b/Geo/MLine.h
index edde93f6aa..6a7ea1f918 100644
--- a/Geo/MLine.h
+++ b/Geo/MLine.h
@@ -36,7 +36,7 @@ class MLine : public MElement {
   }
   ~MLine(){}
   virtual int getDim() const { return 1; }
-  virtual size_type getNumVertices() const { return 2; }
+  virtual std::size_t getNumVertices() const { return 2; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const{ return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
@@ -127,7 +127,7 @@ class MLine3 : public MLine {
   }
   ~MLine3(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 3; }
+  virtual std::size_t getNumVertices() const { return 3; }
   virtual MVertex *getVertex(int num){ return num < 2 ? _v[num] : _vs[num - 2]; }
   virtual const MVertex *getVertex(int num) const{ return num < 2 ? _v[num] : _vs[num - 2]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 2) _v[num] = v; else _vs[num - 2] = v; }
@@ -185,7 +185,7 @@ class MLineN : public MLine {
   }
   ~MLineN(){}
   virtual int getPolynomialOrder() const { return _vs.size() + 1; }
-  virtual size_type getNumVertices() const { return _vs.size() + 2; }
+  virtual std::size_t getNumVertices() const { return _vs.size() + 2; }
   virtual MVertex *getVertex(int num){ return num < 2 ? _v[num] : _vs[num - 2]; }
   virtual const MVertex *getVertex(int num) const{ return num < 2 ? _v[num] : _vs[num - 2]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 2) _v[num] = v; else _vs[num - 2] = v; }
diff --git a/Geo/MPoint.h b/Geo/MPoint.h
index 6203181c44..8be73fedd5 100644
--- a/Geo/MPoint.h
+++ b/Geo/MPoint.h
@@ -29,7 +29,7 @@ class MPoint : public MElement {
   }
   ~MPoint(){}
   virtual int getDim() const { return 0; }
-  virtual size_type getNumVertices() const { return 1; }
+  virtual std::size_t getNumVertices() const { return 1; }
   virtual MVertex *getVertex(int num){ return _v[0]; }
   virtual const MVertex *getVertex(int num) const { return _v[0]; }
   virtual void setVertex(int num,  MVertex *v){ _v[0] = v; }
diff --git a/Geo/MPrism.h b/Geo/MPrism.h
index 4bb1441f1e..a5cf14e600 100644
--- a/Geo/MPrism.h
+++ b/Geo/MPrism.h
@@ -61,7 +61,7 @@ class MPrism : public MElement {
   }
   ~MPrism(){}
   virtual int getDim() const { return 3; }
-  virtual size_type getNumVertices() const { return 6; }
+  virtual std::size_t getNumVertices() const { return 6; }
   virtual double getInnerRadius();
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num)const{ return _v[num]; }
@@ -241,7 +241,7 @@ class MPrism15 : public MPrism {
   }
   ~MPrism15(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 15; }
+  virtual std::size_t getNumVertices() const { return 15; }
   virtual MVertex *getVertex(int num){ return num < 6 ? _v[num] : _vs[num - 6]; }
   virtual const MVertex *getVertex(int num) const { return num < 6 ? _v[num] : _vs[num - 6]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 6) _v[num] = v; else _vs[num - 6] = v; }
@@ -346,7 +346,7 @@ class MPrism18 : public MPrism {
   }
   ~MPrism18(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 18; }
+  virtual std::size_t getNumVertices() const { return 18; }
   virtual MVertex *getVertex(int num){ return num < 6 ? _v[num] : _vs[num - 6]; }
   virtual const MVertex *getVertex(int num) const{ return num < 6 ? _v[num] : _vs[num - 6]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 6) _v[num] = v; else _vs[num - 6] = v; }
@@ -429,7 +429,7 @@ class MPrismN : public MPrism {
   }
   ~MPrismN(){}
   virtual int getPolynomialOrder() const { return _order; }
-  virtual size_type getNumVertices() const { return 6+_vs.size(); }
+  virtual std::size_t getNumVertices() const { return 6+_vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 6 ? _v[num] : _vs[num-6]; }
   virtual const MVertex *getVertex(int num) const{ return num < 6 ? _v[num] : _vs[num - 6]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 6) _v[num] = v; else _vs[num - 6] = v; }
diff --git a/Geo/MPyramid.h b/Geo/MPyramid.h
index fe71ccf20a..8c58eb7345 100644
--- a/Geo/MPyramid.h
+++ b/Geo/MPyramid.h
@@ -65,7 +65,7 @@ class MPyramid : public MElement {
   }
   ~MPyramid(){}
   virtual int getDim() const { return 3; }
-  virtual size_type getNumVertices() const { return 5; }
+  virtual std::size_t getNumVertices() const { return 5; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const{ return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
@@ -255,7 +255,7 @@ class MPyramidN : public MPyramid {
   }
   ~MPyramidN();
   virtual int getPolynomialOrder() const { return _order; }
-  virtual size_type getNumVertices() const { return 5 + _vs.size(); }
+  virtual std::size_t getNumVertices() const { return 5 + _vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 5 ? _v[num] : _vs[num - 5]; }
   virtual const MVertex *getVertex(int num) const { return num < 5 ? _v[num] : _vs[num - 5]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 5) _v[num] = v; else _vs[num - 5] = v; }
diff --git a/Geo/MQuadrangle.cpp b/Geo/MQuadrangle.cpp
index 5efde5f2c4..13133829f8 100644
--- a/Geo/MQuadrangle.cpp
+++ b/Geo/MQuadrangle.cpp
@@ -591,7 +591,7 @@ MFaceN MQuadrangleN::getHighOrderFace(int num, int sign, int rot)
   IndicesReoriented &indices = it->second;
 
   std::vector<MVertex*> vertices(getNumVertices());
-  for (size_type i = 0; i < getNumVertices(); ++i) {
+  for (std::size_t i = 0; i < getNumVertices(); ++i) {
     vertices[i] = getVertex(indices[i]);
   }
   return MFaceN(TYPE_QUA, _order, vertices);
diff --git a/Geo/MQuadrangle.h b/Geo/MQuadrangle.h
index a8d81dbfb5..3d87c3875f 100644
--- a/Geo/MQuadrangle.h
+++ b/Geo/MQuadrangle.h
@@ -54,7 +54,7 @@ class MQuadrangle : public MElement {
   virtual double etaShapeMeasure();
   virtual double gammaShapeMeasure();
   virtual int getDim() const { return 2; }
-  virtual size_type getNumVertices() const { return 4; }
+  virtual std::size_t getNumVertices() const { return 4; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const{ return _v[num]; }
   virtual void setVertex(int num, MVertex *v){ _v[num] = v; }
@@ -184,7 +184,7 @@ class MQuadrangle8 : public MQuadrangle {
   }
   ~MQuadrangle8(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 8; }
+  virtual std::size_t getNumVertices() const { return 8; }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual const MVertex *getVertex(int num) const { return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 4) _v[num] = v; else _vs[num - 4] = v; }
@@ -279,7 +279,7 @@ class MQuadrangle9 : public MQuadrangle {
   }
   ~MQuadrangle9(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 9; }
+  virtual std::size_t getNumVertices() const { return 9; }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual const MVertex *getVertex(int num) const { return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 4) _v[num] = v; else _vs[num - 4] = v; }
@@ -379,7 +379,7 @@ class MQuadrangleN : public MQuadrangle {
   }
   ~MQuadrangleN(){}
   virtual int getPolynomialOrder() const { return _order; }
-  virtual size_type getNumVertices() const {return 4 + _vs.size(); }
+  virtual std::size_t getNumVertices() const {return 4 + _vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual const MVertex *getVertex(int num) const{ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual int getNumFaceVertices() const
diff --git a/Geo/MTetrahedron.h b/Geo/MTetrahedron.h
index 00442342a9..2536cc88f5 100644
--- a/Geo/MTetrahedron.h
+++ b/Geo/MTetrahedron.h
@@ -58,7 +58,7 @@ class MTetrahedron : public MElement {
   }
   ~MTetrahedron(){}
   virtual int getDim() const { return 3; }
-  virtual size_type getNumVertices() const { return 4; }
+  virtual std::size_t getNumVertices() const { return 4; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const { return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
@@ -226,7 +226,7 @@ class MTetrahedron10 : public MTetrahedron {
   }
   ~MTetrahedron10(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 10; }
+  virtual std::size_t getNumVertices() const { return 10; }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual const MVertex *getVertex(int num) const { return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 4) _v[num] = v; else _vs[num - 4] = v; }
@@ -337,7 +337,7 @@ class MTetrahedronN : public MTetrahedron {
   }
   ~MTetrahedronN(){}
   virtual int getPolynomialOrder() const { return _order; }
-  virtual size_type getNumVertices() const { return 4 + _vs.size(); }
+  virtual std::size_t getNumVertices() const { return 4 + _vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual const MVertex *getVertex(int num) const{ return num < 4 ? _v[num] : _vs[num - 4]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 4) _v[num] = v; else _vs[num - 4] = v; }
diff --git a/Geo/MTriangle.cpp b/Geo/MTriangle.cpp
index ce5c7c3f36..bdef6f1bd0 100644
--- a/Geo/MTriangle.cpp
+++ b/Geo/MTriangle.cpp
@@ -478,7 +478,7 @@ MFaceN MTriangleN::getHighOrderFace(int num, int sign, int rot)
   IndicesReoriented &indices = it->second;
 
   std::vector<MVertex*> vertices(getNumVertices());
-  for (size_type i = 0; i < getNumVertices(); ++i) {
+  for (std::size_t i = 0; i < getNumVertices(); ++i) {
     vertices[i] = getVertex(indices[i]);
   }
   return MFaceN(TYPE_TRI, _order, vertices);
diff --git a/Geo/MTriangle.h b/Geo/MTriangle.h
index f54290cf82..a040a5a26e 100644
--- a/Geo/MTriangle.h
+++ b/Geo/MTriangle.h
@@ -55,7 +55,7 @@ class MTriangle : public MElement {
   virtual double getInnerRadius();
   virtual double getOuterRadius();
   virtual double angleShapeMeasure();
-  virtual size_type getNumVertices() const { return 3; }
+  virtual std::size_t getNumVertices() const { return 3; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const { return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
@@ -186,7 +186,7 @@ class MTriangle6 : public MTriangle {
   }
   ~MTriangle6(){}
   virtual int getPolynomialOrder() const { return 2; }
-  virtual size_type getNumVertices() const { return 6; }
+  virtual std::size_t getNumVertices() const { return 6; }
   virtual MVertex *getVertex(int num){ return num < 3 ? _v[num] : _vs[num - 3]; }
   virtual const MVertex *getVertex(int num) const { return num < 3 ? _v[num] : _vs[num - 3]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 3) _v[num] = v; else _vs[num - 3] = v; }
@@ -279,7 +279,7 @@ class MTriangleN : public MTriangle {
   }
   ~MTriangleN(){}
   virtual int getPolynomialOrder() const { return _order; }
-  virtual size_type getNumVertices() const { return 3 + _vs.size(); }
+  virtual std::size_t getNumVertices() const { return 3 + _vs.size(); }
   virtual MVertex *getVertex(int num){ return num < 3 ? _v[num] : _vs[num - 3]; }
   virtual const MVertex *getVertex(int num) const { return num < 3 ? _v[num] : _vs[num - 3]; }
   virtual void setVertex(int num,  MVertex *v){ if(num < 3) _v[num] = v; else _vs[num - 3] = v; }
diff --git a/Geo/MTrihedron.h b/Geo/MTrihedron.h
index be93b7ad9b..936699a2ec 100644
--- a/Geo/MTrihedron.h
+++ b/Geo/MTrihedron.h
@@ -59,7 +59,7 @@ class MTrihedron : public MElement {
   }
   ~MTrihedron(){}
   virtual int getDim() const { return 3; } //Can have a volume...
-  virtual size_type getNumVertices() const { return 4; }
+  virtual std::size_t getNumVertices() const { return 4; }
   virtual MVertex *getVertex(int num){ return _v[num]; }
   virtual const MVertex *getVertex(int num) const { return _v[num]; }
   virtual void setVertex(int num,  MVertex *v){ _v[num] = v; }
diff --git a/Geo/gmshLevelset.cpp b/Geo/gmshLevelset.cpp
index 6c278155e4..20103c62d8 100644
--- a/Geo/gmshLevelset.cpp
+++ b/Geo/gmshLevelset.cpp
@@ -927,7 +927,7 @@ gLevelsetDistMesh::gLevelsetDistMesh(GModel *gm, std::string physical, int nbClo
   for(unsigned int i = 0; i < _entities.size(); i++){
     for(unsigned int k = 0; k < _entities[i]->getNumMeshElements(); k++) {
       MElement *e = _entities[i]->getMeshElement(k);
-      for(MElement::size_type j = 0; j<  e->getNumVertices();j++){
+      for(std::size_t j = 0; j<  e->getNumVertices();j++){
         MVertex *v = _entities[i]->getMeshElement(k)->getVertex(j);
         _all.insert(v);
         _v2e.insert(std::make_pair(v, e));
diff --git a/Graphics/drawMesh.cpp b/Graphics/drawMesh.cpp
index 8e17819d84..b27fbc4157 100644
--- a/Graphics/drawMesh.cpp
+++ b/Graphics/drawMesh.cpp
@@ -202,7 +202,7 @@ static void drawVerticesPerElement(drawContext *ctx, GEntity *e,
 {
   for(unsigned int i = 0; i < elements.size(); i++){
     MElement *ele = elements[i];
-    for(MElement::size_type j = 0; j < ele->getNumVertices(); j++){
+    for(std::size_t j = 0; j < ele->getNumVertices(); j++){
       MVertex *v = ele->getVertex(j);
       // FIXME isElementVisible() can be slow: we should also use a
       // vertex array for drawing vertices...
@@ -262,7 +262,7 @@ static void drawBarycentricDual(std::vector<T*> &elements)
         SPoint3 p = f.barycenter();
         glVertex3d(pc.x(), pc.y(), pc.z());
         glVertex3d(p.x(), p.y(), p.z());
-        for(typename T::size_type k = 0; k < f.getNumVertices(); k++){
+        for(std::size_t k = 0; k < f.getNumVertices(); k++){
           MEdge e(f.getVertex(k), (k == f.getNumVertices() - 1) ?
                   f.getVertex(0) : f.getVertex(k + 1));
           SPoint3 pe = e.barycenter();
@@ -312,7 +312,7 @@ static void drawVoronoiDual(std::vector<T*> &elements)
         SPoint3 p = f.barycenter();
         glVertex3d(pc.x(), pc.y(), pc.z());
         glVertex3d(p.x(), p.y(), p.z());
-        for(typename T::size_type k = 0; k < f.getNumVertices(); k++){
+        for(std::size_t k = 0; k < f.getNumVertices(); k++){
           MEdge e(f.getVertex(k), (k == f.getNumVertices() - 1) ?
                   f.getVertex(0) : f.getVertex(k + 1));
           SPoint3 pe = e.barycenter();
diff --git a/Mesh/BGMBase.cpp b/Mesh/BGMBase.cpp
index 17c4ce5b6b..1c8926a5c9 100644
--- a/Mesh/BGMBase.cpp
+++ b/Mesh/BGMBase.cpp
@@ -185,7 +185,7 @@ std::vector<double> BGMBase::get_field_value(double u, double v, double w,
   for (int j=0;j<3;j++) {
     std::vector<double> values(e->getNumVertices());
 
-    for (MElement::size_type i=0;i<e->getNumVertices();i++){
+    for (std::size_t i=0;i<e->getNumVertices();i++){
         values[i]=val[i][j];
     }
     res[j] = e->interpolate(&values[0], element_uvw[0], element_uvw[1],
@@ -203,7 +203,7 @@ double BGMBase::get_field_value(double u, double v, double w,
   std::vector<double> val = get_nodal_values(e,data);
   std::vector<double> element_uvw = get_element_uvw_from_xyz(e,u,v,w);
   std::vector<double> values(e->getNumVertices());
-  for (MElement::size_type i=0;i<e->getNumVertices();i++)
+  for (std::size_t i=0;i<e->getNumVertices();i++)
     values[i]=val[i];
 
   return e->interpolate(&values[0], element_uvw[0], element_uvw[1],
@@ -246,7 +246,7 @@ BGMBase::get_nodal_values(const MElement *e,const VectorStorageType &data) const
 {
   std::vector<std::vector<double> > res(e->getNumVertices());
 
-  for (MElement::size_type i=0;i<e->getNumVertices();i++){
+  for (std::size_t i=0;i<e->getNumVertices();i++){
     VectorStorageType::const_iterator itfind = data.find(const_cast<MVertex*>(e->getVertex(i)));
     for (int j=0;j<3;j++)
       res[i].push_back((itfind->second)[j]);
@@ -259,7 +259,7 @@ std::vector<double> BGMBase::get_nodal_values(const MElement *element,
 {
   std::vector<double> res(element->getNumVertices(),0.);
 
-  for (MElement::size_type i=0;i<element->getNumVertices();i++)
+  for (std::size_t i=0;i<element->getNumVertices();i++)
     //res[i] = (data.find(const_cast<MVertex*>(e->getVertex(i))))->second;
     res[i] = data.find(element->getVertex(i))->second;
   return res;
@@ -281,7 +281,7 @@ std::set<MVertex*> BGMBase::get_vertices_of_maximum_dim(int dim)
   std::set<MVertex*> bnd_vertices;
   for(unsigned int i=0;i<gf->getNumMeshElements();i++){
     MElement* element = gf->getMeshElement(i);
-    for(MElement::size_type j=0;j<element->getNumVertices();j++){
+    for(std::size_t j=0;j<element->getNumVertices();j++){
       MVertex *vertex = element->getVertex(j);
       if (vertex->onWhat()->dim() <= dim)bnd_vertices.insert(vertex);
     }
diff --git a/Mesh/BackgroundMesh2D.cpp b/Mesh/BackgroundMesh2D.cpp
index ac491312de..22a883d3ba 100644
--- a/Mesh/BackgroundMesh2D.cpp
+++ b/Mesh/BackgroundMesh2D.cpp
@@ -456,7 +456,7 @@ double frameFieldBackgroundMesh2D::angle(double u, double v)
   std::vector<double> val = get_nodal_values(e,angles);
   std::vector<double> element_uvw = get_element_uvw_from_xyz(e,u,v,0.);
   std::vector<double> cosvalues(e->getNumVertices()), sinvalues(e->getNumVertices());
-  for (MElement::size_type i=0;i<e->getNumVertices();i++){
+  for (std::size_t i=0;i<e->getNumVertices();i++){
     cosvalues[i]=std::cos(4*val[i]);
     sinvalues[i]=std::sin(4*val[i]);
   }
@@ -579,9 +579,9 @@ void frameFieldBackgroundMesh2D::computeSmoothness()
   std::multimap<MVertex*,MVertex*> vertex2vertex;
   for (std::vector<MElement*>::iterator it = beginelements();it!=endelements();it++){
     MElement *e = *it;
-    for (MElement::size_type i=0;i<e->getNumVertices();i++){
+    for (std::size_t i=0;i<e->getNumVertices();i++){
       MVertex *current = e->getVertex(i);
-      for (MVertex::size_type j=0;j<e->getNumVertices();j++){
+      for (std::size_t j=0;j<e->getNumVertices();j++){
         if (i==j) continue;
         MVertex *neighbor = e->getVertex(j);
         vertex2vertex.insert(std::make_pair(current,neighbor));
diff --git a/Mesh/BackgroundMesh3D.cpp b/Mesh/BackgroundMesh3D.cpp
index cc8da72de4..c194b46440 100644
--- a/Mesh/BackgroundMesh3D.cpp
+++ b/Mesh/BackgroundMesh3D.cpp
@@ -80,7 +80,7 @@ void backgroundMesh3D::computeSizeField()
     for (unsigned int i=0;i<face->getNumMeshElements();i++){// for all elements
       e = face->getMeshElement(i);
       if (e->getDim()!=2) continue;// of dim=2
-      for (MElement::size_type iv=0;iv<e->getNumVertices();iv++){
+      for (std::size_t iv=0;iv<e->getNumVertices();iv++){
         v = e->getVertex(iv);
         SPoint2 p;
         reparamMeshVertexOnFace(v, face, p);
@@ -229,7 +229,7 @@ MVertex* backgroundMesh3D::get_nearest_neighbor(const double* xyz, double & dist
   std::vector<MVertex*> candidates(elem->getNumVertices());
   std::vector<double> distances(elem->getNumVertices());
   SPoint3 p(xyz[0],xyz[1],xyz[2]);
-  for (MElement::size_type i=0;i<elem->getNumVertices();i++){
+  for (std::size_t i=0;i<elem->getNumVertices();i++){
     MVertex* const v = elem->getVertex(i);
     candidates[i] = v;
     distances[i] = p.distance(v->point());
@@ -621,7 +621,7 @@ void frameFieldBackgroundMesh3D::initiate_crossfield()
       MElement *e = face->getMeshElement(i);
       if (e->getDim()!=2) continue;// of dim=2
 
-      for (MElement::size_type iv=0;iv<e->getNumVertices();iv++){
+      for (std::size_t iv=0;iv<e->getNumVertices();iv++){
         v = e->getVertex(iv);
 
         // if already done: continue
@@ -640,7 +640,7 @@ void frameFieldBackgroundMesh3D::initiate_crossfield()
     MElement *e = gr->getMeshElement(i);
     if (e->getDim()!=3) continue;
 
-    for (MElement::size_type iv=0;iv<e->getNumVertices();iv++){
+    for (std::size_t iv=0;iv<e->getNumVertices();iv++){
       v = e->getVertex(iv);
 
       // if not in volume: continue
@@ -763,7 +763,7 @@ void frameFieldBackgroundMesh3D::build_vertex_to_element_table()
     e = gr->getMeshElement(i);
     if (e->getDim()!=3) continue;// of dim=3
 
-    for (MElement::size_type iv=0;iv<e->getNumVertices();iv++){// for all vertices
+    for (std::size_t iv=0;iv<e->getNumVertices();iv++){// for all vertices
       v = e->getVertex(iv);
       vert2elem[v].insert(e);
       elem2vert[e].insert(v);
@@ -869,7 +869,7 @@ void frameFieldBackgroundMesh3D::get_recursive_neighbors(std::set<MVertex const*
         continue;
       }
       //        std::cout << current_elem->getNum() << std::endl;
-      for (MElement::size_type i=0;i<current_elem->getNumVertices();i++){
+      for (std::size_t i=0;i<current_elem->getNumVertices();i++){
         MVertex *ver = current_elem->getVertex(i);
 
         if (visited.find(ver) != visited.end()) continue;
@@ -1200,7 +1200,7 @@ void frameFieldBackgroundMesh3D::exportVectorialSmoothness(const std::string &fi
 
   for (unsigned int ie = 0; ie < getNumMeshElements(); ie++){// for all elements
     const MElement *e = getElement(ie);
-    for (MElement::size_type iv = 0; iv < e->getNumVertices(); iv++){
+    for (std::size_t iv = 0; iv < e->getNumVertices(); iv++){
       const MVertex *v = e->getVertex(iv);
       std::set<const MVertex*>::iterator itfind = done.find(v);
       if (itfind!=done.end()) continue;
diff --git a/Mesh/BoundaryLayers.cpp b/Mesh/BoundaryLayers.cpp
index 89a4a500d2..6541c31758 100644
--- a/Mesh/BoundaryLayers.cpp
+++ b/Mesh/BoundaryLayers.cpp
@@ -49,7 +49,7 @@ static void addExtrudeNormals(std::vector<T*> &elements, int invert,
     std::set<MVertex*> verts;
     for(unsigned int i = 0; i < elements.size(); i++){
       if(!ExtrudeParams::calcLayerScaleFactor[index]){
-	for(typename T::size_type j = 0; j < elements[i]->getNumVertices(); j++)
+	for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++)
           verts.insert(elements[i]->getVertex(j));
       }
       else{
@@ -89,7 +89,7 @@ static void addExtrudeNormals(std::vector<T*> &elements, int invert,
       if(invert) n *= -1.;
       double nn[3] = {n[0], n[1], n[2]};
       if(!ExtrudeParams::calcLayerScaleFactor[index]){
-	for(MElement::size_type k = 0; k < ele->getNumVertices(); k++){
+	for(std::size_t k = 0; k < ele->getNumVertices(); k++){
           MVertex *v = ele->getVertex(k);
           ExtrudeParams::normals[index]->add(v->x(), v->y(), v->z(), 3, nn);
         }
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index d2fbc7008a..3e650df10d 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -537,7 +537,7 @@ void fillv_(std::multimap<MVertex*, MElement*> &vertexToElement,
 {
   for (ITERATOR IT = it_beg; IT != it_end ; ++IT){
     MElement *el = *IT;
-    for(MElement::size_type j = 0; j < el->getNumVertices(); j++) {
+    for(std::size_t j = 0; j < el->getNumVertices(); j++) {
       MVertex* e = el->getVertex(j);
       vertexToElement.insert(std::make_pair(e, el));
     }
diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp
index f08c3556d3..3bee38ca7b 100644
--- a/Mesh/HighOrder.cpp
+++ b/Mesh/HighOrder.cpp
@@ -1310,7 +1310,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
         }
         else {
           MElement* srcElmt = srcIter->second;
-          for (MElement::size_type i=nbVtcs;i<srcElmt->getNumVertices();i++) {
+          for (std::size_t i=nbVtcs;i<srcElmt->getNumVertices();i++) {
             p2p[tgtElmt->getVertex(i)] = srcElmt->getVertex(i);
           }
         }
@@ -1570,7 +1570,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
     for (unsigned int i = 0; i < (*it)->triangles.size(); i++){
       MTriangle *t = (*it)->triangles[i];
       std::vector<MVertex*> vv;
-      for (MTriangle::size_type j=3;j<t->getNumVertices()-t->getNumFaceVertices();j++)
+      for (std::size_t j=3;j<t->getNumVertices()-t->getNumFaceVertices();j++)
         vv.push_back(t->getVertex(j));
       int nPts = t->getPolynomialOrder() - 1;
       getFaceVertices(*it, t, vv, dumNewHOVert, faceVertices, false, nPts);
@@ -1587,7 +1587,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
       std::vector<MVertex*> vv;
       vv.reserve(t->getNumVertices()-t->getNumFaceVertices() - 4);
 
-      for (MQuadrangle::size_type j=4;j<t->getNumVertices()-t->getNumFaceVertices();j++)
+      for (std::size_t j=4;j<t->getNumVertices()-t->getNumFaceVertices();j++)
         vv.push_back(t->getVertex(j));
 
       int nPts = t->getPolynomialOrder() - 1;
@@ -1602,7 +1602,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
     std::set<MVertex*> newV;
     for (unsigned int i = 0; i < (*it)->getNumMeshElements(); ++i){
       MElement *e = (*it)->getMeshElement(i);
-      for (MElement::size_type j=0;j<e->getNumVertices();j++) newV.insert(e->getVertex(j));
+      for (std::size_t j=0;j<e->getNumVertices();j++) newV.insert(e->getVertex(j));
     }
     (*it)->mesh_vertices.clear();
     (*it)->mesh_vertices.insert((*it)->mesh_vertices.begin(), newV.begin(), newV.end());
@@ -1622,9 +1622,9 @@ void SetHighOrderIncomplete(GModel *m, bool onlyVisible)
       MTriangle *t = (*it)->triangles[i];
       std::vector<MVertex*> vt;
       int order = t->getPolynomialOrder();
-      for (MTriangle::size_type j=3;j<t->getNumVertices()-t->getNumFaceVertices();j++)
+      for (std::size_t j=3;j<t->getNumVertices()-t->getNumFaceVertices();j++)
         vt.push_back(t->getVertex(j));
-      for (MTriangle::size_type j = t->getNumVertices()-t->getNumFaceVertices();
+      for (std::size_t j = t->getNumVertices()-t->getNumFaceVertices();
            j < t->getNumVertices(); j++)
         toDelete.insert(t->getVertex(j));
       newT.push_back(new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2),
@@ -1638,9 +1638,9 @@ void SetHighOrderIncomplete(GModel *m, bool onlyVisible)
       MQuadrangle *q = (*it)->quadrangles[i];
       std::vector<MVertex*> vt;
       int nPts = q->getPolynomialOrder() - 1;
-      for (MQuadrangle::size_type j = 4; j < q->getNumVertices()-q->getNumFaceVertices(); j++)
+      for (std::size_t j = 4; j < q->getNumVertices()-q->getNumFaceVertices(); j++)
         vt.push_back(q->getVertex(j));
-      for (MQuadrangle::size_type j = q->getNumVertices()-q->getNumFaceVertices();
+      for (std::size_t j = q->getNumVertices()-q->getNumFaceVertices();
            j < q->getNumVertices(); j++)
         toDelete.insert(q->getVertex(j));
       newQ.push_back(new MQuadrangleN(q->getVertex(0), q->getVertex(1),
diff --git a/Mesh/QuadTriExtruded2D.cpp b/Mesh/QuadTriExtruded2D.cpp
index 9416bb8b6b..2c598927b2 100644
--- a/Mesh/QuadTriExtruded2D.cpp
+++ b/Mesh/QuadTriExtruded2D.cpp
@@ -372,7 +372,7 @@ static int MeshQuadToTriTopUnstructured(GFace *from, GFace *to, MVertexRTree &po
 
   for(unsigned int i = 0; i < from->quadrangles.size(); i++){
     std::vector<MVertex*> verts;
-    for(MVertex::size_type j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
+    for(std::size_t j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
       MVertex *v = from->quadrangles[i]->getVertex(j);
       double x = v->x(), y = v->y(), z = v->z();
       ExtrudeParams *ep = to->meshAttributes.extrude;
@@ -467,7 +467,7 @@ int MeshQuadToTriTopSurface(GFace *from, GFace *to, MVertexRTree &pos)
     // loop through each element source quadrangle and extrude
     for(unsigned int i = 0; i < from->quadrangles.size(); i++){
       std::vector<MVertex*> verts;
-      for(MVertex::size_type j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
+      for(std::size_t j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
         MVertex *v = from->quadrangles[i]->getVertex(j);
         double x = v->x(), y = v->y(), z = v->z();
         ExtrudeParams *ep = to->meshAttributes.extrude;
@@ -498,7 +498,7 @@ int MeshQuadToTriTopSurface(GFace *from, GFace *to, MVertexRTree &pos)
       int edge_verts_count = 0;
       //int skip_index = 0;
       int bnd_indices[4];
-      for(MElement::size_type p = 0; p < element->getNumVertices(); p++){
+      for(std::size_t p = 0; p < element->getNumVertices(); p++){
         if(pos_src_edge.find(element->getVertex(p)->x(),
                              element->getVertex(p)->y(),
                              element->getVertex(p)->z())){
@@ -560,7 +560,7 @@ int MeshQuadToTriTopSurface(GFace *from, GFace *to, MVertexRTree &pos)
     // quite easily. Loop through each element source quadrangle and extrude
     for(unsigned int i = 0; i < from->quadrangles.size(); i++){
       std::vector<MVertex*> verts;
-      for(MElement::size_type j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
+      for(std::size_t j = 0; j < from->quadrangles[i]->getNumVertices(); j++){
         MVertex *v = from->quadrangles[i]->getVertex(j);
         double x = v->x(), y = v->y(), z = v->z();
         ExtrudeParams *ep = to->meshAttributes.extrude;
diff --git a/Mesh/ThinLayer.cpp b/Mesh/ThinLayer.cpp
index 4193208c21..265cc61c25 100644
--- a/Mesh/ThinLayer.cpp
+++ b/Mesh/ThinLayer.cpp
@@ -169,7 +169,7 @@ void ThinLayer::fillvecOfThinSheets(){
           MVertex* VToDo = (*CurrentSheet.begin());
           std::vector<MTetrahedron*> surroundingTet = VertexToTets[VToDo];
           for (unsigned int j = 0;j < surroundingTet.size();j++){
-            for (MVertex::size_type k = 0;k < surroundingTet[j]->getNumVertices();k++){
+            for (std::size_t k = 0;k < surroundingTet[j]->getNumVertices();k++){
               MVertex* ToInsertTmp = surroundingTet[j]->getVertex(k);
               std::map<MVertex*,std::vector<CorrespVertices*> >::iterator it2 =
                 VertexToCorresp.find(ToInsertTmp);
diff --git a/Mesh/Voronoi3D.cpp b/Mesh/Voronoi3D.cpp
index ad806187aa..831dce8835 100644
--- a/Mesh/Voronoi3D.cpp
+++ b/Mesh/Voronoi3D.cpp
@@ -45,9 +45,9 @@ void clip::execute(GRegion* gr){
   std::set<MVertex*> vertices;
   std::set<MVertex*>::iterator it;
 
-  for(MVertex::size_type i=0;i<gr->getNumMeshElements();i++){
+  for(std::size_t i=0;i<gr->getNumMeshElements();i++){
     MElement* element = gr->getMeshElement(i);
-	for(MVertex::size_type j=0;j<element->getNumVertices();j++){
+	for(std::size_t j=0;j<element->getNumVertices();j++){
 	  MVertex* vertex = element->getVertex(j);
 	  vertices.insert(vertex);
 	}
@@ -67,7 +67,7 @@ void clip::execute(GRegion* gr){
 
   std::ofstream file("MicrostructurePolycrystal3D.pos");
   file << "View \"test\" {\n";
-  for(MVertex::size_type i=0;i<clipped.size();i++){
+  for(std::size_t i=0;i<clipped.size();i++){
     print_segment(clipped[i].get_v1().get_point(),clipped[i].get_v2().get_point(),file);
 	print_segment(clipped[i].get_v1().get_point(),clipped[i].get_v3().get_point(),file);
 	print_segment(clipped[i].get_v1().get_point(),clipped[i].get_v4().get_point(),file);
diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp
index 84a73f14d0..41acc09474 100644
--- a/Mesh/directions3D.cpp
+++ b/Mesh/directions3D.cpp
@@ -279,9 +279,9 @@ void Frame_field::print_field2(GRegion* gr)
   double const color1 = 10.0;
   double const color2 = 20.0;
 
-  for(MVertex::size_type i=0;i<gr->getNumMeshElements();i++){
+  for(std::size_t i=0;i<gr->getNumMeshElements();i++){
     MElement* element = gr->getMeshElement(i);
-    for(MVertex::size_type j=0;j<element->getNumVertices();j++){
+    for(std::size_t j=0;j<element->getNumVertices();j++){
       MVertex* vertex = element->getVertex(j);
       if(vertex->onWhat()->dim()>2){
         SPoint3 point = SPoint3(vertex->x(),vertex->y(),vertex->z());
@@ -401,9 +401,9 @@ int Frame_field::build_vertex_to_elements(GEntity* gr, bool initialize)
 void Frame_field::build_listVertices(GEntity *gr, int dim, bool initialize)
 {
   std::set<MVertex *> list;
-  for(GEntity::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *pElem = gr->getMeshElement(i);
-    for(MVertex::size_type j = 0; j < pElem->getNumVertices(); j++) {
+    for(std::size_t j = 0; j < pElem->getNumVertices(); j++) {
       MVertex *pVertex = pElem->getVertex(j);
       if(pVertex->onWhat()->dim() == dim) list.insert(pVertex);
     }
@@ -684,8 +684,8 @@ void Frame_field::buildSmoothness()
     GEntity* eTmp = entities[i];
     for (unsigned int j = 0; j < eTmp->getNumMeshElements();j++){
       MElement* elem = eTmp->getMeshElement(j);
-      for (MElement::size_type k = 0;k < elem->getNumVertices();k++){
-        for (MElement::size_type l = k;l < elem->getNumVertices();l++){
+      for (std::size_t k = 0;k < elem->getNumVertices();k++){
+        for (std::size_t l = k;l < elem->getNumVertices();l++){
           if (k != l){
             MVertex* v1 = elem->getVertex(k);
             MVertex* v2 = elem->getVertex(l);
@@ -1085,13 +1085,13 @@ void Frame_field::save_energy(GRegion* gr, const std::string& filename)
                       pElem->getVertex(3));
     //std::vector<double> *out = data->incrementList(1, TYPE_TET, NumNodes);
     std::vector<double> *out = data->incrementList(3, TYPE_TET, NumNodes);
-    for(MTetrahedron::size_type j = 0; j < pTet->getNumVertices(); j++)
+    for(std::size_t j = 0; j < pTet->getNumVertices(); j++)
       out->push_back(pTet->getVertex(j)->x());
-    for(MTetrahedron::size_type j = 0; j < pTet->getNumVertices(); j++)
+    for(std::size_t j = 0; j < pTet->getNumVertices(); j++)
       out->push_back(pTet->getVertex(j)->y());
-    for(MTetrahedron::size_type j = 0; j < pTet->getNumVertices(); j++)
+    for(std::size_t j = 0; j < pTet->getNumVertices(); j++)
       out->push_back(pTet->getVertex(j)->z());
-    for(MTetrahedron::size_type j = 0; j < pTet->getNumVertices(); j++){
+    for(std::size_t j = 0; j < pTet->getNumVertices(); j++){
       double u, v, w;
       pTet->getNode(j,u,v,w);
       double sf[4], gsf[4][3];
@@ -1176,7 +1176,7 @@ void Size_field::init_region(GRegion* gr)
 
     for(GRegion::size_type i=0;i<gf->getNumMeshElements();i++){
       MElement* element = gf->getMeshElement(i);
-      for(MElement::size_type j=0;j<element->getNumVertices();j++){
+      for(std::size_t j=0;j<element->getNumVertices();j++){
          MVertex* vertex = element->getVertex(j);
 
         query[0] = vertex->x();
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 0567d6a0c8..09bee12f36 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -867,7 +867,7 @@ static void directions_storage(GFace* gf)
   std::set<MVertex*> vertices;
   for(unsigned int i = 0; i < gf->getNumMeshElements(); i++){
     MElement* element = gf->getMeshElement(i);
-    for(MElement::size_type j = 0; j < element->getNumVertices(); j++){
+    for(std::size_t j = 0; j < element->getNumVertices(); j++){
       MVertex *vertex = element->getVertex(j);
       vertices.insert(vertex);
     }
@@ -2590,7 +2590,7 @@ static bool getGFaceNormalFromVert(GFace *gf, MElement *el, SVector3 &nf)
 {
   // TODO C++11 use std::find_if
   bool found = false;
-  for(MElement::size_type iElV = 0; iElV < el->getNumVertices(); iElV++) {
+  for(std::size_t iElV = 0; iElV < el->getNumVertices(); iElV++) {
     MVertex *v = el->getVertex(iElV);
     SPoint2 param;
     if(v->onWhat() == gf && v->getParameter(0, param[0]) &&
@@ -2607,7 +2607,7 @@ static bool getGFaceNormalFromBary(GFace *gf, MElement *el, SVector3 &nf)
 {
   SPoint2 param(0., 0.);
   bool ok = true;
-  for(MElement::size_type j = 0; j < el->getNumVertices(); j++) {
+  for(std::size_t j = 0; j < el->getNumVertices(); j++) {
     SPoint2 p;
     // FIXME: use inexact reparam because some vertices might not be exactly on
     // the surface after the 3D Delaunay
diff --git a/Mesh/meshGFaceLloyd.cpp b/Mesh/meshGFaceLloyd.cpp
index 120bd60b82..33d5a6be9e 100644
--- a/Mesh/meshGFaceLloyd.cpp
+++ b/Mesh/meshGFaceLloyd.cpp
@@ -419,7 +419,7 @@ void smoothing::optimize_face(GFace* gf)
   // get all the points of the face ...
   for (unsigned int i = 0; i < gf->getNumMeshElements(); i++){
     MElement *e = gf->getMeshElement(i);
-    for (MElement::size_type j = 0;j<e->getNumVertices(); j++){
+    for (std::size_t j = 0;j<e->getNumVertices(); j++){
       MVertex *v = e->getVertex(j);
       all.insert(v);
     }
diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp
index 45e1efbbc4..4109ab8976 100644
--- a/Mesh/meshGFaceOptimize.cpp
+++ b/Mesh/meshGFaceOptimize.cpp
@@ -400,7 +400,7 @@ void buildListOfEdgeAngle(e2t_cont adj, std::vector<edge_angle> &edges_detected,
 void parametricCoordinates(MElement *t, GFace *gf, double u[4], double v[4],
                            MVertex *close = 0)
 {
-  for(MElement::size_type j = 0; j < t->getNumVertices(); j++){
+  for(std::size_t j = 0; j < t->getNumVertices(); j++){
     MVertex *ver = t->getVertex(j);
     SPoint2 param, dummy;
     if (!close) reparamMeshVertexOnFace(ver, gf, param);
diff --git a/Mesh/meshGFaceOptimize.h b/Mesh/meshGFaceOptimize.h
index ec5ea2b137..004c986e64 100644
--- a/Mesh/meshGFaceOptimize.h
+++ b/Mesh/meshGFaceOptimize.h
@@ -34,7 +34,7 @@ typedef std::map<MEdge, std::pair<MElement*, MElement*>, Less_Edge> e2t_cont;
 template <class T> void buildVertexToElement(std::vector<T*> &eles, v2t_cont &adj){
   for(unsigned int i = 0; i < eles.size(); i++){
     T *t = eles[i];
-    for(typename T::size_type j = 0; j < t->getNumVertices(); j++){
+    for(std::size_t j = 0; j < t->getNumVertices(); j++){
       MVertex *v = t->getVertex(j);
       v2t_cont :: iterator it = adj.find(v);
       if(it == adj.end()){
diff --git a/Mesh/meshGRegionCarveHole.cpp b/Mesh/meshGRegionCarveHole.cpp
index 2d98e36082..7e12e782f4 100644
--- a/Mesh/meshGRegionCarveHole.cpp
+++ b/Mesh/meshGRegionCarveHole.cpp
@@ -34,7 +34,7 @@ void carveHole(std::vector<T*> &elements, double distance, ANNkd_tree *kdtree)
   ANNdistArray dist = new ANNdist[1];
   std::vector<T*> temp;
   for(unsigned int i = 0; i < elements.size(); i++){
-    for(typename T::size_type j = 0; j < elements[i]->getNumVertices(); j++){
+    for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++){
       MVertex *v = elements[i]->getVertex(j);
       double xyz[3] = {v->x(), v->y(), v->z()};
       kdtree->annkSearch(xyz, 1, index, dist);
@@ -127,7 +127,7 @@ void carveHole(GRegion *gr, int num, double distance, std::vector<int> &surfaces
 
   std::set<MVertex*> verts;
   for(std::set<MFace, Less_Face>::iterator it = faces.begin(); it != faces.end(); it++){
-    for(MFace::size_type i = 0; i < it->getNumVertices(); i++){
+    for(std::size_t i = 0; i < it->getNumVertices(); i++){
       it->getVertex(i)->setEntity(gf);
       verts.insert(it->getVertex(i));
     }
diff --git a/Mesh/meshGRegionRelocateVertex.cpp b/Mesh/meshGRegionRelocateVertex.cpp
index 1136c73568..b324defabd 100644
--- a/Mesh/meshGRegionRelocateVertex.cpp
+++ b/Mesh/meshGRegionRelocateVertex.cpp
@@ -242,7 +242,7 @@ void _relocateVertexGolden(MVertex *ver,
   int N = 0;
   for(unsigned int i = 0; i < lt.size(); i++){
     double XCG=0,YCG=0,ZCG=0;
-    for (MElement::size_type j=0;j<lt[i]->getNumVertices();j++){
+    for (std::size_t j=0;j<lt[i]->getNumVertices();j++){
       XCG += lt[i]->getVertex(j)->x();
       YCG += lt[i]->getVertex(j)->y();
       ZCG += lt[i]->getVertex(j)->z();
@@ -269,7 +269,7 @@ static double _relocateVertex2(GFace* gf, MVertex *ver,
   SPoint3 p1(0,0,0);
   int counter = 0;
   for(unsigned int i = 0; i < lt.size(); i++){
-    for (MElement::size_type j=0;j<lt[i]->getNumVertices();j++){
+    for (std::size_t j=0;j<lt[i]->getNumVertices();j++){
       MVertex* v = lt[i]->getVertex(j);
       p1 += SPoint3(v->x(),v->y(),v->z());
       counter++;
@@ -308,7 +308,7 @@ static double _relocateVertex(GFace* gf, MVertex *ver,
 
   int counter=0;
   for(unsigned int i = 0; i < lt.size(); i++){
-    for (MElement::size_type j=0;j<lt[i]->getNumVertices();j++){
+    for (std::size_t j=0;j<lt[i]->getNumVertices();j++){
       MVertex* v = lt[i]->getVertex(j);
       SPoint2 pp;
       reparamMeshVertexOnFace(v, gf, pp);
diff --git a/Mesh/meshMetric.cpp b/Mesh/meshMetric.cpp
index f8362fa92c..e0ec5a9929 100644
--- a/Mesh/meshMetric.cpp
+++ b/Mesh/meshMetric.cpp
@@ -136,7 +136,7 @@ void meshMetric::exportInfo(const char * fileendname)
       out_hess << "SS(";
       out_hessmat << "TS(";
     }
-    for (MElement::size_type i = 0; i < e->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < e->getNumVertices(); i++) {
       MVertex *ver = e->getVertex(i);
       out_metric << ver->x() << "," << ver->y() << "," << ver->z();
       out_grad << ver->x() << "," << ver->y() << "," << ver->z();
@@ -158,7 +158,7 @@ void meshMetric::exportInfo(const char * fileendname)
         out_hessmat << "){";
       }
     }
-    for ( MElement::size_type i = 0; i < e->getNumVertices(); i++) {
+    for ( std::size_t i = 0; i < e->getNumVertices(); i++) {
       MVertex *ver = e->getVertex(i);
       out_ls << vals[ver];
       out_hess << (hessians[ver](0,0) + hessians[ver](1,1) + hessians[ver](2,2));
@@ -241,7 +241,7 @@ std::vector<MVertex*> getLSBlob(unsigned int minNbPt, v2t_cont::iterator it,
     for (std::vector<MVertex*>::iterator itBV = bvv.begin(); itBV != bvv.end(); itBV++) {               // For each boundary vertex...
       std::vector<MElement*> &adjBV = adj[*itBV];
       for (std::vector<MElement*>::iterator itBVEl = adjBV.begin(); itBVEl != adjBV.end(); itBVEl++) {
-        for (MElement::size_type iV=0; iV<(*itBVEl)->getNumVertices(); iV++){                                           // ... look for adjacent vertices...
+        for (std::size_t iV=0; iV<(*itBVEl)->getNumVertices(); iV++){                                           // ... look for adjacent vertices...
           MVertex *v = (*itBVEl)->getVertex(iV);
 	  //          if ((find(vv.begin(),vv.end(),v) == vv.end()) && (p0.distance(v->point()) <= rad)) nbvv.insert(v);
           if (find(vv.begin(),vv.end(),v) == vv.end()) nbvv.insert(v);                                  // ... and add them in the new boundary if they are not already in the blob
@@ -708,7 +708,7 @@ double meshMetric::operator() (double x, double y, double z, GEntity *ge)
   if (e) {
     e->xyz2uvw(xyz,uvw);
     double *val = new double [e->getNumVertices()];
-    for (MElement::size_type i=0;i<e->getNumVertices();i++){
+    for (std::size_t i=0;i<e->getNumVertices();i++){
       val[i] = _nodalSizes[e->getVertex(i)];
     }
     value = e->interpolate(val,uvw[0],uvw[1],uvw[2]);
diff --git a/Mesh/meshPartition.cpp b/Mesh/meshPartition.cpp
index f9b3022bbb..5cae574d34 100644
--- a/Mesh/meshPartition.cpp
+++ b/Mesh/meshPartition.cpp
@@ -821,7 +821,7 @@ template <class ITERATOR>
 void setVerticesToEntity(GEntity *const entity, ITERATOR it_beg, ITERATOR it_end)
 {
   for(ITERATOR it = it_beg; it != it_end; ++it){
-    for(GEntity::size_type i = 0; i < (*it)->getNumVertices(); i++){
+    for(std::size_t i = 0; i < (*it)->getNumVertices(); i++){
       if(!(*it)->getVertex(i)->onWhat()){
         (*it)->getVertex(i)->setEntity(entity);
         entity->addMeshVertex((*it)->getVertex(i));
@@ -2366,7 +2366,7 @@ static void assignToParent(std::set<MVertex*> &verts, partitionRegion *region,
       region->getParentEntity()->addElement((*it)->getType(), *it);
     (*it)->setPartition(0);
 
-    for(MVertex::size_type i = 0; i < (*it)->getNumVertices(); i++){
+    for(std::size_t i = 0; i < (*it)->getNumVertices(); i++){
       if(verts.find((*it)->getVertex(i)) == verts.end()){
         (*it)->getVertex(i)->setEntity(region->getParentEntity());
         region->getParentEntity()->addMeshVertex((*it)->getVertex(i));
@@ -2385,7 +2385,7 @@ static void assignToParent(std::set<MVertex*> &verts, partitionFace *face,
       face->getParentEntity()->addElement((*it)->getType(), *it);
     (*it)->setPartition(0);
 
-    for(MVertex::size_type i = 0; i < (*it)->getNumVertices(); i++){
+    for(std::size_t i = 0; i < (*it)->getNumVertices(); i++){
       if(verts.find((*it)->getVertex(i)) == verts.end()){
         (*it)->getVertex(i)->setEntity(face->getParentEntity());
         face->getParentEntity()->addMeshVertex((*it)->getVertex(i));
@@ -2404,7 +2404,7 @@ static void assignToParent(std::set<MVertex*> &verts, partitionEdge *edge,
       edge->getParentEntity()->addElement((*it)->getType(), *it);
     (*it)->setPartition(0);
 
-    for(MVertex::size_type i = 0; i < (*it)->getNumVertices(); i++){
+    for(std::size_t i = 0; i < (*it)->getNumVertices(); i++){
       if(verts.find((*it)->getVertex(i)) == verts.end()){
         (*it)->getVertex(i)->setEntity(edge->getParentEntity());
         edge->getParentEntity()->addMeshVertex((*it)->getVertex(i));
@@ -2424,7 +2424,7 @@ void assignToParent(std::set<MVertex*> &verts, partitionVertex *vertex,
       vertex->getParentEntity()->addElement((*it)->getType(), *it);
     (*it)->setPartition(0);
 
-    for(MVertex::size_type i = 0; i < (*it)->getNumVertices(); i++){
+    for(std::size_t i = 0; i < (*it)->getNumVertices(); i++){
       if(verts.find((*it)->getVertex(i)) == verts.end()){
         (*it)->getVertex(i)->setEntity(vertex->getParentEntity());
         vertex->getParentEntity()->addMeshVertex((*it)->getVertex(i));
diff --git a/Mesh/pointInsertion.cpp b/Mesh/pointInsertion.cpp
index f316009749..fa2889e4f2 100644
--- a/Mesh/pointInsertion.cpp
+++ b/Mesh/pointInsertion.cpp
@@ -523,7 +523,7 @@ bool Filler3D::treat_region(GRegion *gr)
     // int limit = code_kesskessai(gf->tag());
     for(unsigned int i=0;i<gf->getNumMeshElements();i++){
       element = gf->getMeshElement(i);
-      for(MElement::size_type j=0;j<element->getNumVertices();j++){// for all vertices
+      for(std::size_t j=0;j<element->getNumVertices();j++){// for all vertices
         vertex = element->getVertex(j);
         temp.insert(vertex);
         // limits.insert(make_pair(vertex,limit));
diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp
index 7ce467f7af..77680ba6a4 100644
--- a/Mesh/simple3D.cpp
+++ b/Mesh/simple3D.cpp
@@ -367,7 +367,7 @@ void Filler::treat_region(GRegion* gr)
     limit = code(gf->tag());
     for(GFace::size_type i=0;i<gf->getNumMeshElements();i++){
       MElement* element = gf->getMeshElement(i);
-      for(MElement::size_type j=0;j<element->getNumVertices();j++){
+      for(std::size_t j=0;j<element->getNumVertices();j++){
         MVertex* vertex = element->getVertex(j);
         temp.insert(vertex);
         limits.insert(std::pair<MVertex*,int>(vertex,limit));
@@ -395,7 +395,7 @@ void Filler::treat_region(GRegion* gr)
 
   std::queue<Node*> fifo;
 
-  for(MVertex::size_type i=0;i<boundary_vertices.size();i++){
+  for(std::size_t i=0;i<boundary_vertices.size();i++){
     x = boundary_vertices[i]->x();
     y = boundary_vertices[i]->y();
     z = boundary_vertices[i]->z();
@@ -480,8 +480,8 @@ void Filler::treat_region(GRegion* gr)
 
   CTX::instance()->mesh.algo3d = option;
 
-  for(MVertex::size_type i=0;i<garbage.size();i++) delete garbage[i];
-  for(MVertex::size_type i=0;i<new_vertices.size();i++) delete new_vertices[i];
+  for(std::size_t i=0;i<garbage.size();i++) delete garbage[i];
+  for(std::size_t i=0;i<new_vertices.size();i++) delete new_vertices[i];
 
   delete octree;
   rtree.RemoveAll();
diff --git a/Mesh/surfaceFiller.cpp b/Mesh/surfaceFiller.cpp
index cac0271a73..7bbb246b19 100644
--- a/Mesh/surfaceFiller.cpp
+++ b/Mesh/surfaceFiller.cpp
@@ -243,7 +243,7 @@ double get_smoothness(MVertex *v, GFace *gf, const map<MVertex*,double> &vertice
   vector<MVertex*> localvertices;
   localvertices.reserve(elem->getNumVertices());
 
-  for (MVertex::size_type ivert=0;ivert<elem->getNumVertices();ivert++){
+  for (std::size_t ivert=0;ivert<elem->getNumVertices();ivert++){
     MVertex *temp = elem->getVertex(ivert);
     localvertices.push_back(temp);
 //    cout << " made of vertex " << temp->x() << "," << temp->y() << "," << temp->z() << endl;
@@ -503,9 +503,9 @@ void packingOfParallelogramsSmoothness(GFace* gf,  std::vector<MVertex*> &packed
   multimap<MVertex*,MVertex*> vertex2vertex;
   for (std::vector<MElement*>::iterator it = backgroundMesh::current()->begin_triangles();it!=backgroundMesh::current()->end_triangles();it++){
     MElement *e = *it;
-    for (MElement::size_type i=0;i<e->getNumVertices();i++){
+    for (std::size_t i=0;i<e->getNumVertices();i++){
       MVertex *current = e->getVertex(i);
-      for (MVertex::size_type j=0;j<e->getNumVertices();j++){
+      for (std::size_t j=0;j<e->getNumVertices();j++){
         if (i==j) continue;
         MVertex *neighbor = e->getVertex(j);
         vertex2vertex.insert(make_pair(current,neighbor));
@@ -593,7 +593,7 @@ void packingOfParallelogramsSmoothness(GFace* gf,  std::vector<MVertex*> &packed
   std::set<MVertex*> bnd_vertices;
   for(unsigned int i=0;i<gf->getNumMeshElements();i++){
     MElement* element = gf->getMeshElement(i);
-    for(MElement::size_type j=0;j<element->getNumVertices();j++){
+    for(std::size_t j=0;j<element->getNumVertices();j++){
       MVertex *vertex = element->getVertex(j);
       if (vertex->onWhat()->dim() < 2)bnd_vertices.insert(vertex);
     }
@@ -738,7 +738,7 @@ void packingOfParallelograms(GFace* gf,  std::vector<MVertex*> &packed, std::vec
   std::set<MVertex*> bnd_vertices;
   for(unsigned int i=0;i<gf->getNumMeshElements();i++){
     MElement* element = gf->getMeshElement(i);
-    for(MElement::size_type j=0;j<element->getNumVertices();j++){
+    for(std::size_t j=0;j<element->getNumVertices();j++){
       MVertex *vertex = element->getVertex(j);
       if (vertex->onWhat()->dim() < 2)bnd_vertices.insert(vertex);
     }
diff --git a/Mesh/yamakawa.cpp b/Mesh/yamakawa.cpp
index afc4000210..d02b94d023 100644
--- a/Mesh/yamakawa.cpp
+++ b/Mesh/yamakawa.cpp
@@ -492,28 +492,28 @@ void export_gregion_mesh(GRegion *gr, string filename)
 
   for (vector<MTetrahedron*>::iterator it = gr->tetrahedra.begin();
     it != gr->tetrahedra.end(); it++) {
-    for (MTetrahedron::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       vertices.insert(make_pair((*it)->getVertex(i), counterv));
       counterv++;
     }
   }
   for (vector<MHexahedron*>::iterator it = gr->hexahedra.begin();
     it != gr->hexahedra.end(); it++) {
-    for (MHexahedron::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       vertices.insert(make_pair((*it)->getVertex(i), counterv));
       counterv++;
     }
   }
   for (vector<MPrism*>::iterator it = gr->prisms.begin();
     it != gr->prisms.end(); it++) {
-    for (MPrism::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       vertices.insert(make_pair((*it)->getVertex(i), counterv));
       counterv++;
     }
   }
   for (vector<MPyramid*>::iterator it = gr->pyramids.begin();
     it != gr->pyramids.end(); it++) {
-    for (MPyramid::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       vertices.insert(make_pair((*it)->getVertex(i), counterv));
       counterv++;
     }
@@ -537,7 +537,7 @@ void export_gregion_mesh(GRegion *gr, string filename)
   for (vector<MTetrahedron*>::iterator it = gr->tetrahedra.begin();
     it != gr->tetrahedra.end(); it++) {
     out << counter << " 4 2 0 26";
-    for (MTetrahedron::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
     }
@@ -547,7 +547,7 @@ void export_gregion_mesh(GRegion *gr, string filename)
   for (vector<MHexahedron*>::iterator it = gr->hexahedra.begin();
     it != gr->hexahedra.end(); it++) {
     out << counter << " 5 2 0 26";
-    for (MHexahedron::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
     }
@@ -557,7 +557,7 @@ void export_gregion_mesh(GRegion *gr, string filename)
   for (vector<MPrism*>::iterator it = gr->prisms.begin();
     it != gr->prisms.end(); it++) {
     out << counter << " 6 2 0 26";
-    for (MPrism::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
     }
@@ -567,7 +567,7 @@ void export_gregion_mesh(GRegion *gr, string filename)
   for (vector<MPyramid*>::iterator it = gr->pyramids.begin();
     it != gr->pyramids.end(); it++) {
     out << counter << " 7 2 0 26";
-    for (MPyramid::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
     }
@@ -2715,7 +2715,7 @@ void Supplementary::build_vertex_to_vertices(GRegion* gr) {
   for (GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
     MElement* element = gr->getMeshElement(i);
     if (four(element)) {
-      for (MElement::size_type j = 0; j < element->getNumVertices(); j++) {
+      for (std::size_t j = 0; j < element->getNumVertices(); j++) {
         MVertex *a = element->getVertex(j);
         MVertex *b = element->getVertex((j + 1) % 4);
         MVertex *c = element->getVertex((j + 2) % 4);
@@ -2747,7 +2747,7 @@ void Supplementary::build_vertex_to_tetrahedra(GRegion* gr) {
   for (GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
     MElement* element = gr->getMeshElement(i);
     if (four(element)) {
-      for (MElement::size_type j = 0; j < element->getNumVertices(); j++) {
+      for (std::size_t j = 0; j < element->getNumVertices(); j++) {
         MVertex* getVertex = element->getVertex(j);
 
         Vertex2Elements::iterator it = vertex_to_tetrahedra.find(getVertex);
@@ -3125,8 +3125,8 @@ void PostOp::removeElseAdd(std::set<Facet> &set, MVertex *a, MVertex *b, MVertex
 void PostOp::writeMSH(const char *filename, std::vector<MElement*> &elements)
 {
   std::set<MVertex*> vertices;
-  for (MElement::size_type i = 0; i < elements.size(); ++i) {
-    for (MElement::size_type k = 0; k < elements[i]->getNumVertices(); ++k)
+  for (std::size_t i = 0; i < elements.size(); ++i) {
+    for (std::size_t k = 0; k < elements[i]->getNumVertices(); ++k)
       vertices.insert(elements[i]->getVertex(k));
   }
 
@@ -3148,9 +3148,9 @@ void PostOp::writeMSH(const char *filename, std::vector<MElement*> &elements)
 
   fprintf(f, "$Elements\n");
   fprintf(f, "%d\n", (int)elements.size());
-  for (MElement::size_type i = 0; i < elements.size(); ++i) {
+  for (std::size_t i = 0; i < elements.size(); ++i) {
     fprintf(f, "%d %d 0", elements[i]->getNum(), elements[i]->getTypeForMSH());
-    for (MElement::size_type k = 0; k < elements[i]->getNumVertices(); ++k)
+    for (std::size_t k = 0; k < elements[i]->getNumVertices(); ++k)
       fprintf(f, " %d", elements[i]->getVertex(k)->getIndex());
     fprintf(f, "\n");
   }
@@ -4669,7 +4669,7 @@ MVertex* PostOp::other(MElement* element, MVertex* v1, MVertex* v2) {
 
   MVertex* pointer = NULL;
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
     if (getVertex != v1 && getVertex != v2) {
       pointer = getVertex;
@@ -4684,7 +4684,7 @@ MVertex* PostOp::other(MElement* element, MVertex* v1, MVertex* v2, MVertex* v3)
 
   MVertex* pointer = NULL;
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
     if (getVertex != v1 && getVertex != v2 && getVertex != v3) {
       pointer = getVertex;
@@ -4812,7 +4812,7 @@ MVertex* PostOp::find(MVertex* v1, MVertex* v2, MVertex* v3, MVertex* v4, MEleme
 
   MVertex* pointer = NULL;
 
-  for (MVertex::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
     if (getVertex != v1 && getVertex != v2 && getVertex != v3 && getVertex != v4) {
       pointer = getVertex;
@@ -5021,7 +5021,7 @@ void PostOp::build_vertex_to_tetrahedra(MElement* element) {
 
   std::set<MElement*> bin;
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_tetrahedra.find(getVertex);
@@ -5038,7 +5038,7 @@ void PostOp::build_vertex_to_tetrahedra(MElement* element) {
 
 void PostOp::erase_vertex_to_tetrahedra(MElement* element) {
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_tetrahedra.find(getVertex);
@@ -5064,7 +5064,7 @@ void PostOp::build_vertex_to_pyramids(MElement* element) {
 
   std::set<MElement*> bin;
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_pyramids.find(getVertex);
@@ -5081,7 +5081,7 @@ void PostOp::build_vertex_to_pyramids(MElement* element) {
 
 void PostOp::erase_vertex_to_pyramids(MElement* element) {
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_pyramids.find(getVertex);
@@ -5108,7 +5108,7 @@ void PostOp::build_vertex_to_hexPrism(MElement* element) {
 
   std::set<MElement*> bin;
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_hexPrism.find(getVertex);
@@ -5125,7 +5125,7 @@ void PostOp::build_vertex_to_hexPrism(MElement* element) {
 
 void PostOp::erase_vertex_to_hexPrism(MElement* element) {
 
-  for (MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for (std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex* getVertex = element->getVertex(i);
 
     Vertex2Elements::iterator it = vertex_to_hexPrism.find(getVertex);
@@ -5327,7 +5327,7 @@ void clique_stop_criteria<T>::export_corresponding_mesh
   int countertets = 1;
   for (set<MElement*>::iterator it = hexs.begin(); it != hexs.end(); it++) {
     out << counter << " 5 2 0 26";
-    for (MElement::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
     }
@@ -5338,7 +5338,7 @@ void clique_stop_criteria<T>::export_corresponding_mesh
   for (set<MElement*>::iterator it = tets.begin(); it != tets.end(); it++) {
     out << counter << " 4 2 0 26";
     outtets << counter << " 4 2 0 26";
-    for (MElement::size_type i = 0; i < (*it)->getNumVertices(); i++) {
+    for (std::size_t i = 0; i < (*it)->getNumVertices(); i++) {
       MVertex *v = (*it)->getVertex(i);
       out << " " << vertices[v];
       outtets << " " << vertices[v];
diff --git a/Numeric/approximationError.cpp b/Numeric/approximationError.cpp
index 76e0bd50f9..16eb86e189 100644
--- a/Numeric/approximationError.cpp
+++ b/Numeric/approximationError.cpp
@@ -10,7 +10,7 @@ double approximationError(simpleFunction<double> &f, MElement *element)
 {
   std::vector<double> VALS(element->getNumVertices());
 
-  for(MElement::size_type i = 0; i < element->getNumVertices(); i++) {
+  for(std::size_t i = 0; i < element->getNumVertices(); i++) {
     MVertex *v = element->getVertex(i);
     VALS[i] = f(v->x(), v->y(), v->z());
   }
diff --git a/Plugin/Crack.cpp b/Plugin/Crack.cpp
index 0aabeed2ab..537a5038e4 100644
--- a/Plugin/Crack.cpp
+++ b/Plugin/Crack.cpp
@@ -125,7 +125,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   std::set<MVertex*> crackVertices, bndVertices;
   if(dim == 1){
     for(unsigned int i = 0; i < crackElements.size(); i++){
-      for(MVertex::size_type j = 0; j < crackElements[i]->getNumVertices(); j++){
+      for(std::size_t j = 0; j < crackElements[i]->getNumVertices(); j++){
         MVertex *v = crackElements[i]->getVertex(j);
         crackVertices.insert(v);
       }
@@ -141,7 +141,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   else{
     std::set<EdgeData, Less_EdgeData> bnd;
     for(unsigned int i = 0; i < crackElements.size(); i++){
-      for(MVertex::size_type j = 0; j < crackElements[i]->getNumVertices(); j++){
+      for(std::size_t j = 0; j < crackElements[i]->getNumVertices(); j++){
         MVertex *v = crackElements[i]->getVertex(j);
         crackVertices.insert(v);
       }
@@ -163,7 +163,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   for(unsigned int i = 0; i < openEntities.size(); i++){
     for(unsigned int j = 0; j < openEntities[i]->getNumMeshElements(); j++){
       MElement *e = openEntities[i]->getMeshElement(j);
-      for(MElement::size_type k = 0; k < e->getNumVertices(); k++){
+      for(std::size_t k = 0; k < e->getNumVertices(); k++){
         MVertex *v = e->getVertex(k);
         bndVertices.erase(v);
       }
@@ -181,7 +181,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
     if(crackEntities.find(allentities[ent]) != crackEntities.end()) continue;
     for(unsigned int i = 0; i < allentities[ent]->getNumMeshElements(); i++){
       MElement *e = allentities[ent]->getMeshElement(i);
-      for(MElement::size_type j = 0; j < e->getNumVertices(); j++){
+      for(std::size_t j = 0; j < e->getNumVertices(); j++){
         if(crackVertices.find(e->getVertex(j)) != crackVertices.end()){
           // element touches the crack: find the closest crack element
           SPoint3 b = e->barycenter();
@@ -265,7 +265,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   // replace vertices in elements on one side of the crack
   for(std::set<MElement*>::iterator it = oneside.begin(); it != oneside.end(); it++){
     MElement *e = *it;
-    for(MElement::size_type i = 0; i < e->getNumVertices(); i++){
+    for(std::size_t i = 0; i < e->getNumVertices(); i++){
       if(vxv.count(e->getVertex(i)))
         e->setVertex(i, vxv[e->getVertex(i)]);
     }
diff --git a/Plugin/Distance.cpp b/Plugin/Distance.cpp
index aee2207a7f..ca382522cd 100644
--- a/Plugin/Distance.cpp
+++ b/Plugin/Distance.cpp
@@ -136,7 +136,7 @@ void GMSH_DistancePlugin::printView(std::vector<GEntity*> _entities,
             nods.push_back(e->getVertex(i));
         else
           for(int i = 0; i < e->getNumChildren(); i++)
-            for(MVertex::size_type j = 0; j < e->getChild(i)->getNumVertices(); j++)
+            for(std::size_t j = 0; j < e->getChild(i)->getNumVertices(); j++)
               nods.push_back(e->getChild(i)->getVertex(j));
 
         for (int nod = 0; nod < numNodes; nod++) out->push_back((nods[nod])->x());
@@ -372,7 +372,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
         existEntity = true;
         for (unsigned int i = 0; i < ge->getNumMeshElements(); ++i) {
           MElement *t = ge->getMeshElement(i);
-          for (MElement::size_type k=0; k<t->getNumVertices(); k++) {
+          for (std::size_t k=0; k<t->getNumVertices(); k++) {
             MVertex *v = t->getVertex(k);
             dofView->fixVertex(v, 0, 1, 0.);
             bbox += SPoint3(v->x(), v->y(), v->z());
@@ -394,7 +394,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
           for(unsigned int i = 0; i < ge->getNumMeshElements(); ++i) {
             MElement *t = ge->getMeshElement(i);
             allElems.push_back(t);
-            for (MElement::size_type k = 0; k < t->getNumVertices(); k++)
+            for (std::size_t k = 0; k < t->getNumVertices(); k++)
               dofView->numberVertex(t->getVertex(k), 0, 1);
           }
         }
@@ -460,7 +460,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
         for (unsigned int i=0; i<ge->getNumMeshElements(); ++i) {
           MElement *t = ge->getMeshElement(i);
           double vMean = 0.0;
-          for (MElement::size_type k = 0; k < t->getNumVertices(); k++) {
+          for (std::size_t k = 0; k < t->getNumVertices(); k++) {
             std::map<MVertex*, double>::iterator it = _distance_map.find(t->getVertex(k));
             vMean += it->second;
           }
@@ -479,7 +479,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
     for (std::vector<MElement* >::iterator it = allElems.begin();
          it != allElems.end(); it++){
       MElement *t = *it;
-      for(MElement::size_type k = 0; k < t->getNumVertices(); k++)
+      for(std::size_t k = 0; k < t->getNumVertices(); k++)
         myAssembler.numberVertex(t->getVertex(k), 0, 1);
     }
 
@@ -535,7 +535,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
         nods.push_back(e->getVertex(i));
     else
       for(int i = 0; i < e->getNumChildren(); i++)
-        for(MElement::size_type j = 0; j < e->getChild(i)->getNumVertices(); j++)
+        for(std::size_t j = 0; j < e->getChild(i)->getNumVertices(); j++)
           nods.push_back(e->getChild(i)->getVertex(j));
 
     for(int nod = 0; nod < numNodes; nod++) out2->push_back((nods[nod])->x());
diff --git a/Plugin/FaultZone.cpp b/Plugin/FaultZone.cpp
index 265193e01c..a728d26c1e 100644
--- a/Plugin/FaultZone.cpp
+++ b/Plugin/FaultZone.cpp
@@ -199,7 +199,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace* gFace){
   // fill _connectedElements
   for(unsigned int i = 0; i < gFace->getNumMeshElements(); i++){
     MElement *mElem = gFace->getMeshElement(i);
-    for (MElement::size_type j = 0; j < mElem->getNumVertices(); j++){
+    for (std::size_t j = 0; j < mElem->getNumVertices(); j++){
       MVertex *mVert = mElem->getVertex(j);
       std::set < MVertex* >::iterator its = allFissuresVertices.find( mVert );
       if (its != allFissuresVertices.end()){
@@ -214,7 +214,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace* gFace){
     GEdge *gEdge = *itl;
     for(unsigned int i = 0; i < gEdge->getNumMeshElements(); i++){
       MElement *mElem = gEdge->getMeshElement(i);
-      for (MElement::size_type j = 0; j < mElem->getNumVertices(); j++){
+      for (std::size_t j = 0; j < mElem->getNumVertices(); j++){
         MVertex *mVert = mElem->getVertex(j);
         std::set < MVertex* >::iterator its = allFissuresVertices.find( mVert );
         if (its != allFissuresVertices.end()){
@@ -273,7 +273,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace* gFace){
       }
 
       _jointElements.insert(mElem);
-      for(MVertex::size_type j = 0; j < mElem->getNumVertices(); j++){
+      for(std::size_t j = 0; j < mElem->getNumVertices(); j++){
         MVertex *mVert = mElem->getVertex(j);
         _fissureByHeavNode[mVert] = gEdge;
       }
@@ -576,7 +576,7 @@ void GMSH_FaultZoneMesher::CreateJointElements(GModel* gModel, GFace* gFace,
                      "outgoing normal for its corresponding joint element",
                      mElem->getNum());
       // retriving MVertices to create the new MElement
-      for(MVertex::size_type i = 0; i < mElem->getNumVertices(); i++){
+      for(std::size_t i = 0; i < mElem->getNumVertices(); i++){
         MVertex *mVert = mElem->getVertex(i);
 
         int j = (changeOri && i < 2) ? !i : i;
diff --git a/Plugin/FieldFromAmplitudePhase.cpp b/Plugin/FieldFromAmplitudePhase.cpp
index 51bb826e83..4db7934a4b 100644
--- a/Plugin/FieldFromAmplitudePhase.cpp
+++ b/Plugin/FieldFromAmplitudePhase.cpp
@@ -114,7 +114,7 @@ PView *GMSH_FieldFromAmplitudePhasePlugin::execute(PView *v)
   for(unsigned int ent = 0; ent < _entities.size(); ent++)
     for(unsigned int ele = 0; ele < _entities[ent]->getNumMeshElements(); ele++){
       MElement *e = _entities[ent]->getMeshElement(ele);
-      for(MElement::size_type nod = 0; nod < e->getNumVertices() ; nod++)
+      for(std::size_t nod = 0; nod < e->getNumVertices() ; nod++)
         ve.insert(e->getVertex(nod));
     }
 
diff --git a/Plugin/MeshSubEntities.cpp b/Plugin/MeshSubEntities.cpp
index 049584a092..7e9f503994 100644
--- a/Plugin/MeshSubEntities.cpp
+++ b/Plugin/MeshSubEntities.cpp
@@ -83,7 +83,7 @@ PView *GMSH_MeshSubEntitiesPlugin::execute(PView *view)
   if(outputdim == 0){ // create point elements for mesh vertices
     std::set<MVertex*> vertices;
     for(unsigned int i = 0; i < elements.size(); i++){
-      for(MVertex::size_type j = 0; j < elements[i]->getNumVertices(); j++){
+      for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++){
         MVertex *v = elements[i]->getVertex(j);
         vertices.insert(v);
       }
diff --git a/Plugin/ShowNeighborElements.cpp b/Plugin/ShowNeighborElements.cpp
index b962732e19..280d2f4c8e 100644
--- a/Plugin/ShowNeighborElements.cpp
+++ b/Plugin/ShowNeighborElements.cpp
@@ -86,13 +86,13 @@ void GMSH_ShowNeighborElementsPlugin::_init(GEntity *ent)
         el->getNum() == _nel4 ||
         el->getNum() == _nel5) {
       el->setVisibility(true);
-      for (MElement::size_type k = 0; k < el->getNumVertices(); ++k) { // TODO only corner vertices?
+      for (std::size_t k = 0; k < el->getNumVertices(); ++k) { // TODO only corner vertices?
         _vertices.insert(el->getVertex(k));
       }
     }
     else {
       el->setVisibility(false);
-      for (MElement::size_type k = 0; k < el->getNumVertices(); ++k) { // TODO only corner vertices?
+      for (std::size_t k = 0; k < el->getNumVertices(); ++k) { // TODO only corner vertices?
         _vert2elem.insert(std::make_pair(el->getVertex(k), el));
       }
     }
diff --git a/Plugin/ThinLayerFixMesh.cpp b/Plugin/ThinLayerFixMesh.cpp
index aae87b0b51..f828d982f8 100644
--- a/Plugin/ThinLayerFixMesh.cpp
+++ b/Plugin/ThinLayerFixMesh.cpp
@@ -415,7 +415,7 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                   MVertex* VToDo = (*CurrentSheet.begin());
                   std::vector<MTetrahedron*> surroundingTet = VertexToTets[VToDo];
                   for (unsigned int j = 0;j < surroundingTet.size();j++){
-                    for (MVertex::size_type k = 0;k < surroundingTet[j]->getNumVertices();k++){
+                    for (std::size_t k = 0;k < surroundingTet[j]->getNumVertices();k++){
                       MVertex* ToInsertTmp = surroundingTet[j]->getVertex(k);
                       std::map<MVertex*,std::vector<CorrespVerticesFixMesh*> >::iterator it2 = VertexToCorresp.find(ToInsertTmp);
                       if (ToInsertTmp->onWhat()->tag() == VToDo->onWhat()->tag()){//TODO: OR that onwhat -> dim <, for edges
diff --git a/Plugin/VoroMetal.cpp b/Plugin/VoroMetal.cpp
index f848680a0e..f7f80d3614 100644
--- a/Plugin/VoroMetal.cpp
+++ b/Plugin/VoroMetal.cpp
@@ -84,7 +84,7 @@ void voroMetal3D::execute(GRegion* gr,double h)
 
   for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++){
     MElement* element = gr->getMeshElement(i);
-    for(MElement::size_type j = 0; j < element->getNumVertices(); j++){
+    for(std::size_t j = 0; j < element->getNumVertices(); j++){
       MVertex* vertex = element->getVertex(j);
       vertices.insert(vertex);
     }
diff --git a/Post/OctreePost.cpp b/Post/OctreePost.cpp
index 7519504c57..357f0b8ab4 100644
--- a/Post/OctreePost.cpp
+++ b/Post/OctreePost.cpp
@@ -482,10 +482,10 @@ bool OctreePost::_getValue(void *in, int nbComp, double P[3], int timestep,
 
   std::vector<int> dataIndex(e->getNumVertices());
   if(_theViewDataGModel->getType() == PViewDataGModel::NodeData)
-    for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+    for(std::size_t i = 0; i < e->getNumVertices(); i++)
       dataIndex[i] = e->getVertex(i)->getNum();
   else
-    for(MElement::size_type i = 0; i < e->getNumVertices(); i++)
+    for(std::size_t i = 0; i < e->getNumVertices(); i++)
       dataIndex[i] = e->getNum();
 
   double U[3];
@@ -495,7 +495,7 @@ bool OctreePost::_getValue(void *in, int nbComp, double P[3], int timestep,
   for(int step = 0; step < _theViewDataGModel->getNumTimeSteps(); step++){
     if(!_theViewDataGModel->hasTimeStep(step)) continue;
     if(timestep < 0 || step == timestep){
-      for(MElement::size_type nod = 0; nod < e->getNumVertices(); nod++){
+      for(std::size_t nod = 0; nod < e->getNumVertices(); nod++){
         for(int comp = 0; comp < nbComp; comp++)
           _theViewDataGModel->getValueByIndex(step, dataIndex[nod], nod, comp,
                                               nodeval[nod * nbComp + comp]);
diff --git a/Post/PViewDataGModel.cpp b/Post/PViewDataGModel.cpp
index 9bd9514a22..bfa49e4bcc 100644
--- a/Post/PViewDataGModel.cpp
+++ b/Post/PViewDataGModel.cpp
@@ -717,7 +717,7 @@ void PViewDataGModel::smooth()
         MElement *e = _steps[step]->getEntity(ent)->getMeshElement(ele);
         double val;
         if(!getValueByIndex(step, e->getNum(), 0, 0, val)) continue;
-        for(MElement::size_type nod = 0; nod < e->getNumVertices(); nod++){
+        for(std::size_t nod = 0; nod < e->getNumVertices(); nod++){
           MVertex *v = e->getVertex(nod);
           if(nodeConnect.count(v->getNum()))
             nodeConnect[v->getNum()]++;
diff --git a/Solver/elasticitySolver.cpp b/Solver/elasticitySolver.cpp
index 2dde74b7ce..fd93a6c5b6 100644
--- a/Solver/elasticitySolver.cpp
+++ b/Solver/elasticitySolver.cpp
@@ -672,13 +672,13 @@ double elasticitySolver::computeDisplacementError(simpleFunction<double> *f0, si
          it != elasticFields[i].g->end(); ++it){
       MElement *e = *it;
       if(e->getParent()) {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j) {
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j) {
           if(vCut.find(e->getVertex(j)) == vCut.end())
             vCut[e->getVertex(j)] = e->getParent();
         }
       }
       else {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j)
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j)
           v.insert(e->getVertex(j));
       }
     }
@@ -799,13 +799,13 @@ PView* elasticitySolver::buildDisplacementView (const std::string postFileName)
          it != elasticFields[i].g->end(); ++it){
       MElement *e = *it;
       if(e->getParent()) {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j) {
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j) {
           if(vCut.find(e->getVertex(j)) == vCut.end())
             vCut[e->getVertex(j)] = e->getParent();
         }
       }
       else {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j)
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j)
           v.insert(e->getVertex(j));
       }
     }
@@ -978,7 +978,7 @@ PView* elasticitySolver::buildLagrangeMultiplierView (const std::string postFile
           LagrangeMultiplierFields[i].g->begin();
         it != LagrangeMultiplierFields[i].g->end(); ++it){
       MElement *e = *it;
-      for (MElement::size_type j = 0; j < e->getNumVertices(); ++j) v.insert(e->getVertex(j));
+      for (std::size_t j = 0; j < e->getNumVertices(); ++j) v.insert(e->getVertex(j));
     }
   }
   std::map<int, std::vector<double> > data;
diff --git a/Solver/filters.h b/Solver/filters.h
index 44d602486f..c0a2acc0a3 100644
--- a/Solver/filters.h
+++ b/Solver/filters.h
@@ -76,7 +76,7 @@ class FilterElementsCutByLevelSet
     for (; it != LevelSetElements->end(); it++)	{
       MElement *e = *it;
       if (e->getParent()){ // if element got parents
-        for (MElement::size_type k = 0; k < e->getParent()->getNumVertices(); ++k){  // for all vertices in the element parent
+        for (std::size_t k = 0; k < e->getParent()->getNumVertices(); ++k){  // for all vertices in the element parent
           _TagEnrichedVertex.insert(e->getParent()->getVertex(k)->getNum());
         }
       }
diff --git a/Solver/groupOfElements.h b/Solver/groupOfElements.h
index aa8215aedc..18733d0b26 100644
--- a/Solver/groupOfElements.h
+++ b/Solver/groupOfElements.h
@@ -76,12 +76,12 @@ class groupOfElements {
 
     if (e->getParent()){
       _parents.insert(e->getParent());
-      for (MElement::size_type i = 0; i < e->getParent()->getNumVertices(); i++){
+      for (std::size_t i = 0; i < e->getParent()->getNumVertices(); i++){
 	_vertices.insert(e->getParent()->getVertex(i));
       }
     }
     else{
-      for (MElement::size_type i = 0; i < e->getNumVertices(); i++){
+      for (std::size_t i = 0; i < e->getNumVertices(); i++){
 	_vertices.insert(e->getVertex(i));
       }
     }
diff --git a/Solver/thermicSolver.cpp b/Solver/thermicSolver.cpp
index d4226554f0..b7b135bd07 100644
--- a/Solver/thermicSolver.cpp
+++ b/Solver/thermicSolver.cpp
@@ -257,13 +257,13 @@ PView* thermicSolver::buildTemperatureView (const std::string postFileName)
     for (groupOfElements::elementContainer::const_iterator it = thermicFields[i].g->begin(); it != thermicFields[i].g->end(); ++it){
       MElement *e = *it;
       if(e->getParent()) {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j) {
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j) {
           if(vCut.find(e->getVertex(j)) == vCut.end())
             vCut[e->getVertex(j)] = e->getParent();
         }
       }
       else {
-        for (MElement::size_type j = 0; j < e->getNumVertices(); ++j)
+        for (std::size_t j = 0; j < e->getNumVertices(); ++j)
           v.insert(e->getVertex(j));
       }
     }
@@ -299,7 +299,7 @@ PView* thermicSolver::buildLagrangeMultiplierView (const std::string postFileNam
     for(groupOfElements::elementContainer::const_iterator it = LagrangeMultiplierFields[i].g->begin();
         it != LagrangeMultiplierFields[i].g->end(); ++it){
       MElement *e = *it;
-      for (MElement::size_type j = 0; j < e->getNumVertices(); ++j) v.insert(e->getVertex(j));
+      for (std::size_t j = 0; j < e->getNumVertices(); ++j) v.insert(e->getVertex(j));
     }
   }
   std::map<int, std::vector<double> > data;
-- 
GitLab