diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 2359ad0c557ca2e7c81e7dd667163add86c88c82..d497008a3828eea58f79bb3012ca73267b2b570a 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -290,7 +290,7 @@ void PrintUsage(const std::string &name)
 {
   Msg::Direct("Usage: %s [options] [files]", name.c_str());
   std::vector<std::pair<std::string, std::string> > s = GetUsage();
-  for(unsigned int i = 0; i < s.size(); i++){
+  for(std::size_t i = 0; i < s.size(); i++){
     std::string a = s[i].first, b = s[i].second;
     if(b.empty()){
       Msg::Direct("%s", a.c_str());
@@ -819,12 +819,12 @@ void GetOptions(int argc, char *argv[], bool readConfigFiles, bool exitOnError)
         while(i < argc) {
           std::string fileName = std::string(argv[i]) + "_new";
 #if defined(HAVE_POST)
-          unsigned int n = PView::list.size();
+          std::size_t n = PView::list.size();
 #endif
           OpenProject(argv[i]);
 #if defined(HAVE_POST)
           // convert post-processing views to latest binary format
-          for(unsigned int j = n; j < PView::list.size(); j++)
+          for(std::size_t j = n; j < PView::list.size(); j++)
             PView::list[j]->write(fileName, 1, (j == n) ? false : true);
 #endif
           // convert mesh to latest binary format
@@ -1153,7 +1153,7 @@ void GetOptions(int argc, char *argv[], bool readConfigFiles, bool exitOnError)
       else if(!strcmp(argv[i] + 1, "help_options")) {
         std::vector<std::string> s;
         PrintOptions(0, GMSH_FULLRC, 0, 1, 0, &s);
-        for(unsigned int i = 0; i < s.size(); i++)
+        for(std::size_t i = 0; i < s.size(); i++)
           Msg::Direct("%s\n", s[i].c_str());
         Msg::Exit(0);
       }
diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp
index c65fe897ec6d4e1fdf4cef3a281460510f0504ac..6cf6a2822e8d8b9228d9a28f7aa6f4770499bd00 100644
--- a/Common/CreateFile.cpp
+++ b/Common/CreateFile.cpp
@@ -217,8 +217,8 @@ static PixelBuffer *GetCompositePixelBuffer(GLenum format, GLenum type)
   }
   else{
     graphicWindow *g = FlGui::instance()->graph[0];
-    for(unsigned int i = 1; i < FlGui::instance()->graph.size(); i++){
-      for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++){
+    for(std::size_t i = 1; i < FlGui::instance()->graph.size(); i++){
+      for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++){
         if(FlGui::instance()->graph[i]->gl[j] ==
            FlGui::instance()->getCurrentOpenglWindow()){
           g = FlGui::instance()->graph[i];
@@ -228,7 +228,7 @@ static PixelBuffer *GetCompositePixelBuffer(GLenum format, GLenum type)
     }
     int ww = 0, hh = 0;
     std::vector<PixelBuffer*> buffers;
-    for(unsigned int i = 0; i < g->gl.size(); i++){
+    for(std::size_t i = 0; i < g->gl.size(); i++){
       openglWindow::setLastHandled(g->gl[i]);
       buffer = new PixelBuffer(g->gl[i]->pixel_w(), g->gl[i]->pixel_h(), format, type);
       buffer->fill(CTX::instance()->batch);
@@ -237,7 +237,7 @@ static PixelBuffer *GetCompositePixelBuffer(GLenum format, GLenum type)
       hh = std::max(hh, g->gl[i]->y() + g->gl[i]->pixel_h());
     }
     buffer = new PixelBuffer(ww, hh, format, type);
-    for(unsigned int i = 0; i < g->gl.size(); i++){
+    for(std::size_t i = 0; i < g->gl.size(); i++){
       buffer->copyPixels(g->gl[i]->x(), hh - g->gl[i]->h() - g->gl[i]->y(),
                          buffers[i]);
       delete buffers[i];
@@ -624,7 +624,7 @@ void CreateOutputFile(const std::string &fileName, int format,
       opt_general_small_axes(0, GMSH_SET, 0);
       int num = -1; // id of the post view
       int cnt = 0; // no of scales/colorbars active
-      for(unsigned int i = 0; i < opt_post_nb_views(0,GMSH_GET,0); i++) {
+      for(std::size_t i = 0; i < opt_post_nb_views(0,GMSH_GET,0); i++) {
         if(opt_view_visible(i, GMSH_GET, 0)) {
           if (opt_view_show_scale(i, GMSH_GET, 0)) {
             opt_view_show_scale(i, GMSH_SET, 0);
@@ -691,7 +691,7 @@ void CreateOutputFile(const std::string &fileName, int format,
       }
       if(cycle != 2)
         status_play_manual(!cycle, 0, false);
-      for(unsigned int i = 0; i < frames.size(); i++){
+      for(std::size_t i = 0; i < frames.size(); i++){
         if(cycle == 2)
           change_print_parameter(i);
         if(fp)
@@ -718,7 +718,7 @@ void CreateOutputFile(const std::string &fileName, int format,
                 "OUTPUT %s\nINPUT_CONVERT *\nINPUT_DIR %s\nINPUT\n",
                 pattern.c_str(), repeat, name.c_str(),
                 CTX::instance()->homeDir.c_str());
-        for(unsigned int i = 0; i < frames.size(); i++){
+        for(std::size_t i = 0; i < frames.size(); i++){
           fprintf(fp, "%s", frames[i].c_str());
           if(repeat > 1) fprintf(fp, " [1-%d]", repeat);
           fprintf(fp, "\n");
@@ -736,7 +736,7 @@ void CreateOutputFile(const std::string &fileName, int format,
         }
         if(opt_print_delete_tmp_files(0, GMSH_GET, 0)){
           UnlinkFile(parFileName);
-          for(unsigned int i = 0; i < frames.size(); i++)
+          for(std::size_t i = 0; i < frames.size(); i++)
             UnlinkFile(CTX::instance()->homeDir + frames[i]);
         }
       }
diff --git a/Common/GmshGlobal.cpp b/Common/GmshGlobal.cpp
index ef06adaedcad56a52f7135d01ccda94551e95f0b..99967fa10e701251d8728d671715c65dedbc5e7a 100644
--- a/Common/GmshGlobal.cpp
+++ b/Common/GmshGlobal.cpp
@@ -278,7 +278,7 @@ int GmshBatch()
 
   OpenProject(GModel::current()->getFileName());
   bool open = false;
-  for(unsigned int i = 0; i < CTX::instance()->files.size(); i++) {
+  for(std::size_t i = 0; i < CTX::instance()->files.size(); i++) {
     if(i == 0 && CTX::instance()->files[0][0] != '-') continue;
     if(CTX::instance()->files[i] == "-new")
       new GModel();
@@ -310,7 +310,7 @@ int GmshBatch()
 #if defined(HAVE_PARSER)
     std::vector<std::string> s;
     PrintParserSymbols(0, s);
-    for(unsigned int i = 0; i < s.size(); i++) Msg::Direct("%s", s[i].c_str());
+    for(std::size_t i = 0; i < s.size(); i++) Msg::Direct("%s", s[i].c_str());
 #endif
   }
   else if(CTX::instance()->batch == -1) {
@@ -375,7 +375,7 @@ int GmshFLTK(int argc, char **argv)
   else {
     OpenProject(GModel::current()->getFileName());
     bool open = false;
-    for(unsigned int i = 0; i < CTX::instance()->files.size(); i++) {
+    for(std::size_t i = 0; i < CTX::instance()->files.size(); i++) {
       if(i == 0 && CTX::instance()->files[0][0] != '-') continue;
       if(CTX::instance()->files[i] == "-new") {
         GModel::current()->setVisibility(0);
diff --git a/Common/GmshRemote.cpp b/Common/GmshRemote.cpp
index b4528bc6c0619fe95894413d62155a498a4fe63d..3e170027190c5d436ff478744b434dc2eb26b826 100644
--- a/Common/GmshRemote.cpp
+++ b/Common/GmshRemote.cpp
@@ -33,7 +33,7 @@
 
 static void computeAndSendVertexArrays(GmshClient *client, bool compute = true)
 {
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PView *p = PView::list[i];
     if(compute) p->fillVertexArrays();
     PViewData *data = p->getData();
@@ -64,14 +64,14 @@ static void computeAndSendVertexArrays(GmshClient *client, bool compute = true)
 static void computeAndSendVertexArrays()
 {
   // compute...
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     PView::list[i]->fillVertexArrays();
 
   // ...and send
   int nbArrays = PView::list.size() * 4;
   MPI_Send(&nbArrays, 1, MPI_INT, 0, MPI_GMSH_DATA_READY, MPI_COMM_WORLD);
 
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PView *p = PView::list[i];
     PViewData *data = p->getData();
     PViewOptions *opt = p->getOptions();
@@ -140,7 +140,7 @@ static void gatherAndSendVertexArrays(GmshClient *client, bool swap)
   int mpi_msg = MPI_GMSH_COMPUTE_VIEW;
   MPI_Bcast(&mpi_msg, 1, MPI_INT, 0, MPI_COMM_WORLD);
   // fill the arrays on the master node
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     PView::list[i]->fillVertexArrays();
   // wait and send the data from every other node
   for(int i = 0; i < nbDaemon - 1; i++) {
diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp
index 82355b21085b413a75f632c1e691c00ff8d2ef1b..d5c82ca986a91b487b118ba294058ac0e5e0c3df 100644
--- a/Common/OpenFile.cpp
+++ b/Common/OpenFile.cpp
@@ -132,7 +132,7 @@ void SetBoundingBox(bool aroundVisible)
 
 #if defined(HAVE_POST)
   if(bb.empty()) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(!PView::list[i]->getData()->getBoundingBox().empty())
         if(!aroundVisible || PView::list[i]->getOptions()->visible)
           bb += PView::list[i]->getData()->getBoundingBox();
@@ -558,7 +558,7 @@ int MergeFile(const std::string &fileName, bool warnIfMissing,
 #if defined(HAVE_FLTK) && defined(HAVE_POST)
   if(FlGui::available()) {
     // go directly to the first non-empty step after the one that is requested
-    for(unsigned int i = numViewsBefore; i < PView::list.size(); i++)
+    for(std::size_t i = numViewsBefore; i < PView::list.size(); i++)
       opt_view_timestep(i, GMSH_SET | GMSH_GUI,
                         PView::list[i]->getData()->getFirstNonEmptyTimeStep(
                           opt_view_timestep(i, GMSH_GET, 0)));
@@ -610,10 +610,10 @@ int MergePostProcessingFile(const std::string &fileName, int showViews,
   fclose(fp);
 
   // store old step values
-  unsigned int n = PView::list.size();
+  std::size_t n = PView::list.size();
   std::vector<int> steps(n, 0);
   if(showLastStep) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       steps[i] = (int)opt_view_nb_timestep(i, GMSH_GET, 0);
   }
 
@@ -631,7 +631,7 @@ int MergePostProcessingFile(const std::string &fileName, int showViews,
 
   // hide everything except the onelab X-Y graphs
   if(showViews == 0) {
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       if(PView::list[i]->getData()->getFileName().substr(0, 6) != "ONELAB")
         PView::list[i]->getOptions()->visible = 0;
     }
@@ -639,7 +639,7 @@ int MergePostProcessingFile(const std::string &fileName, int showViews,
   else if(showViews == 2 && n < PView::list.size()) {
     // if we created new views, assume we only want to see those (and the
     // onelab X-Y graphs)
-    for(unsigned int i = 0; i < n; i++) {
+    for(std::size_t i = 0; i < n; i++) {
       if(PView::list[i]->getData()->getFileName().substr(0, 6) != "ONELAB")
         PView::list[i]->getOptions()->visible = 0;
     }
@@ -649,7 +649,7 @@ int MergePostProcessingFile(const std::string &fileName, int showViews,
   // imaginary part for complex fields), go to the last one
   if(showLastStep) {
     steps.resize(PView::list.size(), 0);
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       int step = (int)opt_view_nb_timestep(i, GMSH_GET, 0);
       if(step > steps[i] && steps[i] > 1)
         opt_view_timestep(i, GMSH_SET | GMSH_GUI, step - 1);
@@ -678,7 +678,7 @@ void ClearProject()
 
   // close the files that might have been left open by ParseFile
   if(openedFiles.size()) {
-    for(unsigned int i = 0; i < openedFiles.size(); i++) fclose(openedFiles[i]);
+    for(std::size_t i = 0; i < openedFiles.size(); i++) fclose(openedFiles[i]);
     openedFiles.clear();
   }
   Msg::Info("Done clearing all models and views");
@@ -748,7 +748,7 @@ void OpenProject(const std::string &fileName)
   std::vector<std::string> tmp = CTX::instance()->recentFiles;
   CTX::instance()->recentFiles.clear();
   CTX::instance()->recentFiles.push_back(fileName);
-  for(unsigned int i = 0; i < tmp.size(); i++) {
+  for(std::size_t i = 0; i < tmp.size(); i++) {
     if(tmp[i] != fileName) CTX::instance()->recentFiles.push_back(tmp[i]);
   }
   CTX::instance()->recentFiles.resize(10);
@@ -758,7 +758,7 @@ void OpenProject(const std::string &fileName)
 
   // close the files that might have been left open by ParseFile
   if(openedFiles.size()) {
-    for(unsigned int i = 0; i < openedFiles.size(); i++) fclose(openedFiles[i]);
+    for(std::size_t i = 0; i < openedFiles.size(); i++) fclose(openedFiles[i]);
     openedFiles.clear();
   }
 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index bbef6d17117f7cf322e2b0162cd693d5dceb7868..fd9d61f63de7dbaea4bb2db6ec3cdef67be24066 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -134,7 +134,7 @@ static void PrintStringOptions(int num, int level, int diff, int help,
           fprintf(file, "%s\n", tmp);
         else{
           // remove \n, \t, \r
-          for(unsigned int i = 0; i < strlen(tmp); i++)
+          for(std::size_t i = 0; i < strlen(tmp); i++)
             if(tmp[i] == '\n' || tmp[i] == '\t' || tmp[i] == '\r') tmp[i] = ' ';
           if(vec)
             vec->push_back(std::string(tmp) + '\0' + "string");
@@ -169,7 +169,7 @@ static void PrintStringOptionsDoc(StringXString s[], const char *prefix, FILE *f
 
     // sanitize the string for texinfo
     std::string val = s[i].function(0, GMSH_GET, "");
-    for(unsigned int j = 1; j < val.size(); j++){
+    for(std::size_t j = 1; j < val.size(); j++){
       if(val[j] == '\n' && val[j - 1] == '\n')
         val[j - 1] = '.';
     }
@@ -502,7 +502,7 @@ void ReInitOptions(int num)
 
 #if defined(HAVE_POST)
   PView::list = tmp;
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     PView::list[i]->setOptions();
 #endif
 }
@@ -708,9 +708,9 @@ void PrintOptions(int num, int level, int diff, int help, const char *filename,
 
   if(level & GMSH_FULLRC) {
 #if defined(HAVE_POST)
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       char tmp[256];
-      sprintf(tmp, "View[%d].", i);
+      sprintf(tmp, "View[%lu].", i);
       PrintOptionCategory(level, diff, help, "View options (strings)", file, vec);
       PrintStringOptions(i, level, diff, help, ViewOptions_String, tmp, file, vec);
       PrintOptionCategory(level, diff, help, "View options (numbers)", file, vec);
@@ -942,7 +942,7 @@ void PrintOptionsDoc()
     }
     std::vector<std::pair<std::string, std::string> > s = GetShortcutsUsage("Ctrl+");
     fprintf(file, "%s@table @kbd\n", warn);
-    for(unsigned int i = 0; i < s.size(); i++)
+    for(std::size_t i = 0; i < s.size(); i++)
       fprintf(file, "@item %s\n%s\n", s[i].first.c_str(), s[i].second.c_str());
     fprintf(file, "@end table\n");
     fclose(file);
@@ -955,7 +955,7 @@ void PrintOptionsDoc()
     }
     std::vector<std::pair<std::string, std::string> > s = GetMouseUsage();
     fprintf(file, "%s@table @kbd\n", warn);
-    for(unsigned int i = 0; i < s.size(); i++)
+    for(std::size_t i = 0; i < s.size(); i++)
       fprintf(file, "@item %s\n%s\n", s[i].first.c_str(), s[i].second.c_str());
     fprintf(file, "@end table\n");
     fclose(file);
@@ -968,7 +968,7 @@ void PrintOptionsDoc()
     }
     std::vector<std::pair<std::string, std::string> > s = GetUsage();
     fprintf(file, "%s@ftable @code\n", warn);
-    for(unsigned int i = 0; i < s.size(); i++)
+    for(std::size_t i = 0; i < s.size(); i++)
       if(s[i].first.size() && s[i].second.size())
         fprintf(file, "@item %s\n%s\n", s[i].first.c_str(), s[i].second.c_str());
       else if(s[i].first.size() && s[i].second.empty())
@@ -1106,8 +1106,8 @@ std::string opt_general_background_image_filename(OPT_ARGS_STR)
   if(action & GMSH_SET){
 #if defined(HAVE_FLTK)
     if(CTX::instance()->bgImageFileName != val && FlGui::available()){
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
           FlGui::instance()->graph[i]->gl[j]->getDrawContext()->
             invalidateBgImageTexture();
     }
@@ -3012,16 +3012,16 @@ double opt_general_mouse_selection(OPT_ARGS_NUM)
     if(CTX::instance()->mouseSelection){
       if(FlGui::available())
         Msg::StatusBar(false, "Mouse selection ON");
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->getSelectionButton()->color(FL_BACKGROUND_COLOR);
     }
     else{
       if(FlGui::available())
         Msg::StatusBar(false, "Mouse selection OFF");
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->getSelectionButton()->color(FL_RED);
     }
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       FlGui::instance()->graph[i]->getSelectionButton()->redraw();
   }
 #endif
@@ -3387,8 +3387,8 @@ double opt_general_double_buffer(OPT_ARGS_NUM)
     if(FlGui::available()) {
       int mode = FL_RGB | FL_DEPTH | (CTX::instance()->db ? FL_DOUBLE : FL_SINGLE);
       if(CTX::instance()->antialiasing) mode |= FL_MULTISAMPLE;
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
           FlGui::instance()->graph[i]->gl[j]->mode(mode);
     }
 #endif
@@ -3409,8 +3409,8 @@ double opt_general_antialiasing(OPT_ARGS_NUM)
     if(FlGui::available()) {
       int mode = FL_RGB | FL_DEPTH | (CTX::instance()->db ? FL_DOUBLE : FL_SINGLE);
       if(CTX::instance()->antialiasing) mode |= FL_MULTISAMPLE;
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
           FlGui::instance()->graph[i]->gl[j]->mode(mode);
     }
 #endif
@@ -3488,7 +3488,7 @@ double opt_general_color_scheme(OPT_ARGS_NUM)
     SetDefaultColorOptions(0, SolverOptions_Color);
     SetDefaultColorOptions(0, PostProcessingOptions_Color);
 #if defined(HAVE_POST)
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       SetDefaultColorOptions(i, ViewOptions_Color);
 #endif
     SetDefaultColorOptions(0, PrintOptions_Color);
@@ -3499,7 +3499,7 @@ double opt_general_color_scheme(OPT_ARGS_NUM)
     SetColorOptionsGUI(0, SolverOptions_Color);
     SetColorOptionsGUI(0, PostProcessingOptions_Color);
 #if defined(HAVE_POST)
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       SetColorOptionsGUI(i, ViewOptions_Color);
 #endif
     SetColorOptionsGUI(0, PrintOptions_Color);
@@ -6722,7 +6722,7 @@ double opt_post_anim_cycle(OPT_ARGS_NUM)
     FlGui::instance()->options->post.butt[0]->value
       (CTX::instance()->post.animCycle);
   if(FlGui::available())
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       FlGui::instance()->graph[i]->checkAnimButtons();
 #endif
   return CTX::instance()->post.animCycle;
@@ -6835,7 +6835,7 @@ double opt_view_nb_timestep(OPT_ARGS_NUM)
   if(_gui_action_valid(action, num))
     FlGui::instance()->options->view.value[50]->maximum(data->getNumTimeSteps() - 1);
   if(FlGui::available())
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       FlGui::instance()->graph[i]->checkAnimButtons();
 #endif
   return data->getNumTimeSteps();
diff --git a/Common/SmoothData.cpp b/Common/SmoothData.cpp
index be47d01c608e440d8b18d4ad325b5acf7ecc36d5..2e1008b7ef542575735e61f3ca61a69c5ae6a359 100644
--- a/Common/SmoothData.cpp
+++ b/Common/SmoothData.cpp
@@ -191,7 +191,7 @@ void xyzn::update(char nx, char ny, char nz, float tol)
   // store the average value as the cluster center as we go), but it
   // seems to work very nicely in practice (and it's faster than
   // storing everyting and averaging at the end)
-  for(unsigned int i = 0; i < n.size(); i++) {
+  for(std::size_t i = 0; i < n.size(); i++) {
     if(tol >= 180. || std::abs(angle(i, nx, ny, nz)) < tol) {
       // just ignore it if we have more than 100 contributions to a
       // single point...
@@ -240,7 +240,7 @@ bool smooth_normals::get(double x, double y, double z, double &nx, double &ny,
   if(it == c.end()) return false;
 
   xyzn *p = (xyzn *)&(*it);
-  for(unsigned int i = 0; i < p->n.size(); i++) {
+  for(std::size_t i = 0; i < p->n.size(); i++) {
     if(std::abs(p->angle(i, float2char((float)nx), float2char((float)ny),
                          float2char((float)nz))) < tol) {
       nx = char2float(p->n[i].nx);
diff --git a/Common/StringUtils.cpp b/Common/StringUtils.cpp
index 83e2e6e1f31b98e453f96d04a94ca547ebbc5609..1c53c0b5e8182129ce939cc17fb1cdf9f00b30de 100644
--- a/Common/StringUtils.cpp
+++ b/Common/StringUtils.cpp
@@ -48,7 +48,7 @@ std::string SanitizeTeXString(const char *in, int equation)
   // otherwise, escape the following special characters:
   char bad[8] = {'%', '^', '#', '%', '&', '_', '{', '}'};
   while(*in) {
-    for(unsigned int i = 0; i < sizeof(bad); i++) {
+    for(std::size_t i = 0; i < sizeof(bad); i++) {
       if(*in == bad[i]) {
         out.push_back('\\');
         break;
diff --git a/Common/VertexArray.cpp b/Common/VertexArray.cpp
index 041097b5ab56509f62933b533710d1be6fa25f57..d31c31fdb9d6b61fb7bb7ba4d65737014a1ae14d 100644
--- a/Common/VertexArray.cpp
+++ b/Common/VertexArray.cpp
@@ -294,7 +294,7 @@ int VertexArray::decodeHeader(int length, const char *bytes, int swap,
   if(ss){
     std::vector<char> n(ss);
     memcpy(&n[0], &bytes[index], ss); index += ss;
-    for(unsigned int i = 0; i < n.size(); i++) name += n[i];
+    for(std::size_t i = 0; i < n.size(); i++) name += n[i];
   }
   memcpy(&type, &bytes[index], is); index += is;
   memcpy(&min, &bytes[index], ds); index += ds;
diff --git a/Common/gmshLocalNetworkClient.cpp b/Common/gmshLocalNetworkClient.cpp
index f57e70ff3dc8b40e5d6c906dc6064ebbcfef4d66..cef6449352453d972fe9e659c291639c7739de8b 100644
--- a/Common/gmshLocalNetworkClient.cpp
+++ b/Common/gmshLocalNetworkClient.cpp
@@ -139,7 +139,7 @@ public:
       }
       else {
         std::vector<std::string> cl = onelabUtils::getCommandLine(_client);
-        for(unsigned int i = 0; i < cl.size(); i++) args.append(" " + cl[i]);
+        for(std::size_t i = 0; i < cl.size(); i++) args.append(" " + cl[i]);
       }
       args.append(" " + _client->getSocketSwitch() + " \"" +
                   _client->getName() + "\" %s");
@@ -391,7 +391,7 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
     else
       Msg::Error("Unknown ONELAB parameter type in query: %s", ptype.c_str());
 
-    for(unsigned int i = 0; i < replies.size(); i++)
+    for(std::size_t i = 0; i < replies.size(); i++)
       getGmshServer()->SendMessage(GmshSocket::GMSH_PARAMETER_QUERY_ALL,
                                    replies[i].size(), &replies[i][0]);
     reply = "Sent all ONELAB " + ptype + "s";
@@ -415,7 +415,7 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
     break;
   case GmshSocket::GMSH_MERGE_FILE:
     if(CTX::instance()->solver.autoMergeFile) {
-      unsigned int n = PView::list.size();
+      std::size_t n = PView::list.size();
       bool changedBeforeMerge = onelab::server::instance()->getChanged("Gmsh");
       MergePostProcessingFile(message, CTX::instance()->solver.autoShowViews,
                               CTX::instance()->solver.autoShowLastStep, true);
@@ -588,7 +588,7 @@ new_connection:
         }
       }
     }
-    for(unsigned int i = 0; i < toDelete.size(); i++) {
+    for(std::size_t i = 0; i < toDelete.size(); i++) {
       removeClient(toDelete[i]);
       delete toDelete[i];
     }
@@ -624,7 +624,7 @@ new_connection:
       toDelete.push_back(c);
     }
   }
-  for(unsigned int i = 0; i < toDelete.size(); i++) {
+  for(std::size_t i = 0; i < toDelete.size(); i++) {
     removeClient(toDelete[i]);
     delete toDelete[i];
   }
diff --git a/Common/onelab.h b/Common/onelab.h
index 57c6905a63ae64a95d294e4608af0d4f73ad0f2e..1756046be8788d23e252d3d1eb0b098f7f46014e 100644
--- a/Common/onelab.h
+++ b/Common/onelab.h
@@ -250,7 +250,7 @@ namespace onelab {
     std::string sanitize(const std::string &in) const
     {
       std::string out(in);
-      for(unsigned int i = 0; i < in.size(); i++)
+      for(std::size_t i = 0; i < in.size(); i++)
         if(out[i] == charSep()) out[i] = ' ';
       return out;
     }
@@ -329,9 +329,9 @@ namespace onelab {
       time(&now);
       fprintf(fp, "ONELAB database created by %s on %s", creator.c_str(),
               ctime(&now));
-      for(unsigned int i = 0; i < msg.size(); i++) {
+      for(std::size_t i = 0; i < msg.size(); i++) {
         fprintf(fp, "%d ", (int)msg[i].size());
-        for(unsigned int j = 0; j < msg[i].size(); j++) fputc(msg[i][j], fp);
+        for(std::size_t j = 0; j < msg[i].size(); j++) fputc(msg[i][j], fp);
         fputc('\n', fp);
       }
       return true;
@@ -480,7 +480,7 @@ namespace onelab {
     {
       if(labels.size() != _choices.size()) return;
       if(_valueLabels.size()) _valueLabels.clear();
-      for(unsigned int i = 0; i < _choices.size(); i++)
+      for(std::size_t i = 0; i < _choices.size(); i++)
         _valueLabels[_choices[i]] = labels[i];
     }
     void setValueLabels(const std::map<double, std::string> &valueLabels)
@@ -498,7 +498,7 @@ namespace onelab {
       return _values[0];
     }
     const std::vector<double> &getValues() const { return _values; }
-    unsigned int getNumValues() const { return _values.size(); }
+    int getNumValues() const { return (int)_values.size(); }
     double getMin() const { return _min; }
     double getMax() const { return _max; }
     double getStep() const { return _step; }
@@ -524,7 +524,7 @@ namespace onelab {
       setReadOnly(p.getReadOnly());
       setAttributes(p.getAttributes());
       bool changed = false;
-      for(unsigned int i = 0; i < p.getValues().size(); i++) {
+      for(std::size_t i = 0; i < p.getValues().size(); i++) {
         if(p.getValues()[i] != getValues()[i]) {
           changed = true;
           break;
@@ -547,11 +547,11 @@ namespace onelab {
       std::ostringstream sstream;
       sstream.precision(16);
       sstream << parameter::toChar() << _values.size() << charSep();
-      for(unsigned int i = 0; i < _values.size(); i++)
+      for(std::size_t i = 0; i < _values.size(); i++)
         sstream << _values[i] << charSep();
       sstream << _min << charSep() << _max << charSep() << _step << charSep()
               << _index << charSep() << _choices.size() << charSep();
-      for(unsigned int i = 0; i < _choices.size(); i++)
+      for(std::size_t i = 0; i < _choices.size(); i++)
         sstream << _choices[i] << charSep();
       sstream << _valueLabels.size() << charSep();
       for(std::map<double, std::string>::const_iterator it =
@@ -566,14 +566,14 @@ namespace onelab {
       std::string::size_type pos = parameter::fromChar(msg);
       if(!pos) return 0;
       _values.resize(atoi(getNextToken(msg, pos).c_str()));
-      for(unsigned int i = 0; i < _values.size(); i++)
+      for(std::size_t i = 0; i < _values.size(); i++)
         _values[i] = atof(getNextToken(msg, pos).c_str());
       setMin(atof(getNextToken(msg, pos).c_str()));
       setMax(atof(getNextToken(msg, pos).c_str()));
       setStep(atof(getNextToken(msg, pos).c_str()));
       setIndex(atoi(getNextToken(msg, pos).c_str()));
       _choices.resize(atoi(getNextToken(msg, pos).c_str()));
-      for(unsigned int i = 0; i < _choices.size(); i++)
+      for(std::size_t i = 0; i < _choices.size(); i++)
         _choices[i] = atof(getNextToken(msg, pos).c_str());
       int numValueLabels = atoi(getNextToken(msg, pos).c_str());
       for(int i = 0; i < numValueLabels; i++) {
@@ -587,7 +587,7 @@ namespace onelab {
       std::ostringstream sstream;
       sstream.precision(16);
       sstream << "{ " << parameter::toJSON() << ", \"values\":[ ";
-      for(unsigned int i = 0; i < _values.size(); i++) {
+      for(std::size_t i = 0; i < _values.size(); i++) {
         if(i) sstream << ", ";
         sstream << _values[i];
       }
@@ -596,7 +596,7 @@ namespace onelab {
               << ", \"step\":" << _step << ", \"index\":" << _index;
       if(_choices.size()) {
         sstream << ", \"choices\":[ ";
-        for(unsigned int i = 0; i < _choices.size(); i++) {
+        for(std::size_t i = 0; i < _choices.size(); i++) {
           if(i) sstream << ", ";
           sstream << _choices[i];
         }
@@ -642,7 +642,7 @@ namespace onelab {
           if(!it->second.is<picojson::array>()) return false;
           const picojson::value::array &arr = it->second.get<picojson::array>();
           _values.resize(arr.size());
-          for(unsigned int i = 0; i < arr.size(); i++) {
+          for(std::size_t i = 0; i < arr.size(); i++) {
             if(!arr[i].is<double>()) return false;
             _values[i] = arr[i].get<double>();
           }
@@ -667,7 +667,7 @@ namespace onelab {
           if(!it->second.is<picojson::array>()) return false;
           const picojson::value::array &arr = it->second.get<picojson::array>();
           _choices.resize(arr.size());
-          for(unsigned int i = 0; i < arr.size(); i++) {
+          for(std::size_t i = 0; i < arr.size(); i++) {
             if(!arr[i].is<double>()) return false;
             _choices[i] = arr[i].get<double>();
           }
@@ -726,7 +726,7 @@ namespace onelab {
       return _values[0];
     }
     const std::vector<std::string> &getValues() const { return _values; }
-    unsigned int getNumValues() const { return _values.size(); }
+    int getNumValues() const { return (int)_values.size(); }
     const std::string &getKind() const { return _kind; }
     const std::vector<std::string> &getChoices() const { return _choices; }
     void update(const string &p)
@@ -738,7 +738,7 @@ namespace onelab {
       setReadOnly(p.getReadOnly());
       setAttributes(p.getAttributes());
       bool changed = false;
-      for(unsigned int i = 0; i < p.getValues().size(); i++) {
+      for(std::size_t i = 0; i < p.getValues().size(); i++) {
         if(p.getValues()[i] != getValues()[i]) {
           changed = true;
           break;
@@ -759,10 +759,10 @@ namespace onelab {
     {
       std::ostringstream sstream;
       sstream << parameter::toChar() << _values.size() << charSep();
-      for(unsigned int i = 0; i < _values.size(); i++)
+      for(std::size_t i = 0; i < _values.size(); i++)
         sstream << sanitize(_values[i]) << charSep();
       sstream << sanitize(_kind) << charSep() << _choices.size() << charSep();
-      for(unsigned int i = 0; i < _choices.size(); i++)
+      for(std::size_t i = 0; i < _choices.size(); i++)
         sstream << sanitize(_choices[i]) << charSep();
       return sstream.str();
     }
@@ -771,11 +771,11 @@ namespace onelab {
       std::string::size_type pos = parameter::fromChar(msg);
       if(!pos) return 0;
       _values.resize(atoi(getNextToken(msg, pos).c_str()));
-      for(unsigned int i = 0; i < _values.size(); i++)
+      for(std::size_t i = 0; i < _values.size(); i++)
         _values[i] = getNextToken(msg, pos);
       setKind(getNextToken(msg, pos));
       _choices.resize(atoi(getNextToken(msg, pos).c_str()));
-      for(unsigned int i = 0; i < _choices.size(); i++)
+      for(std::size_t i = 0; i < _choices.size(); i++)
         _choices[i] = getNextToken(msg, pos);
       return pos;
     }
@@ -783,7 +783,7 @@ namespace onelab {
     {
       std::ostringstream sstream;
       sstream << "{ " << parameter::toJSON() << ", \"values\":[ ";
-      for(unsigned int i = 0; i < _values.size(); i++) {
+      for(std::size_t i = 0; i < _values.size(); i++) {
         if(i) sstream << ", ";
         sstream << "\"" << sanitizeJSON(_values[i]) << "\"";
       }
@@ -792,7 +792,7 @@ namespace onelab {
         sstream << ", \"kind\":\"" << sanitizeJSON(_kind) << "\"";
       if(_choices.size()) {
         sstream << ", \"choices\":[ ";
-        for(unsigned int i = 0; i < _choices.size(); i++) {
+        for(std::size_t i = 0; i < _choices.size(); i++) {
           if(i) sstream << ", ";
           sstream << "\"" << sanitizeJSON(_choices[i]) << "\"";
         }
@@ -828,7 +828,7 @@ namespace onelab {
           if(!it->second.is<picojson::array>()) return false;
           const picojson::value::array &arr = it->second.get<picojson::array>();
           _values.resize(arr.size());
-          for(unsigned int i = 0; i < arr.size(); i++) {
+          for(std::size_t i = 0; i < arr.size(); i++) {
             if(!arr[i].is<std::string>()) return false;
             _values[i] = arr[i].get<std::string>();
           }
@@ -841,7 +841,7 @@ namespace onelab {
           if(!it->second.is<picojson::array>()) return false;
           const picojson::value::array &arr = it->second.get<picojson::array>();
           _choices.resize(arr.size());
-          for(unsigned int i = 0; i < arr.size(); i++) {
+          for(std::size_t i = 0; i < arr.size(); i++) {
             if(!arr[i].is<std::string>()) return false;
             _choices[i] = arr[i].get<std::string>();
           }
@@ -1028,7 +1028,7 @@ namespace onelab {
       ps.insert(_numbers.begin(), _numbers.end());
       ps.insert(_strings.begin(), _strings.end());
     }
-    unsigned int getNumParameters()
+    int getNumParameters()
     {
       return (int)(_numbers.size() + _strings.size());
     }
@@ -1095,7 +1095,7 @@ namespace onelab {
     bool fromChar(const std::vector<std::string> &msg,
                   const std::string &client = "")
     {
-      for(unsigned int i = 0; i < msg.size(); i++) {
+      for(std::size_t i = 0; i < msg.size(); i++) {
         std::string version, type, name;
         onelab::parameter::getInfoFromChar(msg[i], version, type, name);
         if(onelab::parameter::version() != version) return false;
@@ -1163,7 +1163,7 @@ namespace onelab {
             else if(j->first == "parameters") {
               if(!j->second.is<picojson::array>()) return false;
               const picojson::value::array &arr = j->second.get<picojson::array>();
-              for(unsigned int k = 0; k < arr.size(); k++) {
+              for(std::size_t k = 0; k < arr.size(); k++) {
                 if(!arr[k].is<picojson::object>()) return false;
                 const picojson::value::object &par = arr[k].get<picojson::object>();
                 if(!fromJSON(par, client)) return false;
@@ -1178,7 +1178,7 @@ namespace onelab {
       }
       else if(v.is<picojson::array>()){ // array of parameters
         const picojson::value::array &arr = v.get<picojson::array>();
-        for(unsigned int k = 0; k < arr.size(); k++) {
+        for(std::size_t k = 0; k < arr.size(); k++) {
           if(!arr[k].is<picojson::object>()) return false;
           const picojson::value::object &par = arr[k].get<picojson::object>();
           if(!fromJSON(par, client)) return false;
@@ -1273,15 +1273,15 @@ namespace onelab {
       std::vector<std::string> out;
       std::vector<number> n;
       get(n);
-      for(unsigned int i = 0; i < n.size(); i++) out.push_back(n[i].toChar());
+      for(std::size_t i = 0; i < n.size(); i++) out.push_back(n[i].toChar());
       std::vector<string> s;
       get(s);
-      for(unsigned int i = 0; i < s.size(); i++) out.push_back(s[i].toChar());
+      for(std::size_t i = 0; i < s.size(); i++) out.push_back(s[i].toChar());
       return out;
     }
     bool fromChar(const std::vector<std::string> &msg)
     {
-      for(unsigned int i = 0; i < msg.size(); i++) {
+      for(std::size_t i = 0; i < msg.size(); i++) {
         std::string version, type, name;
         onelab::parameter::getInfoFromChar(msg[i], version, type, name);
         if(onelab::parameter::version() != version) return false;
@@ -1373,7 +1373,7 @@ namespace onelab {
     {
       _parameterSpace.thresholdChanged(value, client);
     }
-    unsigned int getNumParameters()
+    int getNumParameters()
     {
       return _parameterSpace.getNumParameters();
     }
@@ -1470,7 +1470,7 @@ namespace onelab {
                                    const std::string &name = "")
     {
       bool ret = _get(ps, name);
-      for(unsigned int i = 0; i < ps.size(); i++)
+      for(std::size_t i = 0; i < ps.size(); i++)
         ps[i].setChoices(std::vector<double>());
       return ret;
     }
@@ -1478,7 +1478,7 @@ namespace onelab {
                                    const std::string &name = "")
     {
       bool ret = _get(ps, name);
-      for(unsigned int i = 0; i < ps.size(); i++)
+      for(std::size_t i = 0; i < ps.size(); i++)
         ps[i].setChoices(std::vector<std::string>());
       return ret;
     }
diff --git a/Common/onelabUtils.cpp b/Common/onelabUtils.cpp
index 1d6fb02446a66d6f1dfe3f7eae0d69a98e67a57a..76f2a85076678ca29dabb86e5c4e4ad059cf6b31 100644
--- a/Common/onelabUtils.cpp
+++ b/Common/onelabUtils.cpp
@@ -69,7 +69,7 @@ namespace onelabUtils {
         }
         else {
           sstream << " -setlistofnumbers " << it->first;
-          for(unsigned int i = 0; i < it->second.size(); i++)
+          for(std::size_t i = 0; i < it->second.size(); i++)
             sstream << " " << it->second[i];
         }
       }
@@ -148,7 +148,7 @@ namespace onelabUtils {
     bool changed = false;
     std::vector<onelab::number> numbers;
     onelab::server::instance()->get(numbers);
-    for(unsigned int i = 0; i < numbers.size(); i++) {
+    for(std::size_t i = 0; i < numbers.size(); i++) {
       if(numbers[i].getAttribute("Loop") == level) {
         if(numbers[i].getChoices().size() > 1) {
           numbers[i].setIndex(0);
@@ -190,7 +190,7 @@ namespace onelabUtils {
     bool recompute = false, loop = false;
     std::vector<onelab::number> numbers;
     onelab::server::instance()->get(numbers);
-    for(unsigned int i = 0; i < numbers.size(); i++) {
+    for(std::size_t i = 0; i < numbers.size(); i++) {
       if(numbers[i].getAttribute("Loop") == level) {
         loop = true;
 
@@ -273,7 +273,7 @@ namespace onelabUtils {
 #if defined(HAVE_POST)
     PView *view = 0;
 
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       if(PView::list[i]->getData()->getFileName() == "ONELAB" + graphNum) {
         view = PView::list[i];
         break;
@@ -286,7 +286,7 @@ namespace onelabUtils {
     int graphType = 3;
     std::vector<onelab::number> numbers;
     onelab::server::instance()->get(numbers);
-    for(unsigned int i = 0; i < numbers.size(); i++) {
+    for(std::size_t i = 0; i < numbers.size(); i++) {
       std::string v = numbers[i].getAttribute("Graph");
       v.resize(36, '0');
       if(v[2 * num] != '0') {
@@ -303,7 +303,7 @@ namespace onelabUtils {
     }
     if(x.empty()) {
       xName.clear();
-      for(unsigned int i = 0; i < y.size(); i++) x.push_back(i);
+      for(std::size_t i = 0; i < y.size(); i++) x.push_back(i);
     }
     if(x.size() && y.size()) {
       if(x.size() != y.size())
@@ -738,11 +738,11 @@ namespace onelabUtils {
     // add time stamp in all output files in the db, and rename them on disk
     std::vector<onelab::string> strings;
     onelab::server::instance()->get(strings);
-    for(unsigned int i = 0; i < strings.size(); i++) {
+    for(std::size_t i = 0; i < strings.size(); i++) {
       if(strings[i].getName().find("9Output files") != std::string::npos) {
         std::vector<std::string> names = strings[i].getChoices();
         names.push_back(strings[i].getValue());
-        for(unsigned int j = 0; j < names.size(); j++) {
+        for(std::size_t j = 0; j < names.size(); j++) {
           std::vector<std::string> split = SplitFileName(names[j]);
           int n = split[1].size();
           // if name is not already stamped
@@ -789,7 +789,7 @@ namespace onelabUtils {
     if(strings.size()) {
       std::vector<std::string> names = strings[0].getChoices();
       if(names.size()) {
-        for(unsigned int j = 0; j < names.size(); j++) {
+        for(std::size_t j = 0; j < names.size(); j++) {
           std::vector<std::string> split = SplitFileName(names[j]);
           std::string old = names[j];
           CreateSingleDir(dir);
@@ -830,7 +830,7 @@ namespace onelabUtils {
     onelab::server::instance()->get(allNumbers);
     onelab::server::instance()->get(allStrings);
     bool ismetamodel = false;
-    for(unsigned int i = 0; i < allNumbers.size(); i++) {
+    for(std::size_t i = 0; i < allNumbers.size(); i++) {
       if(allNumbers[i].getAttribute("Persistent") == "1")
         persistentNumbers.push_back(allNumbers[i]);
       // these 2 should always be persistent
@@ -840,7 +840,7 @@ namespace onelabUtils {
         persistentNumbers.push_back(allNumbers[i]);
       }
     }
-    for(unsigned int i = 0; i < allStrings.size(); i++) {
+    for(std::size_t i = 0; i < allStrings.size(); i++) {
       if(allStrings[i].getAttribute("Persistent") == "1")
         persistentStrings.push_back(allStrings[i]);
     }
@@ -855,12 +855,12 @@ namespace onelabUtils {
       onelabUtils::runGmshClient("reset", CTX::instance()->solver.autoMesh);
     }
 
-    for(unsigned int i = 0; i < persistentNumbers.size(); i++) {
+    for(std::size_t i = 0; i < persistentNumbers.size(); i++) {
       Msg::Debug("Restoring persistent parameter %s",
                  persistentNumbers[i].getName().c_str());
       onelab::server::instance()->set(persistentNumbers[i]);
     }
-    for(unsigned int i = 0; i < persistentStrings.size(); i++) {
+    for(std::size_t i = 0; i < persistentStrings.size(); i++) {
       Msg::Debug("Restoring persistent parameter %s",
                  persistentStrings[i].getName().c_str());
       onelab::server::instance()->set(persistentStrings[i]);
diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp
index 46f1979d12f02def733c936fe02556317275d9ca..47b55f507e383585e565200a858251bd75b160d8 100644
--- a/Fltk/FlGui.cpp
+++ b/Fltk/FlGui.cpp
@@ -605,8 +605,8 @@ FlGui::FlGui(int argc, char **argv)
   callForSolverPlugin(-1);
 
   // draw
-  for(unsigned int i = 0; i < graph.size(); i++)
-    for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+  for(std::size_t i = 0; i < graph.size(); i++)
+    for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
       graph[i]->gl[j]->redraw();
 
   if(CTX::instance()->showOptionsOnStartup) options->win->show();
@@ -703,32 +703,32 @@ int FlGui::testGlobalShortcuts(int event)
     status = 1;
   }
   else if(Fl::test_shortcut('e')) {
-    for(unsigned int i = 0; i < graph.size(); i++)
-      for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < graph.size(); i++)
+      for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
         graph[i]->gl[j]->endSelection = 1;
     status = 0; // trick: do as if we didn't use it
   }
   else if(Fl::test_shortcut('u')) {
-    for(unsigned int i = 0; i < graph.size(); i++)
-      for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < graph.size(); i++)
+      for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
         graph[i]->gl[j]->undoSelection = 1;
     status = 0; // trick: do as if we didn't use it
   }
   else if(Fl::test_shortcut('i')) {
-    for(unsigned int i = 0; i < graph.size(); i++)
-      for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < graph.size(); i++)
+      for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
         graph[i]->gl[j]->invertSelection = 1;
     status = 0; // trick: do as if we didn't use it
   }
   else if(Fl::test_shortcut('q')) {
-    for(unsigned int i = 0; i < graph.size(); i++)
-      for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < graph.size(); i++)
+      for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
         graph[i]->gl[j]->quitSelection = 1;
     status = 0; // trick: do as if we didn't use it
   }
   else if(Fl::test_shortcut('-')) {
-    for(unsigned int i = 0; i < graph.size(); i++)
-      for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < graph.size(); i++)
+      for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
         graph[i]->gl[j]->invertSelection = 1;
     status = 0; // trick: do as if we didn't use it
   }
@@ -773,12 +773,12 @@ int FlGui::testGlobalShortcuts(int event)
     }
     else {
       bool lasso = false;
-      for(unsigned int i = 0; i < graph.size(); i++)
-        for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < graph.size(); i++)
+        for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
           if(graph[i]->gl[j]->lassoMode) lasso = true;
       if(lasso) {
-        for(unsigned int i = 0; i < graph.size(); i++)
-          for(unsigned int j = 0; j < graph[i]->gl.size(); j++)
+        for(std::size_t i = 0; i < graph.size(); i++)
+          for(std::size_t j = 0; j < graph[i]->gl.size(); j++)
             graph[i]->gl[j]->lassoMode = false;
         status = 2;
       }
@@ -837,7 +837,7 @@ int FlGui::testGlobalShortcuts(int event)
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + 'i')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_show_scale(i, GMSH_SET | GMSH_GUI,
                             !opt_view_show_scale(i, GMSH_GET, 0));
@@ -849,7 +849,7 @@ int FlGui::testGlobalShortcuts(int event)
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + FL_SHIFT + 'c')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_colormap_number(i, GMSH_SET | GMSH_GUI,
                                  opt_view_colormap_number(i, GMSH_GET, 0) + 1);
@@ -859,7 +859,7 @@ int FlGui::testGlobalShortcuts(int event)
     opt_geometry_light(0, GMSH_SET | GMSH_GUI,
                        !opt_geometry_light(0, GMSH_GET, 0));
     opt_mesh_light(0, GMSH_SET | GMSH_GUI, !opt_mesh_light(0, GMSH_GET, 0));
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_light(i, GMSH_SET | GMSH_GUI, !opt_view_light(i, GMSH_GET, 0));
     status = 2;
@@ -886,7 +886,7 @@ int FlGui::testGlobalShortcuts(int event)
   else if(Fl::test_shortcut(FL_ALT + 'a')) {
     opt_general_axes(0, GMSH_SET | GMSH_GUI,
                      opt_general_axes(0, GMSH_GET, 0) + 1);
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_axes(i, GMSH_SET | GMSH_GUI,
                       opt_view_axes(i, GMSH_GET, 0) + 1);
@@ -955,7 +955,7 @@ int FlGui::testGlobalShortcuts(int event)
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + 't')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0)) {
         int t = opt_view_intervals_type(i, GMSH_GET, 0) + 1;
         if(t == 4) t = 1; // skip numeric display
@@ -964,21 +964,21 @@ int FlGui::testGlobalShortcuts(int event)
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + FL_SHIFT + 't')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_intervals_type(i, GMSH_SET | GMSH_GUI,
                                 opt_view_intervals_type(i, GMSH_GET, 0) + 1);
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + 'r')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_range_type(i, GMSH_SET | GMSH_GUI,
                             opt_view_range_type(i, GMSH_GET, 0) + 1);
     status = 2;
   }
   else if(Fl::test_shortcut(FL_ALT + 'n')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_draw_strings(i, GMSH_SET | GMSH_GUI,
                               !opt_view_draw_strings(i, GMSH_GET, 0));
@@ -986,7 +986,7 @@ int FlGui::testGlobalShortcuts(int event)
   }
   else if(Fl::test_shortcut(FL_ALT + 'e') ||
           Fl::test_shortcut(FL_ALT + FL_SHIFT + 'e')) {
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_show_element(i, GMSH_SET | GMSH_GUI,
                               !opt_view_show_element(i, GMSH_GET, 0));
@@ -994,7 +994,7 @@ int FlGui::testGlobalShortcuts(int event)
   }
   else if(Fl::test_shortcut(FL_ALT + 'h')) {
     static int show = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       opt_view_visible(i, GMSH_SET | GMSH_GUI, show);
     show = !show;
     status = 2;
@@ -1050,7 +1050,7 @@ int FlGui::testArrowShortcuts()
 
 void FlGui::setGraphicTitle(const std::string &title)
 {
-  for(unsigned int i = 0; i < graph.size(); i++) {
+  for(std::size_t i = 0; i < graph.size(); i++) {
     std::ostringstream sstream;
     if(title.empty())
       sstream << "Gmsh";
@@ -1064,7 +1064,7 @@ void FlGui::setGraphicTitle(const std::string &title)
 
 void FlGui::updateViews(bool numberOfViewsHasChanged, bool deleteWidgets)
 {
-  for(unsigned int i = 0; i < graph.size(); i++) graph[i]->checkAnimButtons();
+  for(std::size_t i = 0; i < graph.size(); i++) graph[i]->checkAnimButtons();
   if(numberOfViewsHasChanged) {
     if(onelab) onelab->rebuildTree(deleteWidgets);
     options->resetBrowser();
@@ -1097,7 +1097,7 @@ openglWindow *FlGui::getCurrentOpenglWindow()
 void FlGui::splitCurrentOpenglWindow(char how)
 {
   openglWindow *g = getCurrentOpenglWindow();
-  for(unsigned int i = 0; i < graph.size(); i++) {
+  for(std::size_t i = 0; i < graph.size(); i++) {
     if(graph[i]->split(g, how)) break;
   }
 }
@@ -1188,7 +1188,7 @@ void FlGui::setStatus(const std::string &msg, bool opengl)
     }
     strncpy(buff, tmp.c_str(), sizeof(buff) - 1);
     buff[sizeof(buff) - 1] = '\0';
-    for(unsigned int i = 0; i < graph.size(); i++) {
+    for(std::size_t i = 0; i < graph.size(); i++) {
       graph[i]->getProgress()->label(buff);
       graph[i]->getProgress()->redraw();
     }
@@ -1211,7 +1211,7 @@ void FlGui::setStatus(const std::string &msg, bool opengl)
 
 void FlGui::setLastStatus(int col)
 {
-  for(unsigned int i = 0; i < graph.size(); i++) {
+  for(std::size_t i = 0; i < graph.size(); i++) {
     if(col >= 0 && graph[0]->getMessageHeight() < FL_NORMAL_SIZE) {
       if(CTX::instance()->guiColorScheme) // dark
         graph[i]->getProgress()->color(col);
@@ -1229,7 +1229,7 @@ void FlGui::setLastStatus(int col)
 void FlGui::setProgress(const std::string &msg, double val, double min,
                         double max)
 {
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++) {
+  for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++) {
     if(FlGui::instance()->graph[i]->getProgress()->value() != val)
       FlGui::instance()->graph[i]->getProgress()->value(val);
     if(FlGui::instance()->graph[i]->getProgress()->minimum() != min)
@@ -1305,7 +1305,7 @@ void window_cb(Fl_Widget *w, void *data)
   std::string str((const char *)data);
 
   if(str == "minimize") {
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       if(FlGui::instance()->graph[i]->getWindow()->shown())
         FlGui::instance()->graph[i]->getWindow()->iconize();
     if(FlGui::instance()->options->win->shown())
@@ -1351,17 +1351,17 @@ void window_cb(Fl_Widget *w, void *data)
       FlGui::instance()->fullscreen->getDrawContext()->copyViewAttributes(
         FlGui::instance()->getCurrentOpenglWindow()->getDrawContext());
       openglWindow::setLastHandled(FlGui::instance()->fullscreen);
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->getWindow()->hide();
       drawContext::global()->draw();
       fullscreen = 1;
     }
     else {
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->gl[0]->valid(0);
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         FlGui::instance()->graph[i]->getWindow()->show();
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
         while(!FlGui::instance()->graph[i]->gl[0]->valid()) FlGui::wait();
       FlGui::instance()->graph[0]->gl[0]->getDrawContext()->copyViewAttributes(
         FlGui::instance()->getCurrentOpenglWindow()->getDrawContext());
@@ -1373,7 +1373,7 @@ void window_cb(Fl_Widget *w, void *data)
   }
   else if(str == "front") {
     // the order is important!
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       FlGui::instance()->graph[i]->getWindow()->show();
     if(FlGui::instance()->options->win->shown())
       FlGui::instance()->options->win->show();
@@ -1404,7 +1404,7 @@ void window_cb(Fl_Widget *w, void *data)
 
 void FlGui::addMessage(const char *msg)
 {
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++) {
+  for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++) {
     FlGui::instance()->graph[i]->addMessage(msg);
   }
 }
diff --git a/Fltk/classificationEditor.cpp b/Fltk/classificationEditor.cpp
index ae7ff15cbd5d0e1b3ed3c3b4a9e6a6dade2d4e0c..e3f44446c9799007ec55c7d31f89ac9cecadcc53 100644
--- a/Fltk/classificationEditor.cpp
+++ b/Fltk/classificationEditor.cpp
@@ -54,19 +54,19 @@ static void update_edges_cb(Fl_Widget *w, void *data)
 
   if(!e->selected) return;
 
-  for(unsigned int i = 0; i < e->selected->lines.size(); i++)
+  for(std::size_t i = 0; i < e->selected->lines.size(); i++)
     delete e->selected->lines[i];
   e->selected->lines.clear();
 
   double threshold = e->inputs[CLASS_VALUE_ANGLE]->value() / 180. * M_PI;
-  for(unsigned int i = 0; i < e->edges_detected.size(); i++) {
+  for(std::size_t i = 0; i < e->edges_detected.size(); i++) {
     edge_angle ea = e->edges_detected[i];
     if(ea.angle <= threshold) break;
     e->selected->lines.push_back(new MLine(ea.v1, ea.v2));
   }
 
   if(e->toggles[CLASS_TOGGLE_BOUNDARY]->value()) {
-    for(unsigned int i = 0; i < e->edges_lonly.size(); i++) {
+    for(std::size_t i = 0; i < e->edges_lonly.size(); i++) {
       edge_angle ea = e->edges_lonly[i];
       e->selected->lines.push_back(new MLine(ea.v1, ea.v2));
     }
@@ -112,7 +112,7 @@ static void select_elements_cb(Fl_Widget *w, void *data)
 
       char ib = FlGui::instance()->selectEntity(ENT_ALL);
       if(ib == 'l') {
-        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size();
+        for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size();
             i++) {
           MElement *me = FlGui::instance()->selectedElements[i];
           if(me->getDim() == 2 && me->getVisibility() != 2) {
@@ -122,7 +122,7 @@ static void select_elements_cb(Fl_Widget *w, void *data)
         }
       }
       if(ib == 'r') {
-        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size();
+        for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size();
             i++) {
           MElement *me = FlGui::instance()->selectedElements[i];
           if(me->getVisibility() == 2)
@@ -196,7 +196,7 @@ static void delete_edge_cb(Fl_Widget *w, void *data)
 
     char ib = FlGui::instance()->selectEntity(ENT_ALL);
     if(ib == 'l') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size();
+      for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size();
           i++) {
         MElement *me = FlGui::instance()->selectedElements[i];
         if(me->getType() == TYPE_LIN && me->getVisibility() != 2) {
@@ -206,7 +206,7 @@ static void delete_edge_cb(Fl_Widget *w, void *data)
       }
     }
     if(ib == 'r') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size();
+      for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size();
           i++) {
         MElement *me = FlGui::instance()->selectedElements[i];
         if(me->getVisibility() == 2)
@@ -230,7 +230,7 @@ static void delete_edge_cb(Fl_Widget *w, void *data)
   // look in all selected edges if a deleted one is present and delete it
   std::vector<MLine *> temp = e->selected->lines;
   e->selected->lines.clear();
-  for(unsigned int i = 0; i < temp.size(); i++) {
+  for(std::size_t i = 0; i < temp.size(); i++) {
     std::vector<MLine *>::iterator it =
       std::find(ele.begin(), ele.end(), temp[i]);
     if(it != ele.end())
@@ -252,7 +252,7 @@ static void reset_selection_cb(Fl_Widget *w, void *data)
 {
   classificationEditor *e = (classificationEditor *)data;
   if(!e->selected) return;
-  for(unsigned int i = 0; i < e->selected->lines.size(); i++)
+  for(std::size_t i = 0; i < e->selected->lines.size(); i++)
     delete e->selected->lines[i];
   e->selected->lines.clear();
   e->selected->deleteVertexArrays();
@@ -282,7 +282,7 @@ static void select_surfaces_cb(Fl_Widget *w, void *data)
                     "[Press 'e' to end selection or 'q' to abort]");
       char ib = FlGui::instance()->selectEntity(ENT_SURFACE);
       if(ib == 'l') {
-        for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size();
+        for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size();
             i++) {
           FlGui::instance()->selectedFaces[i]->setSelection(1);
           temp.push_back(FlGui::instance()->selectedFaces[i]);
@@ -290,7 +290,7 @@ static void select_surfaces_cb(Fl_Widget *w, void *data)
       }
       if(ib == 'e') { // store the list of gfaces
         GModel::current()->setSelection(0);
-        for(unsigned int i = 0; i < temp.size(); i++) e->faces.insert(temp[i]);
+        for(std::size_t i = 0; i < temp.size(); i++) e->faces.insert(temp[i]);
         break;
       }
       if(ib == 'q') { // do nothing
diff --git a/Fltk/clippingWindow.cpp b/Fltk/clippingWindow.cpp
index 1c5a9faef1cc6813bda29c5fa28d27ae026f5cc8..2ccaaebb9b65d7f56e3c0d6293809d464f29b020 100644
--- a/Fltk/clippingWindow.cpp
+++ b/Fltk/clippingWindow.cpp
@@ -28,7 +28,7 @@ static void clip_update_cb(Fl_Widget *w, void *data)
     int idx = FlGui::instance()->clipping->choice->value();
     CTX::instance()->geom.clip &= ~(1 << idx);
     CTX::instance()->mesh.clip &= ~(1 << idx);
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       PView::list[i]->getOptions()->clip &= ~(1 << idx);
     for(int i = 0; i < FlGui::instance()->clipping->browser->size(); i++) {
       if(FlGui::instance()->clipping->browser->selected(i + 1)) {
@@ -48,7 +48,7 @@ static void clip_update_cb(Fl_Widget *w, void *data)
   else { // box tab
     CTX::instance()->geom.clip = 0;
     CTX::instance()->mesh.clip = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       PView::list[i]->getOptions()->clip = 0;
     for(int i = 0; i < FlGui::instance()->clipping->browser->size(); i++) {
       if(FlGui::instance()->clipping->browser->selected(i + 1)) {
@@ -111,7 +111,7 @@ static void clip_update_cb(Fl_Widget *w, void *data)
     for(int clip = 0; clip < 6; clip++) {
       if(CTX::instance()->mesh.clip)
         CTX::instance()->mesh.changed |= (ENT_CURVE | ENT_SURFACE | ENT_VOLUME);
-      for(unsigned int index = 0; index < PView::list.size(); index++)
+      for(std::size_t index = 0; index < PView::list.size(); index++)
         if(PView::list[index]->getOptions()->clip)
           PView::list[index]->setChanged(true);
     }
@@ -145,7 +145,7 @@ static void clip_reset_cb(Fl_Widget *w, void *data)
 {
   CTX::instance()->geom.clip = 0;
   CTX::instance()->mesh.clip = 0;
-  for(unsigned int index = 0; index < PView::list.size(); index++)
+  for(std::size_t index = 0; index < PView::list.size(); index++)
     PView::list[index]->getOptions()->clip = 0;
 
   // Warning: for consistency these reset values should match the
@@ -164,7 +164,7 @@ static void clip_reset_cb(Fl_Widget *w, void *data)
 
   if(CTX::instance()->clipWholeElements) {
     CTX::instance()->mesh.changed |= (ENT_CURVE | ENT_SURFACE | ENT_VOLUME);
-    for(unsigned int index = 0; index < PView::list.size(); index++)
+    for(std::size_t index = 0; index < PView::list.size(); index++)
       PView::list[index]->setChanged(true);
   }
 
@@ -291,8 +291,8 @@ void clippingWindow::resetBrowser()
   browser->clear();
   browser->add("Geometry");
   browser->add("Mesh");
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
-    sprintf(str, "View [%d]", i);
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
+    sprintf(str, "View [%lu]", i);
     browser->add(str);
   }
 
diff --git a/Fltk/contextWindow.cpp b/Fltk/contextWindow.cpp
index dbfc44ba51ab9b1e553196d18e60ef836436720d..67acffe7af9d44f6b2a27ba40a19fc8b8e62ab7a 100644
--- a/Fltk/contextWindow.cpp
+++ b/Fltk/contextWindow.cpp
@@ -67,7 +67,7 @@ static void draw_stl(std::vector<SPoint3> &vertices,
   glColor4ubv((GLubyte *)&CTX::instance()->color.geom.highlight[0]);
 
   VertexArray va(3, triangles.size());
-  for(unsigned int i = 0; i < triangles.size(); i += 3) {
+  for(std::size_t i = 0; i < triangles.size(); i += 3) {
     SPoint3 p1 = vertices[triangles[i]];
     SPoint3 p2 = vertices[triangles[i + 1]];
     SPoint3 p3 = vertices[triangles[i + 2]];
@@ -1127,8 +1127,8 @@ static void selection_mode_cb(Fl_Widget *w, void *data)
     opt_geometry_volumes(0, GMSH_SET | GMSH_GUI, 1);
     break;
   }
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-    for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+  for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
       FlGui::instance()->graph[i]->gl[j]->changeSelection = mode;
   drawContext::global()->draw();
 }
@@ -1454,8 +1454,8 @@ void physicalContextWindow::show(bool remove)
 {
   static std::vector<Fl_Menu_Item> menu;
   static std::vector<char *> names;
-  for(unsigned int i = 0; i < menu.size(); i++) menu[i].text = "";
-  for(unsigned int i = 0; i < names.size(); i++) free(names[i]);
+  for(std::size_t i = 0; i < menu.size(); i++) menu[i].text = "";
+  for(std::size_t i = 0; i < names.size(); i++) free(names[i]);
   names.clear();
   menu.clear();
   for(GModel::piter it = GModel::current()->firstPhysicalName();
diff --git a/Fltk/drawContextFltk.h b/Fltk/drawContextFltk.h
index b5de4506111593ea0aeedb5f322521acf8915f8b..43a3206531f83ca2c500b4d677fe7c04f6ff369e 100644
--- a/Fltk/drawContextFltk.h
+++ b/Fltk/drawContextFltk.h
@@ -31,8 +31,8 @@ public:
       FlGui::instance()->fullscreen->redraw();
     }
     else {
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++) {
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size();
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++) {
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size();
             j++) {
           FlGui::instance()->graph[i]->gl[j]->make_current();
           FlGui::instance()->graph[i]->gl[j]->redraw();
diff --git a/Fltk/fieldWindow.cpp b/Fltk/fieldWindow.cpp
index 0aa7fdec88ec0c3d853683eb21fcdec40abbd551..c1473b34807faa088d553f32669ede4a30d63da6 100644
--- a/Fltk/fieldWindow.cpp
+++ b/Fltk/fieldWindow.cpp
@@ -208,7 +208,7 @@ void fieldWindow::loadFieldViewList()
   put_on_view_btn->clear();
   put_on_view_btn->add("Create new view");
   put_on_view_btn->activate();
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     std::ostringstream s;
     s << "Put on View [" << i << "]";
     put_on_view_btn->add(s.str().c_str());
diff --git a/Fltk/fileDialogs.cpp b/Fltk/fileDialogs.cpp
index 1c583f0800865ab357f24db93638565d3ed8d22c..c5cdb129c5370cb1eb0dfdb3feecdf581245967a 100644
--- a/Fltk/fileDialogs.cpp
+++ b/Fltk/fileDialogs.cpp
@@ -1524,12 +1524,12 @@ static void _saveViews(const std::string &name, int which, int format,
   }
   else if(which == 1) {
     int numVisible = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(PView::list[i]->getOptions()->visible) numVisible++;
     if(!numVisible) { Msg::Error("No visible view"); }
     else {
       bool first = true;
-      for(unsigned int i = 0; i < PView::list.size(); i++) {
+      for(std::size_t i = 0; i < PView::list.size(); i++) {
         if(PView::list[i]->getOptions()->visible) {
           std::string fileName = name;
           if(!canAppend && numVisible > 1) {
@@ -1544,7 +1544,7 @@ static void _saveViews(const std::string &name, int which, int format,
     }
   }
   else {
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       std::string fileName = name;
       if(!canAppend && PView::list.size() > 1) {
         std::ostringstream os;
@@ -1640,12 +1640,12 @@ static void _saveAdaptedViews(const std::string &name, int useDefaultName,
   }
   else if(which == 1) {
     int numVisible = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(PView::list[i]->getOptions()->visible) numVisible++;
     if(!numVisible) { Msg::Error("No visible view"); }
     else {
       bool first = true;
-      for(unsigned int i = 0; i < PView::list.size(); i++) {
+      for(std::size_t i = 0; i < PView::list.size(); i++) {
         if(PView::list[i]->getOptions()->visible) {
           std::string fileName = name;
           if(!canAppend && numVisible > 1) {
@@ -1662,7 +1662,7 @@ static void _saveAdaptedViews(const std::string &name, int useDefaultName,
     }
   }
   else {
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       std::string fileName = name;
       if(!canAppend && PView::list.size() > 1) {
         std::ostringstream os;
diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp
index ede0a0b85e9a587d4e5197f8c3ccc06c188fb04e..aba9e22a099477be78d92b46882ac4609c853b1f 100644
--- a/Fltk/graphicWindow.cpp
+++ b/Fltk/graphicWindow.cpp
@@ -584,13 +584,13 @@ void file_watch_cb(Fl_Widget *w, void *data)
             (matches.size() > 1) ? "es" : "", pattern.c_str());
 
   std::set<std::string> allFiles;
-  for(unsigned int i = 0; i < GModel::list.size(); i++)
+  for(std::size_t i = 0; i < GModel::list.size(); i++)
     allFiles.insert(GetFileNameWithoutPath(GModel::list[i]->getFileName()));
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     for(int j = 0; j < PView::list[i]->getData()->getNumTimeSteps(); j++)
       allFiles.insert(GetFileNameWithoutPath(PView::list[i]->getData()->getFileName(j)));
 
-  for(unsigned int i = 0; i < matches.size(); i++)
+  for(std::size_t i = 0; i < matches.size(); i++)
     if(allFiles.find(GetFileNameWithoutPath(matches[i])) == allFiles.end())
       MergeFile(matches[i]);
   drawContext::global()->draw();
@@ -681,8 +681,8 @@ static void add_new_point_based_entity(const std::string &what, int pane)
   FlGui::instance()->elementaryContext->show(pane);
 
   while(1) {
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-      for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+      for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
         FlGui::instance()->graph[i]->gl[j]->addPointMode = 1;
     std::string name = what;
     std::transform(name.begin(), name.end(), name.begin(), ::tolower);
@@ -801,8 +801,8 @@ static void add_new_point_based_entity(const std::string &what, int pane)
       drawContext::global()->draw();
     }
     if(ib == 'q'){
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
           FlGui::instance()->graph[i]->gl[j]->addPointMode = 0;
       break;
     }
@@ -833,7 +833,7 @@ static void add_new_multiline(const std::string &type)
                     "or 'q' to abort]");
     char ib = FlGui::instance()->selectEntity(ENT_POINT);
     if(ib == 'l') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
         FlGui::instance()->selectedVertices[i]->setSelection(1);
         p.push_back(FlGui::instance()->selectedVertices[i]->tag());
       }
@@ -1325,25 +1325,25 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
 
     char ib = FlGui::instance()->selectEntity(type);
     if(ib == 'l') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
         FlGui::instance()->selectedVertices[i]->setSelection(1);
         std::pair<int, int> t(0, FlGui::instance()->selectedVertices[i]->tag());
         if(std::find(dimTags.begin(), dimTags.end(), t) == dimTags.end())
           dimTags.push_back(t);
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
         FlGui::instance()->selectedEdges[i]->setSelection(1);
         std::pair<int, int> t(1, FlGui::instance()->selectedEdges[i]->tag());
         if(std::find(dimTags.begin(), dimTags.end(), t) == dimTags.end())
           dimTags.push_back(t);
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
         FlGui::instance()->selectedFaces[i]->setSelection(1);
         std::pair<int, int> t(2, FlGui::instance()->selectedFaces[i]->tag());
         if(std::find(dimTags.begin(), dimTags.end(), t) == dimTags.end())
           dimTags.push_back(t);
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
         FlGui::instance()->selectedRegions[i]->setSelection(1);
         std::pair<int, int> t(3, FlGui::instance()->selectedRegions[i]->tag());
         if(std::find(dimTags.begin(), dimTags.end(), t) == dimTags.end())
@@ -1353,7 +1353,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
     }
     if(ib == 'r') {
       std::vector<std::pair<int, int> >::iterator it;
-      for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
         std::pair<int, int> t(0, FlGui::instance()->selectedVertices[i]->tag());
         it = std::find(dimTags.begin(), dimTags.end(), t);
         if(it != dimTags.end()){
@@ -1362,7 +1362,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
           if(ge) ge->setSelection(0);
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
         std::pair<int, int> t(1, FlGui::instance()->selectedEdges[i]->tag());
         it = std::find(dimTags.begin(), dimTags.end(), t);
         if(it != dimTags.end()){
@@ -1371,7 +1371,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
           if(ge) ge->setSelection(0);
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
         std::pair<int, int> t(2, FlGui::instance()->selectedFaces[i]->tag());
         it = std::find(dimTags.begin(), dimTags.end(), t);
         if(it != dimTags.end()){
@@ -1380,7 +1380,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
           if(ge) ge->setSelection(0);
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
         std::pair<int, int> t(3, FlGui::instance()->selectedRegions[i]->tag());
         it = std::find(dimTags.begin(), dimTags.end(), t);
         if(it != dimTags.end()){
@@ -1472,7 +1472,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
         case 11:
           {
             std::vector<int> tags;
-            for(unsigned int i = 0; i < dimTags.size(); i++){
+            for(std::size_t i = 0; i < dimTags.size(); i++){
               if((dimTags[i].first == 0 && what == "Point") ||
                  (dimTags[i].first == 1 && what == "Curve") ||
                  (dimTags[i].first == 2 && what == "Surface") ||
@@ -1493,7 +1493,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
         case 8:
           {
             std::vector<int> tags;
-            for(unsigned int i = 0; i < dimTags.size(); i++){
+            for(std::size_t i = 0; i < dimTags.size(); i++){
               if(dimTags[i].first == 0 && what == "Point")
                 tags.push_back(dimTags[i].second);
             }
@@ -1505,7 +1505,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
         case 9:
           {
             std::vector<int> tags;
-            for(unsigned int i = 0; i < dimTags.size(); i++){
+            for(std::size_t i = 0; i < dimTags.size(); i++){
               if(dimTags[i].first == 2 && what == "Surface")
                 tags.push_back(dimTags[i].second);
             }
@@ -1515,7 +1515,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
         case 10:
           {
             std::vector<int> tags;
-            for(unsigned int i = 0; i < dimTags.size(); i++){
+            for(std::size_t i = 0; i < dimTags.size(); i++){
               if((dimTags[i].first == 1 && what == "Curve") ||
                  (dimTags[i].first == 2 && what == "Surface") ||
                  (dimTags[i].first == 3 && what == "Volume"))
@@ -1533,7 +1533,7 @@ static void action_point_line_surface_volume(int action, const std::string &onwh
           }
           else{
             std::vector<int> l;
-            for(unsigned int i = 0; i < dimTags.size(); i++){
+            for(std::size_t i = 0; i < dimTags.size(); i++){
               if(dimTags[i].first == 1) l.push_back(dimTags[i].second);
             }
             add_pipe(GModel::current()->getFileName(), dimTagsSaved, l);
@@ -1652,7 +1652,7 @@ static void geometry_elementary_boolean_cb(Fl_Widget *w, void *data)
 
     char ib = FlGui::instance()->selectEntity(type);
     if(ib == 'l') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
         if(FlGui::instance()->selectedEdges[i]->getSelection() != 1){
           FlGui::instance()->selectedEdges[i]->setSelection(1);
           std::pair<int, int> t(1, FlGui::instance()->selectedEdges[i]->tag());
@@ -1662,7 +1662,7 @@ static void geometry_elementary_boolean_cb(Fl_Widget *w, void *data)
             tool.push_back(t);
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
         if(FlGui::instance()->selectedFaces[i]->getSelection() != 1){
           FlGui::instance()->selectedFaces[i]->setSelection(1);
           std::pair<int, int> t(2, FlGui::instance()->selectedFaces[i]->tag());
@@ -1672,7 +1672,7 @@ static void geometry_elementary_boolean_cb(Fl_Widget *w, void *data)
             tool.push_back(t);
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
         if(FlGui::instance()->selectedRegions[i]->getSelection() != 1){
           FlGui::instance()->selectedRegions[i]->setSelection(1);
           std::pair<int, int> t(3, FlGui::instance()->selectedRegions[i]->tag());
@@ -1760,13 +1760,13 @@ static void geometry_elementary_fillet_cb(Fl_Widget *w, void *data)
 
     char ib = FlGui::instance()->selectEntity(selectRegions ? ENT_VOLUME : ENT_CURVE);
     if(ib == 'l') {
-      for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
         if(FlGui::instance()->selectedEdges[i]->getSelection() != 1){
           FlGui::instance()->selectedEdges[i]->setSelection(1);
           edges.push_back(FlGui::instance()->selectedEdges[i]->tag());
         }
       }
-      for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
+      for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
         if(FlGui::instance()->selectedRegions[i]->getSelection() != 1){
           FlGui::instance()->selectedRegions[i]->setSelection(1);
           regions.push_back(FlGui::instance()->selectedRegions[i]->tag());
@@ -1851,7 +1851,7 @@ static void geometry_elementary_split_cb(Fl_Widget *w, void *data)
       split_edge(edge_to_split->tag(), List1, GModel::current()->getFileName());
       break;
     }
-    for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+    for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
       int tag = FlGui::instance()->selectedVertices[i]->tag();
       int index = List_ISearchSeq(List1, &tag, fcmp_int);
       if(index < 0) List_Add(List1, &tag);
@@ -1969,7 +1969,7 @@ static void mesh_delete_parts_cb(Fl_Widget *w, void *data)
     char ib = FlGui::instance()->selectEntity(what);
     if(ib == 'l') {
       if(CTX::instance()->pickElements){
-        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size(); i++){
           if(FlGui::instance()->selectedElements[i]->getVisibility() != 2){
             FlGui::instance()->selectedElements[i]->setVisibility(2);
             ele.push_back(FlGui::instance()->selectedElements[i]);
@@ -1977,19 +1977,19 @@ static void mesh_delete_parts_cb(Fl_Widget *w, void *data)
         }
       }
       else{
-        for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
           if(FlGui::instance()->selectedEdges[i]->getSelection() != 1){
             FlGui::instance()->selectedEdges[i]->setSelection(1);
             ent.push_back(FlGui::instance()->selectedEdges[i]);
           }
         }
-        for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
           if(FlGui::instance()->selectedFaces[i]->getSelection() != 1){
             FlGui::instance()->selectedFaces[i]->setSelection(1);
             ent.push_back(FlGui::instance()->selectedFaces[i]);
           }
         }
-        for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++){
           if(FlGui::instance()->selectedRegions[i]->getSelection() != 1){
             FlGui::instance()->selectedRegions[i]->setSelection(1);
             ent.push_back(FlGui::instance()->selectedRegions[i]);
@@ -1999,15 +1999,15 @@ static void mesh_delete_parts_cb(Fl_Widget *w, void *data)
     }
     if(ib == 'r') {
       if(CTX::instance()->pickElements){
-        for(unsigned int i = 0; i < FlGui::instance()->selectedElements.size(); i++)
+        for(std::size_t i = 0; i < FlGui::instance()->selectedElements.size(); i++)
           FlGui::instance()->selectedElements[i]->setVisibility(1);
       }
       else{
-        for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++)
+        for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++)
           FlGui::instance()->selectedEdges[i]->setSelection(0);
-        for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++)
+        for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++)
           FlGui::instance()->selectedFaces[i]->setSelection(0);
-        for(unsigned int i = 0; i < FlGui::instance()->selectedRegions.size(); i++)
+        for(std::size_t i = 0; i < FlGui::instance()->selectedRegions.size(); i++)
           FlGui::instance()->selectedRegions[i]->setSelection(0);
       }
     }
@@ -2027,11 +2027,11 @@ static void mesh_delete_parts_cb(Fl_Widget *w, void *data)
     }
     if(ib == 'e') {
       if(CTX::instance()->pickElements){
-        for(unsigned int i = 0; i < ele.size(); i++)
+        for(std::size_t i = 0; i < ele.size(); i++)
           if(ele[i]->getVisibility() == 2) ele[i]->setVisibility(0);
       }
       else{
-        for(unsigned int i = 0; i < ent.size(); i++)
+        for(std::size_t i = 0; i < ent.size(); i++)
           if(ent[i]->getSelection() == 1) ent[i]->setVisibility(0);
       }
       GModel::current()->removeInvisibleElements();
@@ -2067,11 +2067,11 @@ static void mesh_inspect_cb(Fl_Widget *w, void *data)
         CTX::instance()->mesh.changed = ENT_ALL;
         drawContext::global()->draw();
         std::vector<std::string> info = SplitString(ele->getInfoString(true), '\n');
-        for(unsigned int i = 0; i < info.size(); i++)
+        for(std::size_t i = 0; i < info.size(); i++)
           Msg::Direct("%s", info[i].c_str());
         if(CTX::instance()->tooltips){
           std::string str;
-          for(unsigned int i = 0; i < info.size(); i++)
+          for(std::size_t i = 0; i < info.size(); i++)
             str += info[i] + "\n";
           FlGui::instance()->getCurrentOpenglWindow()->drawTooltip(str);
         }
@@ -2262,7 +2262,7 @@ static void mesh_define_transfinite(int dim)
     if(ib == 'l') {
       switch (dim) {
       case 1:
-        for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
           FlGui::instance()->selectedEdges[i]->setSelection(1);
           p.push_back(FlGui::instance()->selectedEdges[i]->tag());
         }
@@ -2290,7 +2290,7 @@ static void mesh_define_transfinite(int dim)
                           "or 'q' to abort]");
           ib = FlGui::instance()->selectEntity(ENT_POINT);
           if(ib == 'l') {
-            for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+            for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
               FlGui::instance()->selectedVertices[i]->setSelection(1);
               p.push_back(FlGui::instance()->selectedVertices[i]->tag());
               break;
@@ -2411,7 +2411,7 @@ static void mesh_define_embedded_cb(Fl_Widget *w, void *data)
     char ib = FlGui::instance()->selectEntity(t);
     if(ib == 'l') {
       if(selectEntities && what == "Point"){
-        for(unsigned int i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedVertices.size(); i++){
           if(FlGui::instance()->selectedVertices[i]->getSelection() != 1){
             FlGui::instance()->selectedVertices[i]->setSelection(1);
             entities.push_back(FlGui::instance()->selectedVertices[i]->tag());
@@ -2419,7 +2419,7 @@ static void mesh_define_embedded_cb(Fl_Widget *w, void *data)
         }
       }
       else if(selectEntities && what == "Curve"){
-        for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
           if(FlGui::instance()->selectedEdges[i]->getSelection() != 1){
             FlGui::instance()->selectedEdges[i]->setSelection(1);
             entities.push_back(FlGui::instance()->selectedEdges[i]->tag());
@@ -2427,7 +2427,7 @@ static void mesh_define_embedded_cb(Fl_Widget *w, void *data)
         }
       }
       else if(selectEntities && what == "Surface"){
-        for(unsigned int i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
+        for(std::size_t i = 0; i < FlGui::instance()->selectedFaces.size(); i++){
           if(FlGui::instance()->selectedFaces[i]->getSelection() != 1){
             FlGui::instance()->selectedFaces[i]->setSelection(1);
             entities.push_back(FlGui::instance()->selectedFaces[i]->tag());
@@ -2630,7 +2630,7 @@ static Fl_Menu_Item sysbar_table[] = {
 static graphicWindow *getGraphicWindow(Fl_Widget *w)
 {
   if(!w || !w->parent()) return FlGui::instance()->graph[0];
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+  for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
     if(FlGui::instance()->graph[i]->getWindow() == w->parent())
       return FlGui::instance()->graph[i];
   return FlGui::instance()->graph[0];
@@ -2646,7 +2646,7 @@ void status_xyz1p_cb(Fl_Widget *w, void *data)
   else
     gls.push_back(FlGui::instance()->getCurrentOpenglWindow());
 
-  for(unsigned int i = 0; i < gls.size(); i++){
+  for(std::size_t i = 0; i < gls.size(); i++){
     drawContext *ctx = gls[i]->getDrawContext();
     if(!strcmp(str, "r")){
       // rotate +90 or -90 (shift) degress around axis perp to the
@@ -2834,17 +2834,17 @@ void quick_access_cb(Fl_Widget *w, void *data)
                                 true, "Factor", true, 0.01, 100, 0.01);
   else if(what == "view_element_outlines"){
     int set = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0) &&
          (set = opt_view_show_element(i, GMSH_GET, 0)))
         break;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_show_element(i, GMSH_SET|GMSH_GUI, !set);
   }
   else if(what == "view_normal_raise"){
     double val = 0.;
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(opt_view_visible(i, GMSH_GET, 0)){
         double maxval = std::max(fabs(opt_view_min(i, GMSH_GET, 0)),
                                  fabs(opt_view_max(i, GMSH_GET, 0)));
@@ -2855,71 +2855,71 @@ void quick_access_cb(Fl_Widget *w, void *data)
         break;
       }
     }
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_normal_raise(i, GMSH_SET|GMSH_GUI, val);
   }
   else if(what == "view_iso"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, 1);
     drawContext::global()->draw();
     double val = 0.;
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(opt_view_visible(i, GMSH_GET, 0)){
         val = numberOrStringOptionChooser("View", i, "NbIso",
                                           true, "Intervals", true, 1, 100, 1);
         break;
       }
     }
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_nb_iso(i, GMSH_SET|GMSH_GUI, val);
   }
   else if(what == "view_continous"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, 2);
   }
   else if(what == "view_filled"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, 3);
     drawContext::global()->draw();
     double val = 0.;
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(opt_view_visible(i, GMSH_GET, 0)){
         val = numberOrStringOptionChooser("View", i, "NbIso",
                                           true, "Intervals", true, 1, 100, 1);
         break;
       }
     }
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_nb_iso(i, GMSH_SET|GMSH_GUI, val);
   }
   else if(what == "view_numeric"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_intervals_type(i, GMSH_SET|GMSH_GUI, 4);
   }
   else if(what == "view_line"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_vector_type(i, GMSH_SET|GMSH_GUI, 1);
   }
   else if(what == "view_3d_arrow"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_vector_type(i, GMSH_SET|GMSH_GUI, 4);
   }
   else if(what == "view_displacement"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_vector_type(i, GMSH_SET|GMSH_GUI, 5);
     drawContext::global()->draw();
     double val = 0.;
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(opt_view_visible(i, GMSH_GET, 0)){
         double maxval = std::max(fabs(opt_view_min(i, GMSH_GET, 0)),
                                  fabs(opt_view_max(i, GMSH_GET, 0)));
@@ -2930,27 +2930,27 @@ void quick_access_cb(Fl_Widget *w, void *data)
         break;
       }
     }
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_displacement_factor(i, GMSH_SET|GMSH_GUI, val);
   }
   else if(what == "view_glyph_barycenter"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_glyph_location(i, GMSH_SET|GMSH_GUI, 1);
   }
   else if(what == "view_glyph_node"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_glyph_location(i, GMSH_SET|GMSH_GUI, 2);
   }
   else if(what == "view_range_default"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_range_type(i, GMSH_SET|GMSH_GUI, 1);
   }
   else if(what == "view_range_per_step"){
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0))
         opt_view_range_type(i, GMSH_SET|GMSH_GUI, 3);
   }
@@ -2996,7 +2996,7 @@ static void model_switch_cb(Fl_Widget* w, void *data)
   int index = (intptr_t)data;
   GModel::current(index);
   SetBoundingBox();
-  for(unsigned int i = 0; i < GModel::list.size(); i++)
+  for(std::size_t i = 0; i < GModel::list.size(); i++)
     GModel::list[i]->setVisibility(0);
   GModel::current()->setVisibility(1);
   CTX::instance()->mesh.changed = ENT_ALL;
@@ -3014,9 +3014,9 @@ void status_options_cb(Fl_Widget *w, void *data)
     std::vector<char*> tofree;
     std::vector<Fl_Menu_Item> menu;
     int selected = 0;
-    for(unsigned int i = 0; i < GModel::list.size(); i++){
+    for(std::size_t i = 0; i < GModel::list.size(); i++){
       char tmp[256];
-      sprintf(tmp, "Model [%d] <<%s>> ", i, GModel::list[i]->getName().c_str());
+      sprintf(tmp, "Model [%lu] <<%s>> ", i, GModel::list[i]->getName().c_str());
       char *str = strdup(tmp);
       Fl_Menu_Item menuItem = {str, 0, model_switch_cb, (void*)(intptr_t)i, FL_MENU_RADIO};
       if(GModel::list[i] == GModel::current()){
@@ -3031,7 +3031,7 @@ void status_options_cb(Fl_Widget *w, void *data)
     Fl_Menu_Item *m = (Fl_Menu_Item*)(&menu[0])->popup(Fl::event_x(), Fl::event_y(),
                                                        0, &menu[selected], 0);
     if(m) m->do_callback(0);
-    for(unsigned int i = 0; i < tofree.size(); i++) free(tofree[i]);
+    for(std::size_t i = 0; i < tofree.size(); i++) free(tofree[i]);
     drawContext::global()->draw();
   }
   else if(what == "?"){ // display options
@@ -3117,7 +3117,7 @@ void status_options_cb(Fl_Widget *w, void *data)
     };
     const int gen = 7, geo = 13, msh = 20, pos = 31, end = 53;
     if(opt_general_axes(0, GMSH_GET, 0)) menu[gen + 0].set(); else menu[gen + 0].clear();
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       if(opt_view_visible(i, GMSH_GET, 0) && opt_view_axes(i, GMSH_GET, 0))
         menu[gen + 0].set();
     if(opt_geometry_points(0, GMSH_GET, 0)) menu[geo + 1].set(); else menu[geo + 1].clear();
@@ -3140,7 +3140,7 @@ void status_options_cb(Fl_Widget *w, void *data)
       menu[pos - 1].flags = FL_MENU_DIVIDER;
       for(int i = pos; i <= end; i++) menu[i].show();
       menu[pos].clear();
-      for(unsigned int i = 0; i < PView::list.size(); i++){
+      for(std::size_t i = 0; i < PView::list.size(); i++){
         if(opt_view_visible(i, GMSH_GET, 0) && opt_view_show_element(i, GMSH_GET, 0)){
           menu[pos].set();
           break;
@@ -3158,8 +3158,8 @@ void status_options_cb(Fl_Widget *w, void *data)
   else if(what == "S"){ // mouse selection
     if(CTX::instance()->mouseSelection){
       opt_general_mouse_selection(0, GMSH_SET | GMSH_GUI, 0);
-      for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-        for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
+      for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
           FlGui::instance()->graph[i]->gl[j]->cursor
             (FL_CURSOR_DEFAULT, FL_BLACK, FL_WHITE);
     }
@@ -3184,7 +3184,7 @@ void status_play_manual(int time, int incr, bool redraw)
   file_watch_cb(0, 0);
 
   if(time) {
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(opt_view_visible(i, GMSH_GET, 0)){
         // skip empty steps
         int step = (int)opt_view_timestep(i, GMSH_GET, 0) + incr;
@@ -3250,14 +3250,14 @@ static void status_pause_cb(Fl_Widget *w, void *data)
 static void status_rewind_cb(Fl_Widget *w, void *data)
 {
   if(!CTX::instance()->post.animCycle) {
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       int step = PView::list[i]->getData()->getFirstNonEmptyTimeStep();
       opt_view_timestep(i, GMSH_SET | GMSH_GUI, step);
     }
   }
   else {
     view_in_cycle = 0;
-    for(unsigned int i = 0; i < PView::list.size(); i++)
+    for(std::size_t i = 0; i < PView::list.size(); i++)
       opt_view_visible(i, GMSH_SET | GMSH_GUI, !i);
   }
   drawContext::global()->draw();
@@ -3277,7 +3277,7 @@ static void remove_graphic_window_cb(Fl_Widget *w, void *data)
 {
   std::vector<graphicWindow*> graph2;
   graphicWindow *deleteMe = 0;
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++){
+  for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++){
     if(FlGui::instance()->graph[i]->getWindow() == w)
       deleteMe = FlGui::instance()->graph[i];
     else
@@ -3393,7 +3393,7 @@ public:
   {
     if(event == FL_PUSH){
       if(FlGui::available()){
-        for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+        for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
           FlGui::instance()->graph[i]->showHideMessages();
       }
       return 1;
@@ -3516,7 +3516,7 @@ graphicWindow::graphicWindow(bool main, int numTiles, bool detachedMenu)
     mode |= FL_DOUBLE;
     mode |= FL_STEREO;
   }
-  for(unsigned int i = 0; i < gl.size(); i++) gl[i]->mode(mode);
+  for(std::size_t i = 0; i < gl.size(); i++) gl[i]->mode(mode);
 
   if(main){
     _browser = new messageBrowser(twidth, mh + glheight, glwidth, mheight);
@@ -3680,7 +3680,7 @@ void graphicWindow::detachMenu()
   int w = _onelab->w();
   _tile->remove(_onelab);
   _browser->resize(0, _browser->y(), _browser->w() + w, _browser->h());
-  for(unsigned int i = 0; i < gl.size(); i++){
+  for(std::size_t i = 0; i < gl.size(); i++){
     if(gl[i]->x() == w){
       gl[i]->resize(0, gl[i]->y(), gl[i]->w() + w, gl[i]->h());
     }
@@ -3720,7 +3720,7 @@ void graphicWindow::attachMenu()
   int w = _onelab->w();
   if(_browser->w() - w < 0) w = _browser->w() / 2;
   _browser->resize(w, _browser->y(), _browser->w() - w, _browser->h());
-  for(unsigned int i = 0; i < gl.size(); i++){
+  for(std::size_t i = 0; i < gl.size(); i++){
     if(gl[i]->x() == 0){
       gl[i]->resize(w, gl[i]->y(), gl[i]->w() - w, gl[i]->h());
     }
@@ -3801,7 +3801,7 @@ bool graphicWindow::split(openglWindow *g, char how)
     // brutal :-)
     int mode = g->mode();
     openglWindow::setLastHandled(0);
-    for(unsigned int i = 0; i < gl.size(); i++){
+    for(std::size_t i = 0; i < gl.size(); i++){
       _tile->remove(gl[i]);
       delete gl[i];
     }
@@ -3849,7 +3849,7 @@ bool graphicWindow::split(openglWindow *g, char how)
 void graphicWindow::setStereo(bool st)
 {
   openglWindow::setLastHandled(0);
-  for(unsigned int i = 0; i < gl.size(); i++){
+  for(std::size_t i = 0; i < gl.size(); i++){
     if (st) {
       gl[i]->mode(FL_RGB | FL_DEPTH | FL_DOUBLE | FL_STEREO);
     }
@@ -3880,7 +3880,7 @@ void graphicWindow::checkAnimButtons()
     play = true;
   }
   else{
-    for(unsigned int i = 0; i < PView::list.size(); i++){
+    for(std::size_t i = 0; i < PView::list.size(); i++){
       if(PView::list[i]->getData()->getNumTimeSteps() > 1){
         play = true;
         break;
@@ -3912,7 +3912,7 @@ void graphicWindow::setMenuWidth(int w)
   if(!_browser) return;
   double dw = w - _onelab->w();
   if(!dw) return;
-  for(unsigned int i = 0; i < gl.size(); i++){
+  for(std::size_t i = 0; i < gl.size(); i++){
     if(gl[i]->x() == _onelab->x() + _onelab->w()){
       gl[i]->resize(gl[i]->x() + dw, gl[i]->y(), gl[i]->w() - dw, gl[i]->h());
     }
@@ -3955,7 +3955,7 @@ void graphicWindow::setMessageHeight(int h)
   if(!_browser) return;
   int dh = h - _browser->h();
   if(!dh) return;
-  for(unsigned int i = 0; i < gl.size(); i++){
+  for(std::size_t i = 0; i < gl.size(); i++){
     if(gl[i]->y() + gl[i]->h() == _browser->y()){
       gl[i]->resize(gl[i]->x(), gl[i]->y(), gl[i]->w(), gl[i]->h() - dh);
     }
@@ -4324,7 +4324,7 @@ void onelabGroup::_addGmshMenus()
   _tree->sortorder(FL_TREE_SORT_NONE);
 
   // add static geometry and mesh module items
-  for(unsigned int i = 0; i < sizeof(static_modules) / sizeof(static_modules[0]); i++)
+  for(std::size_t i = 0; i < sizeof(static_modules) / sizeof(static_modules[0]); i++)
     _addMenu(static_modules[i].label, static_modules[i].callback, static_modules[i].arg);
 
   // add dynamic solver module items
@@ -4334,7 +4334,7 @@ void onelabGroup::_addGmshMenus()
   }
 
   // add dynamic post-processing module items
-  for(unsigned int i = 0; i < PView::list.size(); i++) _addViewMenu(i);
+  for(std::size_t i = 0; i < PView::list.size(); i++) _addViewMenu(i);
 
   _tree->sortorder(FL_TREE_SORT_ASCENDING);
 
diff --git a/Fltk/helpWindow.cpp b/Fltk/helpWindow.cpp
index 23322f9c853dad6a399a560b9b27c7ab29e4db1d..d86bd365d32d625beba1e3e81a0035680ed4f8cf 100644
--- a/Fltk/helpWindow.cpp
+++ b/Fltk/helpWindow.cpp
@@ -267,7 +267,7 @@ void help_options_cb(Fl_Widget *w, void *data)
 
   int top = FlGui::instance()->help->browser->topline();
   FlGui::instance()->help->browser->clear();
-  for(unsigned int i = 0; i < s0.size(); i++) {
+  for(std::size_t i = 0; i < s0.size(); i++) {
     std::string::size_type sep = s0[i].rfind('\0');
     void *d = 0;
     if(sep != std::string::npos) {
@@ -372,7 +372,7 @@ helpWindow::helpWindow()
     {
       std::vector<std::pair<std::string, std::string> > s0 =
         GetShortcutsUsage();
-      for(unsigned int i = 0; i < s0.size(); i++)
+      for(std::size_t i = 0; i < s0.size(); i++)
         s +=
           "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second + "</td></tr>";
     }
@@ -382,7 +382,7 @@ helpWindow::helpWindow()
     s += "<table border=1>";
     {
       std::vector<std::pair<std::string, std::string> > s0 = GetMouseUsage();
-      for(unsigned int i = 0; i < s0.size(); i++)
+      for(std::size_t i = 0; i < s0.size(); i++)
         s +=
           "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second + "</td></tr>";
     }
@@ -395,7 +395,7 @@ helpWindow::helpWindow()
     s += "<table border=1>";
     {
       std::vector<std::pair<std::string, std::string> > s0 = GetUsage();
-      for(unsigned int i = 0; i < s0.size(); i++)
+      for(std::size_t i = 0; i < s0.size(); i++)
         if(s0[i].first.size() && s0[i].second.size())
           s += "<tr><td>" + s0[i].first + "</td><td>" + s0[i].second +
                "</td></tr>";
diff --git a/Fltk/inputRange.h b/Fltk/inputRange.h
index 603a6c2f62b894391569df25101c03e50a14a806..332d2d55719b01464ef5d61c49bcaac5bef2c424 100644
--- a/Fltk/inputRange.h
+++ b/Fltk/inputRange.h
@@ -35,7 +35,7 @@ private:
     tmp.precision(12);
     if(_choices.size()) {
       // construct range string using choices
-      for(unsigned int i = 0; i < _choices.size(); i++) {
+      for(std::size_t i = 0; i < _choices.size(); i++) {
         if(i) tmp << ", ";
         tmp << _choices[i];
       }
diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index 82e47c2870c154cb3b6e0df669614c92c88adec7..1622c79eef1aae8a217e00700158810d8dac70a4 100644
--- a/Fltk/onelabGroup.cpp
+++ b/Fltk/onelabGroup.cpp
@@ -312,7 +312,7 @@ static void onelab_choose_executable_cb(Fl_Widget *w, void *data)
     std::string gmshPath = SplitFileName(CTX::instance()->exeFileName)[0];
     if(gmshPath.size()) {
       std::string name = c->getName();
-      for(unsigned int i = 0; i < name.size(); i++) name[i] = tolower(name[i]);
+      for(std::size_t i = 0; i < name.size(); i++) name[i] = tolower(name[i]);
       std::string path1 = gmshPath + name;
       std::string path2 = gmshPath + "data/" + name;
 #if defined(WIN32)
@@ -371,7 +371,7 @@ static void setClosed(const std::string &path, std::vector<T> &ps,
                       const std::string &value)
 {
   onelab::server::instance()->get(ps);
-  for(unsigned int i = 0; i < ps.size(); i++) {
+  for(std::size_t i = 0; i < ps.size(); i++) {
     if(ps[i].getPath() == path) {
       ps[i].setAttribute("Closed", value);
       onelab::server::instance()->set(ps[i]);
@@ -407,7 +407,7 @@ static void setOpenedClosed(Fl_Tree_Item *item, int reason)
     FlGui::instance()->onelab->removeFromManuallyClosed(path);
     setClosed(path, numbers, "0");
     setClosed(path, strings, "0");
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       if(getViewPath(i) == path) PView::list[i]->getOptions()->closed = 0;
     }
     break;
@@ -415,7 +415,7 @@ static void setOpenedClosed(Fl_Tree_Item *item, int reason)
     FlGui::instance()->onelab->insertInManuallyClosed(path);
     setClosed(path, numbers, "1");
     setClosed(path, strings, "1");
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       if(getViewPath(i) == path) PView::list[i]->getOptions()->closed = 1;
     }
     break;
@@ -729,7 +729,7 @@ static bool serverAction(const std::string &action)
   else if(!action.compare(0, 5, "Reset")) { // reset some variables
     std::vector<std::string> what =
       onelab::parameter::split(action.substr(5), ',');
-    for(unsigned int i = 0; i < what.size(); i++) {
+    for(std::size_t i = 0; i < what.size(); i++) {
       std::string var = onelab::parameter::trim(what[i]);
       Msg::Debug("Clearing variable '%s'", var.c_str());
       onelab::server::instance()->clear(var);
@@ -849,7 +849,7 @@ Fl_Widget *onelabGroup::_addParameterWidget(onelab::number &p, int ww, int hh,
     std::vector<Fl_Menu_Item> menu;
     std::vector<double> choices = p.getChoices();
     std::map<double, std::string> labels(p.getValueLabels());
-    for(unsigned int i = 0; i < choices.size(); i++) {
+    for(std::size_t i = 0; i < choices.size(); i++) {
       char *str = strdup(labels[choices[i]].c_str());
       _treeStrings.push_back(str);
       Fl_Menu_Item menuItem = {str, 0, 0, 0, 0};
@@ -859,7 +859,7 @@ Fl_Widget *onelabGroup::_addParameterWidget(onelab::number &p, int ww, int hh,
     Fl_Menu_Item it = {0};
     menu.push_back(it);
     but->copy(&menu[0]);
-    for(unsigned int i = 0; i < choices.size(); i++) {
+    for(std::size_t i = 0; i < choices.size(); i++) {
       if(p.getValue() == choices[i]) {
         but->value(i);
         break;
@@ -1134,7 +1134,7 @@ Fl_Widget *onelabGroup::_addParameterWidget(onelab::string &p, int ww, int hh,
   if(multipleSelection.size())
     but->menubutton()->callback(multiple_selection_menu_cb, but);
   std::vector<Fl_Menu_Item> menu;
-  for(unsigned int j = 0; j < p.getChoices().size(); j++) {
+  for(std::size_t j = 0; j < p.getChoices().size(); j++) {
     char *str = strdup(p.getChoices()[j].c_str());
     _treeStrings.push_back(str);
     bool divider = ((p.getKind() == "file" || multipleSelection.size()) &&
@@ -1187,7 +1187,7 @@ static void view_group_cb(Fl_Widget *w, void *data)
   while(group.size() && group[0] == '/') group = group.substr(1);
   while(group.size() && group[group.size() - 1] == '/')
     group = group.substr(0, group.size() - 1);
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewOptions *opt = PView::list[i]->getOptions();
     if(opt->group.find(group) == 0)
       opt_view_visible(i, GMSH_SET | GMSH_GUI, !opt->visible);
@@ -1231,7 +1231,7 @@ static void highlight_physical_group_cb(Fl_Widget *w, void *data)
   m->getPhysicalGroups(dim, groups);
   std::vector<GEntity *> entities = groups[num];
 
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     entities[i]->setVisibility(1);
     if(!entities[i]->getSelection()) {
       entities[i]->setSelection(2);
@@ -1271,7 +1271,7 @@ void onelabGroup::rebuildTree(bool deleteWidgets)
 
   // hide all the widgets we have added in the tree to make sure they don't get
   // spurious events (until they are deleted)
-  for(unsigned int i = 0; i < _treeWidgets.size(); i++) _treeWidgets[i]->hide();
+  for(std::size_t i = 0; i < _treeWidgets.size(); i++) _treeWidgets[i]->hide();
 
   // we don't delete widgets everytime the tree is rebuilt to minimize potential
   // race conditions (e.g. during heavy user interaction with autoCheck, with
@@ -1290,7 +1290,7 @@ void onelabGroup::rebuildTree(bool deleteWidgets)
 
   std::vector<onelab::number> numbers;
   onelab::server::instance()->get(numbers);
-  for(unsigned int i = 0; i < numbers.size(); i++) {
+  for(std::size_t i = 0; i < numbers.size(); i++) {
     if(numbers[i].getAttribute("Closed") == "1")
       closed.insert(numbers[i].getPath());
     if(!numbers[i].getVisible() &&
@@ -1301,7 +1301,7 @@ void onelabGroup::rebuildTree(bool deleteWidgets)
 
   std::vector<onelab::string> strings;
   onelab::server::instance()->get(strings);
-  for(unsigned int i = 0; i < strings.size(); i++) {
+  for(std::size_t i = 0; i < strings.size(); i++) {
     if(strings[i].getAttribute("Closed") == "1")
       closed.insert(strings[i].getPath());
     if(!strings[i].getVisible() &&
@@ -1371,9 +1371,9 @@ void onelabGroup::rebuildTree(bool deleteWidgets)
   if(deleteWidgets) {
     // this needs to be performed after FlGui::check()
     Msg::Debug("Deleting onelabGroup widgets (%d)", (int)_treeWidgets.size());
-    for(unsigned int i = 0; i < delWidgets.size(); i++)
+    for(std::size_t i = 0; i < delWidgets.size(); i++)
       Fl::delete_widget(delWidgets[i]);
-    for(unsigned int i = 0; i < delStrings.size(); i++) free(delStrings[i]);
+    for(std::size_t i = 0; i < delStrings.size(); i++) free(delStrings[i]);
   }
 
 #if 0 // test
@@ -1419,7 +1419,7 @@ void onelabGroup::setButtonVisibility()
   std::vector<onelab::number> numbers;
   onelab::server::instance()->get(numbers);
   bool visible = false;
-  for(unsigned int i = 0; i < numbers.size(); i++) {
+  for(std::size_t i = 0; i < numbers.size(); i++) {
     if(numbers[i].getVisible()) {
       visible = true;
       break;
@@ -1567,7 +1567,7 @@ void onelabGroup::rebuildSolverList()
       hosts.push_back(opt_solver_remote_login(i, GMSH_GET, ""));
     }
   }
-  for(unsigned int i = 0; i < NUM_SOLVERS; i++) {
+  for(std::size_t i = 0; i < NUM_SOLVERS; i++) {
     if(i < names.size()) {
       onelab::server::citer it =
         onelab::server::instance()->findClient(names[i]);
@@ -1615,7 +1615,7 @@ void onelabGroup::addSolver(const std::string &name,
   for(onelab::server::citer it = onelab::server::instance()->firstClient();
       it != onelab::server::instance()->lastClient(); it++)
     if((*it)->isNetworkClient()) networkClients.push_back(*it);
-  for(unsigned int i = 0; i < networkClients.size(); i++) {
+  for(std::size_t i = 0; i < networkClients.size(); i++) {
     delete networkClients[i];
   }
 
diff --git a/Fltk/optionWindow.cpp b/Fltk/optionWindow.cpp
index cc9049b2ff8e715c574ccd115bca793b9101ea19..8bb286af40dfd17d04dcb47086778272c7a4b9a9 100644
--- a/Fltk/optionWindow.cpp
+++ b/Fltk/optionWindow.cpp
@@ -253,7 +253,7 @@ void general_options_rotation_center_select_cb(Fl_Widget *w, void *data)
 void general_options_axes_fit_cb(Fl_Widget *w, void *data)
 {
   SBoundingBox3d bbox = GModel::current()->bounds(true);
-  for(unsigned int i = 0; i < PView::list.size(); i++){
+  for(std::size_t i = 0; i < PView::list.size(); i++){
     if(PView::list[i]->getOptions()->visible &&
        !PView::list[i]->getData()->getBoundingBox().empty())
       bbox += PView::list[i]->getData()->getBoundingBox();
@@ -429,7 +429,7 @@ void general_options_ok_cb(Fl_Widget *w, void *data)
   opt_general_camera_aperture(0, GMSH_SET, o->general.value[31]->value());
   if(opt_general_stereo_mode(0, GMSH_GET, 0) != o->general.butt[17]->value()) {
     opt_general_stereo_mode(0, GMSH_SET, o->general.butt[17]->value());
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++)
       FlGui::instance()->graph[i]->setStereo((bool)CTX::instance()->stereo);
   }
 
@@ -3585,9 +3585,9 @@ void optionWindow::resetBrowser()
   browser->add("Mesh");
   browser->add("Solver");
   browser->add("Post-pro");
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     char str[128];
-    sprintf(str, "View [%d]", i);
+    sprintf(str, "View [%lu]", i);
     browser->add(str);
   }
   int num = (select <= browser->size()) ? select : browser->size();
@@ -3601,8 +3601,8 @@ void optionWindow::resetExternalViewList()
   view.choice[11]->clear();
   view.choice[10]->add("Self");
   view.choice[11]->add("Self");
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
-    sprintf(str, "View [%d]", i);
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
+    sprintf(str, "View [%lu]", i);
     view.choice[10]->add(str, 0, NULL);
     view.choice[11]->add(str, 0, NULL);
   }
diff --git a/Fltk/statisticsWindow.cpp b/Fltk/statisticsWindow.cpp
index 6fe85a86e3cccde78f8b10aefaf431785afdea8b..a676c3cd6479d435e23b55796c446f3096b802d9 100644
--- a/Fltk/statisticsWindow.cpp
+++ b/Fltk/statisticsWindow.cpp
@@ -68,9 +68,9 @@ static void statistics_histogram_cb(Fl_Widget *w, void *data)
     std::vector<GEntity *> entities_;
     GModel::current()->getEntities(entities_);
     std::map<int, std::vector<double> > d;
-    for(unsigned int i = 0; i < entities_.size(); i++) {
+    for(std::size_t i = 0; i < entities_.size(); i++) {
       if(entities_[i]->dim() < 2) continue;
-      for(unsigned int j = 0; j < entities_[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities_[i]->getNumMeshElements(); j++) {
         MElement *e = entities_[i]->getMeshElement(j);
         if(qmh == QMH_SICN_3D)
           d[e->getNum()].push_back(e->minSICNShapeMeasure());
diff --git a/Fltk/viewButton.cpp b/Fltk/viewButton.cpp
index 468e09fd216f6f2a9ebe0c2dc47221dfdbffa5c8..ae91c75c89cf6e7a688fb4217bb9ebde9417c9d6 100644
--- a/Fltk/viewButton.cpp
+++ b/Fltk/viewButton.cpp
@@ -33,7 +33,7 @@ static void view_toggle_cb(Fl_Widget *w, void *data)
   viewButton *but = FlGui::instance()->onelab->getViewButton(num);
   if(but) {
     if(Fl::event_state(FL_SHIFT)) {
-      for(unsigned int i = 0; i < PView::list.size(); i++) {
+      for(std::size_t i = 0; i < PView::list.size(); i++) {
         if((int)i != num)
           opt_view_visible(i, GMSH_SET | GMSH_GUI, 0);
         else
@@ -86,13 +86,13 @@ static void view_reload_cb(Fl_Widget *w, void *data)
 
 static void view_reload_all_cb(Fl_Widget *w, void *data)
 {
-  for(unsigned int i = 0; i < PView::list.size(); i++) view_reload(i);
+  for(std::size_t i = 0; i < PView::list.size(); i++) view_reload(i);
   drawContext::global()->draw();
 }
 
 static void view_reload_visible_cb(Fl_Widget *w, void *data)
 {
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     if(opt_view_visible(i, GMSH_GET, 0)) view_reload(i);
   drawContext::global()->draw();
 }
@@ -249,15 +249,12 @@ static void view_all_visible_cb(Fl_Widget *w, void *data)
   int mode = (intptr_t)data;
   std::string name;
   if(mode >= 0) name = PView::list[mode]->getData()->getName();
-  for(unsigned int i = 0; i < PView::list.size(); i++)
+  for(std::size_t i = 0; i < PView::list.size(); i++)
     opt_view_visible(i, GMSH_SET | GMSH_GUI,
-                     (mode == -1) ?
-                       1 :
-                       (mode == -2) ?
-                       0 :
-                       (mode == -3) ?
-                       !opt_view_visible(i, GMSH_GET, 0) :
-                       (name == PView::list[i]->getData()->getName()) ? 1 : 0);
+                     (mode == -1) ? 1 :
+                     (mode == -2) ? 0 :
+                     (mode == -3) ? !opt_view_visible(i, GMSH_GET, 0) :
+                     (name == PView::list[i]->getData()->getName()) ? 1 : 0);
   drawContext::global()->draw();
 }
 
diff --git a/Fltk/visibilityWindow.cpp b/Fltk/visibilityWindow.cpp
index 492ef339452fc4220f8e6dccdf6f5926bf7b17c4..0718c20f7be6c6bd8661a53ef9ba47a23062f755 100644
--- a/Fltk/visibilityWindow.cpp
+++ b/Fltk/visibilityWindow.cpp
@@ -78,7 +78,7 @@ public:
 
 static void setVisibilityOnOtherModels(GEntity *ge, char val, bool recursive)
 {
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     GModel *m2 = GModel::list[i];
     if(m2 != ge->model()) {
       GEntity *ge2 = 0;
@@ -151,7 +151,7 @@ public:
   void setVisibility(char val, bool recursive = false, bool allmodels = false)
   {
     _visible = val;
-    for(unsigned int i = 0; i < _list.size(); i++) {
+    for(std::size_t i = 0; i < _list.size(); i++) {
       _list[i]->setVisibility(val, recursive);
       if(allmodels) setVisibilityOnOtherModels(_list[i], val, recursive);
     }
@@ -172,13 +172,13 @@ public:
   void setVisibility(char val, bool recursive = false, bool allmodels = false)
   {
     _visible = val;
-    for(unsigned int i = 0; i < GModel::list.size(); i++) {
+    for(std::size_t i = 0; i < GModel::list.size(); i++) {
       GModel *m = GModel::list[i];
       if(allmodels || m == GModel::current()) {
         std::vector<GEntity *> entities;
         m->getEntities(entities);
-        for(unsigned int j = 0; j < entities.size(); j++)
-          for(unsigned int k = 0; k < entities[j]->getNumMeshElements(); k++)
+        for(std::size_t j = 0; j < entities.size(); j++)
+          for(std::size_t k = 0; k < entities[j]->getNumMeshElements(); k++)
             if(entities[j]->getMeshElement(k)->getPartition() == _tag)
               entities[j]->getMeshElement(k)->setVisibility(val);
       }
@@ -232,15 +232,15 @@ public:
           gmsh_yysymbols.begin();
         it != gmsh_yysymbols.end(); ++it)
       if(it->first.size())
-        for(unsigned int i = 0; i < it->second.value.size(); i++)
+        for(std::size_t i = 0; i < it->second.value.size(); i++)
           oldLabels[(int)it->second.value[i]] =
             std::string("(") + it->first + ")";
 #endif
-    for(unsigned int i = 0; i < _entities.size(); i++) delete _entities[i];
+    for(std::size_t i = 0; i < _entities.size(); i++) delete _entities[i];
     _entities.clear();
     GModel *m = GModel::current();
     if(type == Models) {
-      for(unsigned int i = 0; i < GModel::list.size(); i++) {
+      for(std::size_t i = 0; i < GModel::list.size(); i++) {
         std::string name = GModel::list[i]->getName();
         if(GModel::list[i] == GModel::current()) name += " (Current Model)";
         _entities.push_back(new VisModel(GModel::list[i], i, name));
@@ -249,7 +249,7 @@ public:
     else if(type == ElementaryEntities) {
       std::vector<GEntity *> entities;
       m->getEntities(entities);
-      for(unsigned int i = 0; i < entities.size(); i++) {
+      for(std::size_t i = 0; i < entities.size(); i++) {
         GEntity *ge = entities[i];
         std::string name = m->getElementaryName(ge->dim(), ge->tag());
         if(name.empty()) name = oldLabels[ge->tag()];
@@ -270,7 +270,7 @@ public:
       }
     }
     else if(type == MeshPartitions) {
-      for(unsigned int part = 0; part < m->getNumPartitions(); part++)
+      for(std::size_t part = 0; part < m->getNumPartitions(); part++)
         _entities.push_back(new VisPartition(part + 1));
     }
     std::sort(_entities.begin(), _entities.end(), VisLessThan());
@@ -291,17 +291,17 @@ public:
   void setAllInvisible(VisibilityType type, bool allmodels = false)
   {
     if(type == Models) {
-      for(unsigned int i = 0; i < GModel::list.size(); i++)
+      for(std::size_t i = 0; i < GModel::list.size(); i++)
         GModel::list[i]->setVisibility(0);
     }
     else if(type == ElementaryEntities || type == PhysicalEntities) {
       // elementary or physical mode: set all entities in the model invisible
-      for(unsigned int i = 0; i < GModel::list.size(); i++) {
+      for(std::size_t i = 0; i < GModel::list.size(); i++) {
         GModel *m = GModel::list[i];
         if(allmodels || m == GModel::current()) {
           std::vector<GEntity *> entities;
           m->getEntities(entities);
-          for(unsigned int j = 0; j < entities.size(); j++)
+          for(std::size_t j = 0; j < entities.size(); j++)
             entities[j]->setVisibility(0);
         }
       }
@@ -551,28 +551,28 @@ static void _add_physical_group(int dim, int num, std::vector<GEntity *> &ge,
     group << "Physical Volume " << num << name << "/";
     n = tree->add(group.str().c_str());
     if(n) n->close();
-    for(unsigned int i = 0; i < ge.size(); i++)
+    for(std::size_t i = 0; i < ge.size(); i++)
       _add_region((GRegion *)ge[i], tree, group.str());
     break;
   case 2:
     group << "Physical Surface " << num << name << "/";
     n = tree->add(group.str().c_str());
     if(n) n->close();
-    for(unsigned int i = 0; i < ge.size(); i++)
+    for(std::size_t i = 0; i < ge.size(); i++)
       _add_face((GFace *)ge[i], tree, group.str());
     break;
   case 1:
     group << "Physical Curve " << num << name << "/";
     n = tree->add(group.str().c_str());
     if(n) n->close();
-    for(unsigned int i = 0; i < ge.size(); i++)
+    for(std::size_t i = 0; i < ge.size(); i++)
       _add_edge((GEdge *)ge[i], tree, group.str());
     break;
   case 0:
     group << "Physical Point " << num << name << "/";
     n = tree->add(group.str().c_str());
     if(n) n->close();
-    for(unsigned int i = 0; i < ge.size(); i++)
+    for(std::size_t i = 0; i < ge.size(); i++)
       _add_vertex((GVertex *)ge[i], tree, group.str());
     break;
   default: break;
@@ -583,7 +583,7 @@ static void _rebuild_tree_browser(bool force)
 {
   if(!force) {
     int numEnt = 0;
-    for(unsigned int i = 0; i < GModel::list.size(); i++) {
+    for(std::size_t i = 0; i < GModel::list.size(); i++) {
       numEnt +=
         GModel::list[i]->getNumRegions() + GModel::list[i]->getNumFaces() +
         GModel::list[i]->getNumEdges() + GModel::list[i]->getNumVertices();
@@ -599,7 +599,7 @@ static void _rebuild_tree_browser(bool force)
   FlGui::instance()->visibility->tree->show();
   FlGui::instance()->visibility->tree->clear();
 
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     GModel *m = GModel::list[i];
     std::ostringstream model;
     model << "Model [" << i << "] <<" << m->getName() << ">>";
@@ -637,7 +637,7 @@ static void _rebuild_tree_browser(bool force)
           gmsh_yysymbols.begin();
         it != gmsh_yysymbols.end(); ++it)
       if(it->first.size())
-        for(unsigned int i = 0; i < it->second.value.size(); i++)
+        for(std::size_t i = 0; i < it->second.value.size(); i++)
           oldLabels[(int)it->second.value[i]] =
             std::string("(") + it->first + ")";
 #endif
@@ -721,7 +721,7 @@ static void visibility_tree_apply_cb(Fl_Widget *w, void *data)
     // set all entities as invisible
     std::vector<GEntity *> entities;
     m->getEntities(entities);
-    for(unsigned int j = 0; j < entities.size(); j++)
+    for(std::size_t j = 0; j < entities.size(); j++)
       entities[j]->setVisibility(0);
     // set visibility flag according to tree selection
     _recur_set_visible(n);
@@ -812,7 +812,7 @@ static void visibility_save_cb(Fl_Widget *w, void *data)
     if(state[i][mode].size()) {
       str += labels[i];
       str += "{";
-      for(unsigned int j = 0; j < state[i][mode].size(); j++) {
+      for(std::size_t j = 0; j < state[i][mode].size(); j++) {
         if(j) str += ",";
         sprintf(tmp, "%d", state[i][mode][j]);
         str += tmp;
@@ -830,7 +830,7 @@ static void _set_visibility_by_number(int what, int num, char val,
 {
   bool all = (num < 0) ? true : false;
 
-  for(unsigned int mod = 0; mod < GModel::list.size(); mod++) {
+  for(std::size_t mod = 0; mod < GModel::list.size(); mod++) {
     GModel *m = GModel::list[mod];
     if(allmodels || m == GModel::current()) {
       std::vector<GEntity *> entities;
@@ -838,16 +838,16 @@ static void _set_visibility_by_number(int what, int num, char val,
 
       switch(what) {
       case 0: // nodes
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int 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(all || v->getNum() == num) v->setVisibility(val);
           }
         }
         break;
       case 1: // elements
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             if(all || e->getNum() == num) e->setVisibility(val);
           }
@@ -871,25 +871,25 @@ static void _set_visibility_by_number(int what, int num, char val,
         break;
       case 6: // physical point
         for(GModel::viter it = m->firstVertex(); it != m->lastVertex(); it++)
-          for(unsigned int i = 0; i < (*it)->physicals.size(); i++)
+          for(std::size_t i = 0; i < (*it)->physicals.size(); i++)
             if(all || std::abs((*it)->physicals[i]) == num)
               (*it)->setVisibility(val, recursive);
         break;
       case 7: // physical line
         for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); it++)
-          for(unsigned int i = 0; i < (*it)->physicals.size(); i++)
+          for(std::size_t i = 0; i < (*it)->physicals.size(); i++)
             if(all || std::abs((*it)->physicals[i]) == num)
               (*it)->setVisibility(val, recursive);
         break;
       case 8: // physical surface
         for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++)
-          for(unsigned int i = 0; i < (*it)->physicals.size(); i++)
+          for(std::size_t i = 0; i < (*it)->physicals.size(); i++)
             if(all || std::abs((*it)->physicals[i]) == num)
               (*it)->setVisibility(val, recursive);
         break;
       case 9: // physical volume
         for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); it++)
-          for(unsigned int i = 0; i < (*it)->physicals.size(); i++)
+          for(std::size_t i = 0; i < (*it)->physicals.size(); i++)
             if(all || std::abs((*it)->physicals[i]) == num)
               (*it)->setVisibility(val, recursive);
         break;
@@ -921,39 +921,39 @@ static void _apply_visibility(char mode, bool physical,
   if(mode == 2) mode = 1;
 
   if(CTX::instance()->pickElements) {
-    for(unsigned int i = 0; i < elements.size(); i++)
+    for(std::size_t i = 0; i < elements.size(); i++)
       elements[i]->setVisibility(mode);
   }
   else {
-    for(unsigned int i = 0; i < vertices.size(); i++) {
+    for(std::size_t i = 0; i < vertices.size(); i++) {
       if(!physical)
         vertices[i]->setVisibility(mode, recursive);
       else
-        for(unsigned int j = 0; j < vertices[i]->physicals.size(); j++)
+        for(std::size_t j = 0; j < vertices[i]->physicals.size(); j++)
           _set_visibility_by_number(6, vertices[i]->physicals[j], mode,
                                     recursive, allmodels);
     }
-    for(unsigned int i = 0; i < edges.size(); i++) {
+    for(std::size_t i = 0; i < edges.size(); i++) {
       if(!physical)
         edges[i]->setVisibility(mode, recursive);
       else
-        for(unsigned int j = 0; j < edges[i]->physicals.size(); j++)
+        for(std::size_t j = 0; j < edges[i]->physicals.size(); j++)
           _set_visibility_by_number(7, edges[i]->physicals[j], mode, recursive,
                                     allmodels);
     }
-    for(unsigned int i = 0; i < faces.size(); i++) {
+    for(std::size_t i = 0; i < faces.size(); i++) {
       if(!physical)
         faces[i]->setVisibility(mode, recursive);
       else
-        for(unsigned int j = 0; j < faces[i]->physicals.size(); j++)
+        for(std::size_t j = 0; j < faces[i]->physicals.size(); j++)
           _set_visibility_by_number(8, faces[i]->physicals[j], mode, recursive,
                                     allmodels);
     }
-    for(unsigned int i = 0; i < regions.size(); i++) {
+    for(std::size_t i = 0; i < regions.size(); i++) {
       if(!physical)
         regions[i]->setVisibility(mode, recursive);
       else
-        for(unsigned int j = 0; j < regions[i]->physicals.size(); j++)
+        for(std::size_t j = 0; j < regions[i]->physicals.size(); j++)
           _set_visibility_by_number(9, regions[i]->physicals[j], mode,
                                     recursive, allmodels);
     }
@@ -1120,8 +1120,7 @@ static void visibility_per_window_cb(Fl_Widget *w, void *data)
   if(what == "item") {
     drawContext *ctx =
       FlGui::instance()->getCurrentOpenglWindow()->getDrawContext();
-    for(unsigned int i = 0;
-        i < (unsigned int)FlGui::instance()->visibility->per_window->size();
+    for(std::size_t i = 0; i < FlGui::instance()->visibility->per_window->size();
         i++) {
       if(i < GModel::list.size()) {
         GModel *m = GModel::list[i];
@@ -1140,8 +1139,8 @@ static void visibility_per_window_cb(Fl_Widget *w, void *data)
     }
   }
   else if(what == "reset_all") {
-    for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++) {
-      for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++) {
+    for(std::size_t i = 0; i < FlGui::instance()->graph.size(); i++) {
+      for(std::size_t j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++) {
         drawContext *ctx = FlGui::instance()->graph[i]->gl[j]->getDrawContext();
         ctx->showAll();
       }
@@ -1513,7 +1512,7 @@ void visibilityWindow::updatePerWindow(bool force)
   per_window->clear();
   int line = 1;
 
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     GModel *m = GModel::list[i];
     std::ostringstream sstream;
     sstream << "Model [" << i << "] <<" << m->getName() << ">>";
@@ -1522,7 +1521,7 @@ void visibilityWindow::updatePerWindow(bool force)
     line++;
   }
 
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PView *v = PView::list[i];
     std::ostringstream sstream;
     sstream << "View [" << i << "] <<" << v->getData()->getName() << ">>";
diff --git a/Geo/CGNSUtils.cpp b/Geo/CGNSUtils.cpp
index baa3f6906efa0eb687f69526e2747dd18e5afd84..9ce4c0c395ff25ef8e324478e5ebe32dcbde1587 100644
--- a/Geo/CGNSUtils.cpp
+++ b/Geo/CGNSUtils.cpp
@@ -1179,9 +1179,9 @@ int MZoneBoundary<DIM>::interiorBoundaryVertices(const int newZoneIndex,
       // are all unique.
       const typename MZone<DIM>::BoFaceMap::const_iterator *zFace =
         &zoneVertData.faces[0];
-      for(int nZFace = zoneVertData.faces.size(); nZFace--;) {
+      for(unsigned nZFace = zoneVertData.faces.size(); nZFace--;) {
         bool foundMatch = false;
-        for(unsigned int iGFace = 0; iGFace != nGFace; ++iGFace) {
+        for(unsigned iGFace = 0; iGFace != nGFace; ++iGFace) {
           // NBN: face is now a pointer, so need to de-reference
           // if((*zFace)->first ==  globalVertData.faces[iGFace].face )
           if(globalVertData.faces[iGFace].face) {
diff --git a/Geo/CGNSUtils.h b/Geo/CGNSUtils.h
index b57962ba8e6a9c931937d7122fbc16fadc4a68e2..88ec59e3646b4df968afa2c6fe209a9e20da2d6d 100644
--- a/Geo/CGNSUtils.h
+++ b/Geo/CGNSUtils.h
@@ -1091,8 +1091,8 @@ public:
         itBoV != itEnd; ++itBoV) {
       // ... clear the faces
       GlobalVertexData<FaceT> &ref = itBoV->second;
-      size_t nf = ref.faces.size();
-      for(unsigned int i = 0; i < nf; ++i) {
+      std::size_t nf = ref.faces.size();
+      for(std::size_t i = 0; i < nf; ++i) {
         ++icount;
         FaceT *p = ref.faces[i].face;
         if(p) {
diff --git a/Geo/Cell.cpp b/Geo/Cell.cpp
index c24c0ca21e3c7eb1b285e9e348dd302daf52a677..829c94dd344c0fcb2dd37cf421daaf7f86b09ecd 100644
--- a/Geo/Cell.cpp
+++ b/Geo/Cell.cpp
@@ -35,7 +35,7 @@ bool equalVertices(const std::vector<MVertex *> &v1,
                    const std::vector<MVertex *> &v2)
 {
   if(v1.size() != v2.size()) return false;
-  for(unsigned int i = 0; i < v1.size(); i++)
+  for(std::size_t i = 0; i < v1.size(); i++)
     if(v1[i]->getNum() != v2[i]->getNum()) return false;
   return true;
 }
@@ -101,7 +101,7 @@ bool Cell::_sortVertexIndices()
   std::map<MVertex *, int, MVertexLessThanNum> si;
 
   bool noinsert = false;
-  for(unsigned int i = 0; i < _v.size(); i++)
+  for(std::size_t i = 0; i < _v.size(); i++)
     noinsert = (!si.insert(std::make_pair(_v[i], i)).second || noinsert);
 
   if(noinsert == true) {
@@ -486,7 +486,7 @@ int Cell::getTypeMSH() const
 bool Cell::hasVertex(int vertex) const
 {
   std::vector<int> v;
-  for(unsigned int i = 0; i < _v.size(); i++) {
+  for(std::size_t i = 0; i < _v.size(); i++) {
     v.push_back(_v[(int)_si[i]]->getNum());
   }
   std::vector<int>::const_iterator it = std::find(v.begin(), v.end(), vertex);
@@ -533,13 +533,13 @@ void Cell::restoreCellBoundary()
     it->second.reset();
     if(it->second.get() == 0) toRemove.push_back(it->first);
   }
-  for(unsigned int i = 0; i < toRemove.size(); i++) _cbd.erase(toRemove[i]);
+  for(std::size_t i = 0; i < toRemove.size(); i++) _cbd.erase(toRemove[i]);
   toRemove.clear();
   for(biter it = firstBoundary(true); it != lastBoundary(); it++) {
     it->second.reset();
     if(it->second.get() == 0) toRemove.push_back(it->first);
   }
-  for(unsigned int i = 0; i < toRemove.size(); i++) _bd.erase(toRemove[i]);
+  for(std::size_t i = 0; i < toRemove.size(); i++) _bd.erase(toRemove[i]);
 }
 
 void Cell::addBoundaryCell(int orientation, Cell *cell, bool other)
@@ -796,7 +796,7 @@ CombinedCell::CombinedCell(std::vector<Cell *> &cells)
   _immune = false;
 
   // cells
-  for(unsigned int i = 0; i < cells.size(); i++) {
+  for(std::size_t i = 0; i < cells.size(); i++) {
     Cell *c = cells.at(i);
     if(c->getImmune()) _immune = true;
     _cells[c] = 1;
diff --git a/Geo/CellComplex.cpp b/Geo/CellComplex.cpp
index 121d651a5d4bf38c344b8803b415894805feca70..24f7962fcb89811048a9adb281cda18bb9a496ef 100644
--- a/Geo/CellComplex.cpp
+++ b/Geo/CellComplex.cpp
@@ -75,7 +75,7 @@ bool CellComplex::_insertCells(std::vector<MElement *> &elements, int domain)
 
   double t1 = Cpu();
 
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *element = elements.at(i);
     int dim = element->getDim();
     int type = element->getType();
@@ -162,7 +162,7 @@ bool CellComplex::_removeCells(std::vector<MElement *> &elements, int domain)
              (int)elements.size());
   std::set<Cell *, Less_Cell> removed[4];
 
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *element = elements.at(i);
     int type = element->getType();
     if(type == TYPE_PYR || type == TYPE_PRI || type == TYPE_POLYG ||
@@ -212,7 +212,7 @@ bool CellComplex::_removeCells(std::vector<MElement *> &elements, int domain)
 
 bool CellComplex::_immunizeCells(std::vector<MElement *> &elements)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *element = elements.at(i);
     Cell *cell = new Cell(element, 0);
     int dim = cell->getDim();
@@ -233,7 +233,7 @@ CellComplex::~CellComplex()
     }
   }
 
-  for(unsigned int i = 0; i < _removedcells.size(); i++) {
+  for(std::size_t i = 0; i < _removedcells.size(); i++) {
     delete _removedcells.at(i);
     _deleteCount++;
   }
@@ -428,7 +428,7 @@ int CellComplex::coreduction(int dim, int omit,
 int CellComplex::getSize(int dim, bool orig)
 {
   if(dim == -1) {
-    unsigned int size = 0;
+    std::size_t size = 0;
     if(!orig)
       for(int i = 0; i < 4; i++) size += _cells[i].size();
     else
@@ -517,7 +517,7 @@ int CellComplex::reduceComplex(int combine, bool omit, bool homseq)
       newCells.push_back(_omitCell(cell, false));
     }
 
-    for(unsigned int i = 0; i < newCells.size(); i++) {
+    for(std::size_t i = 0; i < newCells.size(); i++) {
       insertCell(newCells.at(i));
     }
   }
@@ -562,7 +562,7 @@ void CellComplex::removeSubdomain()
       if(cell->inSubdomain()) toRemove.push_back(cell);
     }
   }
-  for(unsigned int i = 0; i < toRemove.size(); i++) removeCell(toRemove[i]);
+  for(std::size_t i = 0; i < toRemove.size(); i++) removeCell(toRemove[i]);
   _reduced = true;
 }
 
@@ -573,7 +573,7 @@ void CellComplex::removeCells(int dim)
   for(citer cit = firstCell(dim); cit != lastCell(dim); ++cit) {
     toRemove.push_back(*cit);
   }
-  for(unsigned int i = 0; i < toRemove.size(); i++) removeCell(toRemove[i]);
+  for(std::size_t i = 0; i < toRemove.size(); i++) removeCell(toRemove[i]);
   _reduced = true;
 }
 
@@ -619,7 +619,7 @@ int CellComplex::coreduceComplex(int combine, bool omit, int heuristic)
 
       newCells.push_back(_omitCell(cell, true));
     }
-    for(unsigned int i = 0; i < newCells.size(); i++) {
+    for(std::size_t i = 0; i < newCells.size(); i++) {
       insertCell(newCells.at(i));
     }
   }
@@ -934,7 +934,7 @@ Cell *CellComplex::getACell(int dim, int domain)
 bool CellComplex::restoreComplex()
 {
   if(_saveorig) {
-    for(unsigned int i = 0; i < _removedcells.size(); i++) {
+    for(std::size_t i = 0; i < _removedcells.size(); i++) {
       Cell *cell = _removedcells.at(i);
       if(cell->isCombined()) {
         delete cell;
diff --git a/Geo/Chain.cpp b/Geo/Chain.cpp
index dd04227763931ad07982c35ae1284a0c69d87de6..0fc64eee9d8ba0040444578d59aae7074e071bde 100644
--- a/Geo/Chain.cpp
+++ b/Geo/Chain.cpp
@@ -41,7 +41,7 @@ inline void ElemChain::_sortVertexIndices()
 {
   std::map<MVertex *, int, MVertexLessThanNum> si;
 
-  for(unsigned int i = 0; i < _v.size(); i++) si[_v[i]] = i;
+  for(std::size_t i = 0; i < _v.size(); i++) si[_v[i]] = i;
 
   std::map<MVertex *, int, MVertexLessThanNum>::iterator it;
   for(it = si.begin(); it != si.end(); it++) _si.push_back(it->second);
@@ -54,14 +54,14 @@ void findEntitiesInPhysicalGroups(GModel *m,
   std::map<int, std::vector<GEntity *> > groups[4];
   m->getPhysicalGroups(groups);
   std::map<int, std::vector<GEntity *> >::iterator it;
-  for(unsigned int i = 0; i < physicalGroups.size(); i++) {
+  for(std::size_t i = 0; i < physicalGroups.size(); i++) {
     bool found = false;
     for(int j = 0; j < 4; j++) {
       it = groups[j].find(physicalGroups.at(i));
       if(it != groups[j].end()) {
         found = true;
         std::vector<GEntity *> physicalGroup = it->second;
-        for(unsigned int k = 0; k < physicalGroup.size(); k++) {
+        for(std::size_t k = 0; k < physicalGroup.size(); k++) {
           entities.push_back(physicalGroup.at(k));
         }
       }
@@ -75,7 +75,7 @@ void findEntitiesInPhysicalGroups(GModel *m,
 bool ElemChain::_equalVertices(const std::vector<MVertex *> &v2) const
 {
   if(_v.size() != v2.size()) return false;
-  for(unsigned int i = 0; i < _v.size(); i++)
+  for(std::size_t i = 0; i < _v.size(); i++)
     if(_v[i]->getNum() != v2[i]->getNum()) return false;
   return true;
 }
@@ -255,12 +255,12 @@ ElemChain ElemChain::getBoundaryElemChain(int i) const
 bool ElemChain::inEntity(GEntity *e) const
 {
   if(_vertexCache[e].empty()) {
-    for(unsigned int i = 0; i < e->getNumMeshElements(); i++)
+    for(std::size_t i = 0; i < e->getNumMeshElements(); i++)
       for(std::size_t j = 0; j < e->getMeshElement(i)->getNumVertices(); j++)
         _vertexCache[e].insert(e->getMeshElement(i)->getVertex(j));
   }
 
-  for(int i = 0; i < this->getNumVertices(); i++)
+  for(std::size_t i = 0; i < this->getNumVertices(); i++)
     if(!_vertexCache[e].count(this->getMeshVertex(i))) return false;
   return true;
 }
diff --git a/Geo/Chain.h b/Geo/Chain.h
index 291d8bdc709acd7ff6dc95d1623c66bbe04aacf9..c951cf9b05b257c24bcd19a819cc794cc763a37f 100644
--- a/Geo/Chain.h
+++ b/Geo/Chain.h
@@ -254,10 +254,10 @@ template <class C> Chain<C>::Chain(GModel *m, int physicalGroup)
   std::vector<GEntity *> entities;
   findEntitiesInPhysicalGroups(m, groups, entities);
 
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *e = entities.at(i);
     _dim = e->dim();
-    for(unsigned int j = 0; j < e->getNumMeshElements(); j++) {
+    for(std::size_t j = 0; j < e->getNumMeshElements(); j++) {
       this->addMeshElement(e->getMeshElement(j));
     }
     this->setName(m->getPhysicalName(this->getDim(), physicalGroup));
@@ -383,7 +383,7 @@ Chain<C> Chain<C>::_getTraceOrProject(const std::vector<GEntity *> &entities,
   Chain<C> result;
   for(cecit it = _elemChains.begin(); it != _elemChains.end(); it++) {
     bool inDomain = false;
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(it->first.inEntity(entities.at(i))) {
         inDomain = true;
         break;
diff --git a/Geo/ChainComplex.cpp b/Geo/ChainComplex.cpp
index 1274a2c2ee380485cebbaa2e6c94bc0561eb2eb0..9f1236b9c437b007e488cfd3be7ace45dbd99d62 100644
--- a/Geo/ChainComplex.cpp
+++ b/Geo/ChainComplex.cpp
@@ -26,8 +26,8 @@ ChainComplex::ChainComplex(CellComplex *cellComplex, int domain)
 
   int lastCols = 0;
   for(int dim = 0; dim < 4; dim++) {
-    unsigned int cols = cellComplex->getSize(dim);
-    unsigned int rows = 0;
+    std::size_t cols = cellComplex->getSize(dim);
+    std::size_t rows = 0;
 
     int index = 1;
     // ignore cells depending on domain
@@ -543,7 +543,7 @@ bool ChainComplex::deform(std::map<Cell *, int, Less_Cell> &cells,
 
   if(cc.empty() || (getDim() == 2 && cc.size() < 2)) return false;
   int inout = cc[0] * bc[0];
-  for(unsigned int i = 0; i < cc.size(); i++) {
+  for(std::size_t i = 0; i < cc.size(); i++) {
     if(cc[i] * bc[i] != inout) return false;
   }
 
@@ -682,7 +682,7 @@ void ChainComplex::eraseNullCells(std::map<Cell *, int, Less_Cell> &cells)
   for(citer cit = cells.begin(); cit != cells.end(); cit++) {
     if(cit->second == 0) toRemove.push_back(cit->first);
   }
-  for(unsigned int i = 0; i < toRemove.size(); i++) cells.erase(toRemove[i]);
+  for(std::size_t i = 0; i < toRemove.size(); i++) cells.erase(toRemove[i]);
 }
 
 void ChainComplex::deImmuneCells(std::map<Cell *, int, Less_Cell> &cells)
diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index e6a2556204e155a41d9da1773954693a7f84fc4a..3981b3a01f12c3542120b3e683fb3c7e561205a6 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -49,11 +49,11 @@ GEdge::~GEdge()
 void GEdge::deleteMesh(bool onlyDeleteElements)
 {
   if(!onlyDeleteElements) {
-    for(unsigned int i = 0; i < mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < mesh_vertices.size(); i++)
       delete mesh_vertices[i];
     mesh_vertices.clear();
   }
-  for(unsigned int i = 0; i < lines.size(); i++) delete lines[i];
+  for(std::size_t i = 0; i < lines.size(); i++) delete lines[i];
   lines.clear();
   deleteVertexArrays();
   model()->destroyMeshCaches();
@@ -154,7 +154,7 @@ void GEdge::reverse()
     (*line)->reverse();
 }
 
-unsigned int GEdge::getNumMeshElementsByType(const int familyType) const
+std::size_t GEdge::getNumMeshElementsByType(const int familyType) const
 {
   if(familyType == TYPE_LIN) return lines.size();
 
@@ -169,7 +169,7 @@ struct owns_parent {
   }
 };
 
-unsigned int GEdge::getNumMeshParentElements()
+std::size_t GEdge::getNumMeshParentElements()
 {
   return std::count_if(lines.begin(), lines.end(), owns_parent());
 }
@@ -185,14 +185,14 @@ MElement *const *GEdge::getStartElementType(int type) const
   return reinterpret_cast<MElement *const *>(&lines[0]);
 }
 
-MElement *GEdge::getMeshElement(unsigned int index) const
+MElement *GEdge::getMeshElement(std::size_t index) const
 {
   if(index < lines.size()) return lines[index];
   return 0;
 }
 
 MElement *GEdge::getMeshElementByType(const int familyType,
-                                      const unsigned int index) const
+                                      const std::size_t index) const
 {
   if(familyType == TYPE_LIN) return lines[index];
 
@@ -240,8 +240,8 @@ SBoundingBox3d GEdge::bounds(bool fast) const
   }
   else {
     std::size_t ipp = std::max(getNumMeshElements() / 20, std::size_t(1));
-    for(size_type i = 0; i < getNumMeshElements(); i += ipp)
-      for(size_type j = 0; j < getMeshElement(i)->getNumVertices(); j++)
+    for(std::size_t i = 0; i < getNumMeshElements(); i += ipp)
+      for(std::size_t j = 0; j < getMeshElement(i)->getNumVertices(); j++)
         bbox += getMeshElement(i)->getVertex(j)->point();
   }
   return bbox;
@@ -619,7 +619,7 @@ std::list<GRegion *> GEdge::regions() const
 
 void GEdge::relocateMeshVertices()
 {
-  for(unsigned int i = 0; i < mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < mesh_vertices.size(); i++) {
     MVertex *v = mesh_vertices[i];
     double u0 = 0;
     if(v->getParameter(0, u0)) {
@@ -729,9 +729,9 @@ void GEdge::discretize(double tol, std::vector<SPoint3> &dpts,
 static void meshCompound(GEdge *ge)
 {
   std::vector<MLine *> lines;
-  for(unsigned int i = 0; i < ge->_compound.size(); i++) {
+  for(std::size_t i = 0; i < ge->_compound.size(); i++) {
     GEdge *c = (GEdge *)ge->_compound[i];
-    for(unsigned int j = 0; j < c->lines.size(); j++) {
+    for(std::size_t j = 0; j < c->lines.size(); j++) {
       lines.push_back(
         new MLine(c->lines[j]->getVertex(0), c->lines[j]->getVertex(1)));
     }
@@ -754,7 +754,7 @@ void GEdge::mesh(bool verbose)
   if(_compound.size()) { // Some faces are meshed together
     if(_compound[0] == this) { // I'm the one that makes the compound job
       bool ok = true;
-      for(unsigned int i = 0; i < _compound.size(); i++) {
+      for(std::size_t i = 0; i < _compound.size(); i++) {
         GEdge *ge = (GEdge *)_compound[i];
         ok &= (ge->meshStatistics.status == GEdge::DONE);
       }
@@ -782,7 +782,7 @@ bool GEdge::reorder(const int elementType, const std::vector<int> &ordering)
     }
 
     std::vector<MLine *> newLinesOrder(lines.size());
-    for(unsigned int i = 0; i < ordering.size(); i++) {
+    for(std::size_t i = 0; i < ordering.size(); i++) {
       newLinesOrder[i] = lines[ordering[i]];
     }
 
diff --git a/Geo/GEdge.h b/Geo/GEdge.h
index cf5024cc23c5c9e841d1eab8b4b22923613c837a..9c263b44a9fc4a99636ca89a30680ab1ef0bb122 100644
--- a/Geo/GEdge.h
+++ b/Geo/GEdge.h
@@ -173,19 +173,19 @@ public:
   int getNumElementTypes() const { return 1; }
 
   // get total/by-type number of elements in the mesh
-  size_type getNumMeshElements() const { return lines.size(); }
-  unsigned int getNumMeshElementsByType(const int familyType) const;
-  unsigned int getNumMeshParentElements();
+  std::size_t getNumMeshElements() const { return lines.size(); }
+  std::size_t getNumMeshElementsByType(const int familyType) const;
+  std::size_t getNumMeshParentElements();
   void getNumMeshElements(unsigned *const c) const;
 
   // get the start of the array of a type of element
   MElement *const *getStartElementType(int type) const;
 
   // get the element at the given index
-  MElement *getMeshElement(unsigned int index) const;
+  MElement *getMeshElement(std::size_t index) const;
   // get the element at the given index for a given familyType
   MElement *getMeshElementByType(const int familyType,
-                                 const unsigned int index) const;
+                                 const std::size_t index) const;
 
   // reset the mesh attributes to default values
   virtual void resetMeshAttributes();
diff --git a/Geo/GEntity.cpp b/Geo/GEntity.cpp
index f577efdfeb419d305d3a9f765b3151cd25ef398c..7f54a0bb8928172bce48dc06817788bdeaf4cb74 100644
--- a/Geo/GEntity.cpp
+++ b/Geo/GEntity.cpp
@@ -70,7 +70,7 @@ std::string GEntity::getInfoString(bool additional, bool multiline)
       sstream << "\n";
     else
       sstream << " ";
-    for(unsigned int i = 0; i < physicals.size(); i++) {
+    for(std::size_t i = 0; i < physicals.size(); i++) {
       sstream << "Physical ";
       switch(dim()) {
       case 0: sstream << "Point"; break;
diff --git a/Geo/GEntity.h b/Geo/GEntity.h
index 1728a3a07c593544eb229e0d31f564c61193ae35..5609ea954a7960137473a4df762f5ef31a2469d4 100644
--- a/Geo/GEntity.h
+++ b/Geo/GEntity.h
@@ -70,8 +70,6 @@ public: // these will become protected at some point
   // Set of high-order elements fixed by "fast curving"
   std::set<MElement *> curvedBLElements;
 
-  typedef std::vector<MVertex *>::size_type size_type;
-
 public:
   // make a set of all the vertices in the entity, with/without closure
   void addVerticesInSet(std::set<MVertex *> &, bool closure) const;
@@ -345,22 +343,22 @@ public:
   virtual int getNumElementTypes() const { return 0; }
 
   // get the number of mesh elements (total and by type) in the entity
-  virtual size_type getNumMeshElements() const { return 0; }
-  virtual unsigned int getNumMeshElementsByType(const int familyType) const
+  virtual std::size_t getNumMeshElements() const { return 0; }
+  virtual std::size_t getNumMeshElementsByType(const int familyType) const
   {
     return 0;
   }
-  virtual unsigned int getNumMeshParentElements() { return 0; }
+  virtual std::size_t getNumMeshParentElements() { return 0; }
   virtual void getNumMeshElements(unsigned *const c) const {}
 
   // get the start of the array of a type of element
   virtual MElement *const *getStartElementType(int type) const { return 0; }
 
   // get the element at the given index
-  virtual MElement *getMeshElement(unsigned int index) const { return 0; }
+  virtual MElement *getMeshElement(std::size_t index) const { return 0; }
   // get the element at the given index for a given familyType
   virtual MElement *getMeshElementByType(const int familyType,
-                                         const unsigned int index) const
+                                         const std::size_t index) const
   {
     return 0;
   }
@@ -370,10 +368,10 @@ public:
   void setAllElementsVisible(bool val) { _allElementsVisible = val ? 1 : 0; }
 
   // get the number of mesh vertices in the entity
-  unsigned int getNumMeshVertices() { return mesh_vertices.size(); }
+  std::size_t getNumMeshVertices() { return mesh_vertices.size(); }
 
   // get the mesh vertex at the given index
-  MVertex *getMeshVertex(unsigned int index) { return mesh_vertices[index]; }
+  MVertex *getMeshVertex(std::size_t index) { return mesh_vertices[index]; }
 
   // add a MeshVertex
   void addMeshVertex(MVertex *v) { mesh_vertices.push_back(v); }
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index dec6730b594aeab5c36081ff7ba742dfadff1a77..dc2deca72deabe6f3761f7ab71cb9a2ec18a6897 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -148,16 +148,16 @@ int GFace::delEdge(GEdge *edge)
 void GFace::deleteMesh(bool onlyDeleteElements)
 {
   if(!onlyDeleteElements) {
-    for(unsigned int i = 0; i < mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < mesh_vertices.size(); i++)
       delete mesh_vertices[i];
     mesh_vertices.clear();
     transfinite_vertices.clear();
   }
-  for(unsigned int i = 0; i < triangles.size(); i++) delete triangles[i];
+  for(std::size_t i = 0; i < triangles.size(); i++) delete triangles[i];
   triangles.clear();
-  for(unsigned int i = 0; i < quadrangles.size(); i++) delete quadrangles[i];
+  for(std::size_t i = 0; i < quadrangles.size(); i++) delete quadrangles[i];
   quadrangles.clear();
-  for(unsigned int i = 0; i < polygons.size(); i++) delete polygons[i];
+  for(std::size_t i = 0; i < polygons.size(); i++) delete polygons[i];
   polygons.clear();
   deleteVertexArrays();
   model()->destroyMeshCaches();
@@ -168,7 +168,7 @@ std::size_t GFace::getNumMeshElements() const
   return triangles.size() + quadrangles.size() + polygons.size();
 }
 
-unsigned int GFace::getNumMeshElementsByType(const int familyType) const
+std::size_t GFace::getNumMeshElementsByType(const int familyType) const
 {
   if(familyType == TYPE_TRI)
     return triangles.size();
@@ -180,10 +180,10 @@ unsigned int GFace::getNumMeshElementsByType(const int familyType) const
   return 0;
 }
 
-unsigned int GFace::getNumMeshParentElements()
+std::size_t GFace::getNumMeshParentElements()
 {
-  unsigned int n = 0;
-  for(unsigned int i = 0; i < polygons.size(); i++)
+  std::size_t n = 0;
+  for(std::size_t i = 0; i < polygons.size(); i++)
     if(polygons[i]->ownsParent()) n++;
   return n;
 }
@@ -211,7 +211,7 @@ MElement *const *GFace::getStartElementType(int type) const
   return 0;
 }
 
-MElement *GFace::getMeshElement(unsigned int index) const
+MElement *GFace::getMeshElement(std::size_t index) const
 {
   if(index < triangles.size())
     return triangles[index];
@@ -223,7 +223,7 @@ MElement *GFace::getMeshElement(unsigned int index) const
 }
 
 MElement *GFace::getMeshElementByType(const int familyType,
-                                      const unsigned int index) const
+                                      const std::size_t index) const
 {
   if(familyType == TYPE_TRI)
     return triangles[index];
@@ -258,8 +258,8 @@ SBoundingBox3d GFace::bounds(bool fast) const
   else {
     int ipp = getNumMeshElements() / 20;
     if(ipp < 1) ipp = 1;
-    for(unsigned int i = 0; i < getNumMeshElements(); i += ipp)
-      for(unsigned int j = 0; j < getMeshElement(i)->getNumVertices(); j++)
+    for(std::size_t i = 0; i < getNumMeshElements(); i += ipp)
+      for(std::size_t j = 0; j < getMeshElement(i)->getNumVertices(); j++)
         res += getMeshElement(i)->getVertex(j)->point();
   }
   return res;
@@ -456,7 +456,7 @@ void GFace::writeGEO(FILE *fp)
         it++)
       ori.push_back((*it) > 0 ? 1 : -1);
     fprintf(fp, "Line Loop(%d) = ", tag());
-    for(unsigned int i = 0; i < num.size(); i++) {
+    for(std::size_t i = 0; i < num.size(); i++) {
       if(i)
         fprintf(fp, ", %d", num[i] * ori[i]);
       else
@@ -486,7 +486,7 @@ void GFace::writeGEO(FILE *fp)
     fprintf(fp, "Transfinite Surface {%d}", tag());
     if(meshAttributes.corners.size()) {
       fprintf(fp, " = {");
-      for(unsigned int i = 0; i < meshAttributes.corners.size(); i++) {
+      for(std::size_t i = 0; i < meshAttributes.corners.size(); i++) {
         if(i) fprintf(fp, ",");
         fprintf(fp, "%d", meshAttributes.corners[i]->tag());
       }
@@ -530,7 +530,7 @@ void GFace::computeMeanPlane()
     double res[4] = {0., 0., 0., 0.}, xm = 0., ym = 0., zm = 0.;
     if(pts.size() >= 3) {
       SVector3 d01(pts[0], pts[1]);
-      for(unsigned int i = 2; i < pts.size(); i++) {
+      for(std::size_t i = 2; i < pts.size(); i++) {
         SVector3 d0i(pts[0], pts[i]);
         SVector3 n = crossprod(d01, d0i);
         // if too small, the points are almost colinear; tolerance is relatively
@@ -589,7 +589,7 @@ void GFace::computeMeanPlane()
         ite != edg.end(); ite++) {
       const GEdge *e = *ite;
       if(e->mesh_vertices.size() > 1) {
-        for(unsigned int i = 0; i < e->mesh_vertices.size(); i++)
+        for(std::size_t i = 0; i < e->mesh_vertices.size(); i++)
           pts.push_back(e->mesh_vertices[i]->point());
       }
       else {
@@ -608,7 +608,7 @@ void GFace::computeMeanPlane()
 void GFace::computeMeanPlane(const std::vector<MVertex *> &points)
 {
   std::vector<SPoint3> pts;
-  for(unsigned int i = 0; i < points.size(); i++)
+  for(std::size_t i = 0; i < points.size(); i++)
     pts.push_back(SPoint3(points[i]->x(), points[i]->y(), points[i]->z()));
   computeMeanPlane(pts);
 }
@@ -773,7 +773,7 @@ void GFace::computeMeshSizeFieldAccuracy(double &avg, double &max_e,
 {
 #if defined(HAVE_MESH)
   std::set<MEdge, Less_Edge> es;
-  for(unsigned int i = 0; i < getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < getNumMeshElements(); i++) {
     MElement *e = getMeshElement(i);
     for(int j = 0; j < e->getNumEdges(); j++) es.insert(e->getEdge(j));
   }
@@ -1361,7 +1361,7 @@ bool GFace::fillVertexArray(bool force)
   unsigned int col[4] = {c, c, c, c};
   if(stl_vertices_xyz.size() &&
      (stl_vertices_xyz.size() == stl_normals.size())) {
-    for(unsigned int i = 0; i < stl_triangles.size(); i += 3) {
+    for(std::size_t i = 0; i < stl_triangles.size(); i += 3) {
       SPoint3 &p1(stl_vertices_xyz[stl_triangles[i]]);
       SPoint3 &p2(stl_vertices_xyz[stl_triangles[i + 1]]);
       SPoint3 &p3(stl_vertices_xyz[stl_triangles[i + 2]]);
@@ -1375,7 +1375,7 @@ bool GFace::fillVertexArray(bool force)
     }
   }
   else if(stl_vertices_uv.size()) {
-    for(unsigned int i = 0; i < stl_triangles.size(); i += 3) {
+    for(std::size_t i = 0; i < stl_triangles.size(); i += 3) {
       SPoint2 &p1(stl_vertices_uv[stl_triangles[i]]);
       SPoint2 &p2(stl_vertices_uv[stl_triangles[i + 1]]);
       SPoint2 &p3(stl_vertices_uv[stl_triangles[i + 2]]);
@@ -1418,7 +1418,7 @@ bool GFace::fillPointCloud(double maxDist, std::vector<SPoint3> *points,
   if(!points) return false;
 
   if(buildSTLTriangulation() && stl_vertices_uv.size()) {
-    for(unsigned int i = 0; i < stl_triangles.size(); i += 3) {
+    for(std::size_t i = 0; i < stl_triangles.size(); i += 3) {
       SPoint2 &p0(stl_vertices_uv[stl_triangles[i]]);
       SPoint2 &p1(stl_vertices_uv[stl_triangles[i + 1]]);
       SPoint2 &p2(stl_vertices_uv[stl_triangles[i + 2]]);
@@ -1468,13 +1468,13 @@ static void meshCompound(GFace *gf, bool verbose)
   std::vector<GFace *> triangles_tag;
   std::vector<SPoint2> triangles_uv;
 
-  for(unsigned int i = 0; i < gf->_compound.size(); i++) {
+  for(std::size_t i = 0; i < gf->_compound.size(); i++) {
     GFace *c = (GFace *)gf->_compound[i];
     df->triangles.insert(df->triangles.end(), c->triangles.begin(),
                          c->triangles.end());
     df->mesh_vertices.insert(df->mesh_vertices.end(), c->mesh_vertices.begin(),
                              c->mesh_vertices.end());
-    for(unsigned int j = 0; j < c->triangles.size(); j++) {
+    for(std::size_t j = 0; j < c->triangles.size(); j++) {
       triangles_tag.push_back(c);
       for(int k = 0; k < 3; k++) {
         SPoint2 param;
@@ -1489,7 +1489,7 @@ static void meshCompound(GFace *gf, bool verbose)
   df->createGeometry();
   df->mesh(verbose);
 
-  for(GFace::size_type i = 0; i < df->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < df->mesh_vertices.size(); i++) {
     double u, v;
     df->mesh_vertices[i]->getParameter(0, u);
     df->mesh_vertices[i]->getParameter(1, v);
@@ -1517,7 +1517,7 @@ static void meshCompound(GFace *gf, bool verbose)
     }
   }
 
-  for(GFace::size_type i = 0; i < df->triangles.size(); i++) {
+  for(std::size_t i = 0; i < df->triangles.size(); i++) {
     MTriangle *t = df->triangles[i];
     if(t->getVertex(0)->onWhat()->dim() == 2)
       ((GFace *)t->getVertex(0)->onWhat())->triangles.push_back(t);
@@ -1549,7 +1549,7 @@ void GFace::mesh(bool verbose)
   if(_compound.size()) { // Some faces are meshed together
     if(_compound[0] == this) { // I'm the one that makes the compound job
       bool ok = true;
-      for(unsigned int i = 0; i < _compound.size(); i++) {
+      for(std::size_t i = 0; i < _compound.size(); i++) {
         GFace *gf = (GFace *)_compound[i];
         ok &= (gf->meshStatistics.status == GFace::DONE);
       }
@@ -1580,7 +1580,7 @@ void GFace::moveToValidRange(SPoint2 &pt) const
 
 void GFace::relocateMeshVertices()
 {
-  for(unsigned int i = 0; i < mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < mesh_vertices.size(); i++) {
     MVertex *v = mesh_vertices[i];
     double u0 = 0., u1 = 0.;
     if(v->getParameter(0, u0) && v->getParameter(1, u1)) {
@@ -2058,7 +2058,7 @@ bool GFace::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MTriangle *> newTrianglesOrder(triangles.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newTrianglesOrder[i] = triangles[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -2081,7 +2081,7 @@ bool GFace::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MQuadrangle *> newQuadranglesOrder(quadrangles.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newQuadranglesOrder[i] = quadrangles[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -2104,7 +2104,7 @@ bool GFace::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MPolygon *> newPolygonsOrder(polygons.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newPolygonsOrder[i] = polygons[ordering[i]];
       }
 #if __cplusplus >= 201103L
diff --git a/Geo/GFace.h b/Geo/GFace.h
index ddcba2064c826c1d7c9006cb6f15587984e52646..f0df2245883c0742323dba1e9af2730d1bb362a8 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -246,19 +246,19 @@ public:
   int getNumElementTypes() const { return 3; }
 
   // get total/by-type number of elements in the mesh
-  size_type getNumMeshElements() const;
-  unsigned int getNumMeshElementsByType(const int familyType) const;
-  unsigned int getNumMeshParentElements();
+  std::size_t getNumMeshElements() const;
+  std::size_t getNumMeshElementsByType(const int familyType) const;
+  std::size_t getNumMeshParentElements();
   void getNumMeshElements(unsigned *const c) const;
 
   // get the start of the array of a type of element
   MElement *const *getStartElementType(int type) const;
 
   // get the element at the given index
-  MElement *getMeshElement(unsigned int index) const;
+  MElement *getMeshElement(std::size_t index) const;
   // get the element at the given index for a given familyType
   MElement *getMeshElementByType(const int familyType,
-                                 const unsigned int index) const;
+                                 const std::size_t index) const;
 
   // reset the mesh attributes to default values
   virtual void resetMeshAttributes();
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 63b1e015575a7bdb82ebf788b3b2abedb435c762..72d1e76ce260265707f6d44de2af7da3be170948 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -72,7 +72,7 @@ GModel::GModel(const std::string &name)
     normals(0)
 {
   // hide all other models
-  for(unsigned int i = 0; i < list.size(); i++) list[i]->setVisibility(0);
+  for(std::size_t i = 0; i < list.size(); i++) list[i]->setVisibility(0);
 
   // push new one into the list
   list.push_back(this);
@@ -95,7 +95,7 @@ GModel::~GModel()
   if(getVisibility()) {
     // if no other model is visible, make the last one visible
     bool othervisible = false;
-    for(unsigned int i = 0; i < list.size(); i++) {
+    for(std::size_t i = 0; i < list.size(); i++) {
       if(list[i]->getVisibility()) othervisible = true;
     }
     if(!othervisible && list.size()) list.back()->setVisibility(1);
@@ -135,7 +135,7 @@ GModel *GModel::current(int index)
 
 int GModel::setCurrent(GModel *m)
 {
-  for(unsigned int i = 0; i < list.size(); i++) {
+  for(std::size_t i = 0; i < list.size(); i++) {
     if(list[i] == m) {
       _current = i;
       break;
@@ -410,7 +410,7 @@ void GModel::remove(int dim, int tag, bool recursive)
 void GModel::remove(const std::vector<std::pair<int, int> > &dimTags,
                     bool recursive)
 {
-  for(unsigned int i = 0; i < dimTags.size(); i++)
+  for(std::size_t i = 0; i < dimTags.size(); i++)
     remove(dimTags[i].first, dimTags[i].second, recursive);
 }
 
@@ -487,7 +487,7 @@ void GModel::getEntitiesInBox(std::vector<GEntity *> &entities,
   std::vector<GEntity *> all;
   getEntities(all, dim);
   // if we use this often, create an rtree to avoid the linear search
-  for(unsigned int i = 0; i < all.size(); i++) {
+  for(std::size_t i = 0; i < all.size(); i++) {
     SBoundingBox3d bbox = all[i]->bounds();
     if(bbox.min().x() >= box.min().x() && bbox.max().x() <= box.max().x() &&
        bbox.min().y() >= box.min().y() && bbox.max().y() <= box.max().y() &&
@@ -510,7 +510,7 @@ bool GModel::getBoundaryTags(const std::vector<std::pair<int, int> > &inDimTags,
                              bool combined, bool oriented, bool recursive)
 {
   bool ret = true;
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = std::abs(inDimTags[i].second); // abs for backward compatibility
     bool reverse = (inDimTags[i].second < 0);
@@ -608,7 +608,7 @@ bool GModel::getBoundaryTags(const std::vector<std::pair<int, int> > &inDimTags,
   if(combined) {
     // compute boundary of the combined shapes
     std::set<int, AbsIntLessThan> c[3];
-    for(unsigned int i = 0; i < outDimTags.size(); i++) {
+    for(std::size_t i = 0; i < outDimTags.size(); i++) {
       int dim = outDimTags[i].first;
       int tag = outDimTags[i].second;
       if(dim >= 0 && dim < 3) {
@@ -634,7 +634,7 @@ int GModel::getMaxElementaryNumber(int dim)
   std::vector<GEntity *> entities;
   getEntities(entities);
   int num = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(dim < 0 || entities[i]->dim() == dim)
       num = std::max(num, std::abs(entities[i]->tag()));
   return num;
@@ -644,7 +644,7 @@ bool GModel::noPhysicalGroups()
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->physicals.size()) return false;
   return true;
 }
@@ -654,9 +654,9 @@ void GModel::getPhysicalGroups(
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     std::map<int, std::vector<GEntity *> > &group(groups[entities[i]->dim()]);
-    for(unsigned int j = 0; j < entities[i]->physicals.size(); j++) {
+    for(std::size_t j = 0; j < entities[i]->physicals.size(); j++) {
       // physicals can be stored with negative signs when the entity should be
       // "reversed"
       int p = std::abs(entities[i]->physicals[j]);
@@ -679,8 +679,8 @@ void GModel::getPhysicalGroups(
 {
   std::vector<GEntity *> entities;
   getEntities(entities, dim);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int j = 0; j < entities[i]->physicals.size(); j++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
+    for(std::size_t j = 0; j < entities[i]->physicals.size(); j++) {
       // physicals can be stored with negative signs when the entity should be
       // "reversed"
       int p = std::abs(entities[i]->physicals[j]);
@@ -699,7 +699,7 @@ void GModel::removePhysicalGroups()
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     entities[i]->physicals.clear();
 
   // we cannot remove the names here, as removePhysicalGroups() is used in
@@ -714,9 +714,9 @@ void GModel::removePhysicalGroup(int dim, int tag)
   // generalize the function by taking a list of dim, tag pairs)
   std::vector<GEntity *> entities;
   getEntities(entities, dim);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     std::vector<int> p;
-    for(unsigned int j = 0; j < entities[i]->physicals.size(); j++)
+    for(std::size_t j = 0; j < entities[i]->physicals.size(); j++)
       if(entities[i]->physicals[j] != tag)
         p.push_back(entities[i]->physicals[j]);
     entities[i]->physicals = p;
@@ -729,9 +729,9 @@ int GModel::getMaxPhysicalNumber(int dim)
   std::vector<GEntity *> entities;
   getEntities(entities);
   int num = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(dim < 0 || entities[i]->dim() == dim)
-      for(unsigned int j = 0; j < entities[i]->physicals.size(); j++)
+      for(std::size_t j = 0; j < entities[i]->physicals.size(); j++)
         num = std::max(num, std::abs(entities[i]->physicals[j]));
   return num;
 }
@@ -839,12 +839,12 @@ void GModel::setSelection(int val)
   std::vector<GEntity *> entities;
   getEntities(entities);
 
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     entities[i]->setSelection(val);
     // reset selection in elements (stored in the visibility flag to
     // save space)
     if(val == 0) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++)
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++)
         if(entities[i]->getMeshElement(j)->getVisibility() == 2)
           entities[i]->getMeshElement(j)->setVisibility(1);
     }
@@ -856,7 +856,7 @@ SBoundingBox3d GModel::bounds(bool aroundVisible)
   std::vector<GEntity *> entities;
   getEntities(entities);
   SBoundingBox3d bb;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(!aroundVisible || entities[i]->getVisibility()) {
       if(entities[i]->getNativeType() == GEntity::OpenCascadeModel) {
         bb += entities[i]->bounds();
@@ -866,7 +866,7 @@ SBoundingBox3d GModel::bounds(bool aroundVisible)
         if(entities[i]->dim() == 0)
           bb += static_cast<GVertex *>(entities[i])->xyz();
         else
-          for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++)
+          for(std::size_t j = 0; j < entities[i]->mesh_vertices.size(); j++)
             bb += entities[i]->mesh_vertices[j]->point();
       }
     }
@@ -889,7 +889,7 @@ bool GModel::setAllVolumesPositive()
 {
   bool ok = true;
   for(riter it = regions.begin(); it != regions.end(); ++it)
-    for(unsigned int i = 0; i < (*it)->getNumMeshElements(); ++i)
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); ++i)
       if(!(*it)->getMeshElement(i)->setVolumePositive()) ok = false;
   return ok;
 }
@@ -971,7 +971,7 @@ void GModel::setAllVolumesPositiveTopology()
 
   MElement *el;
   for(riter it = regions.begin(); it != regions.end(); ++it) {
-    for(unsigned int iEl = 0; iEl < (*it)->getNumMeshElements(); ++iEl) {
+    for(std::size_t iEl = 0; iEl < (*it)->getNumMeshElements(); ++iEl) {
       el = (*it)->getMeshElement(iEl);
       for(int iFace = 0; iFace < el->getNumFaces(); iFace++) {
         addToMap(faceToElement, elToNeighbors, el->getFace(iFace), el);
@@ -979,7 +979,7 @@ void GModel::setAllVolumesPositiveTopology()
     }
   }
   for(riter it = regions.begin(); it != regions.end(); ++it) {
-    for(unsigned int iEl = 0; iEl < (*it)->getNumMeshElements(); ++iEl) {
+    for(std::size_t iEl = 0; iEl < (*it)->getNumMeshElements(); ++iEl) {
       el = (*it)->getMeshElement(iEl);
       for(int iFace = 0; iFace < el->getNumFaces(); iFace++) {
         checkConformity(faceToElement, elToNeighbors, el->getFace(iFace), el);
@@ -1078,7 +1078,7 @@ int GModel::adaptMesh(std::vector<int> technique,
       Msg::Info(" - Adapt mesh (all dimensions) iter. = %d", ITER);
       fields->reset();
       meshMetric *metric = new meshMetric(this);
-      for(unsigned int imetric = 0; imetric < technique.size(); imetric++) {
+      for(std::size_t imetric = 0; imetric < technique.size(); imetric++) {
         metric->addMetric(technique[imetric], f[imetric], parameters[imetric]);
       }
       fields->setBackgroundField(metric);
@@ -1133,7 +1133,7 @@ int GModel::adaptMesh(std::vector<int> technique,
 
       fields->reset();
       meshMetric *metric = new meshMetric(this);
-      for(unsigned int imetric = 0; imetric < technique.size(); imetric++) {
+      for(std::size_t imetric = 0; imetric < technique.size(); imetric++) {
         metric->addMetric(technique[imetric], f[imetric], parameters[imetric]);
       }
       fields->setBackgroundField(metric);
@@ -1241,34 +1241,34 @@ int GModel::getMeshStatus(bool countDiscrete)
   return -1;
 }
 
-int GModel::getNumMeshVertices(int dim) const
+std::size_t GModel::getNumMeshVertices(int dim) const
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  unsigned int n = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  std::size_t n = 0;
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->dim() == dim || dim < 0)
       n += entities[i]->getNumMeshVertices();
   return n;
 }
 
-int GModel::getNumMeshElements(int dim) const
+std::size_t GModel::getNumMeshElements(int dim) const
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  unsigned int n = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  std::size_t n = 0;
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->dim() == dim || dim < 0)
       n += entities[i]->getNumMeshElements();
   return n;
 }
 
-int GModel::getNumMeshParentElements() const
+std::size_t GModel::getNumMeshParentElements() const
 {
   std::vector<GEntity *> entities;
   getEntities(entities);
-  unsigned int n = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  std::size_t n = 0;
+  for(std::size_t i = 0; i < entities.size(); i++)
     n += entities[i]->getNumMeshParentElements();
   return n;
 }
@@ -1284,7 +1284,7 @@ void GModel::renumberMeshVertices()
   // belonging to physical groups
   bool potentiallySaveSubset = false;
   if(!CTX::instance()->mesh.saveAll){
-    for(unsigned int i = 0; i < entities.size(); i++){
+    for(std::size_t i = 0; i < entities.size(); i++){
       if(entities[i]->physicals.size()){
         potentiallySaveSubset = true;
         break;
@@ -1292,39 +1292,39 @@ void GModel::renumberMeshVertices()
     }
   }
 
-  unsigned int n = 0;
+  std::size_t n = 0;
   if(potentiallySaveSubset){
     Msg::Debug("Renumbering for potentially partial mesh save");
     // if we potentially only save a subset of elements, make sure to first
     // renumber the vertices that belong to those elements (so that we end up
     // with a dense vertex numbering in the output file)
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
-      for(unsigned int j = 0; j < ge->getNumMeshVertices(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshVertices(); j++) {
         ge->getMeshVertex(j)->forceNum(-1);
       }
     }
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
       if(ge->physicals.size()){
-        for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+        for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
           MElement *e = ge->getMeshElement(j);
-          for(unsigned int k = 0; k < e->getNumVertices(); k++){
+          for(std::size_t k = 0; k < e->getNumVertices(); k++){
             e->getVertex(k)->forceNum(0);
           }
         }
       }
     }
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
-      for(unsigned int j = 0; j < ge->getNumMeshVertices(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshVertices(); j++) {
         MVertex *v = ge->getMeshVertex(j);
         if(v->getNum() == 0) v->forceNum(++n);
       }
     }
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
-      for(unsigned int j = 0; j < ge->getNumMeshVertices(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshVertices(); j++) {
         MVertex *v = ge->getMeshVertex(j);
         if(v->getNum() == -1) v->forceNum(++n);
       }
@@ -1332,9 +1332,9 @@ void GModel::renumberMeshVertices()
   }
   else{
     // no physical groups
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
-      for(unsigned int j = 0; j < ge->getNumMeshVertices(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshVertices(); j++) {
         ge->getMeshVertex(j)->forceNum(++n);
       }
     }
@@ -1352,7 +1352,7 @@ void GModel::renumberMeshElements()
   // belonging to physical groups
   bool potentiallySaveSubset = false;
   if(!CTX::instance()->mesh.saveAll){
-    for(unsigned int i = 0; i < entities.size(); i++){
+    for(std::size_t i = 0; i < entities.size(); i++){
       if(entities[i]->physicals.size()){
         potentiallySaveSubset = true;
         break;
@@ -1360,36 +1360,36 @@ void GModel::renumberMeshElements()
     }
   }
 
-  unsigned int n = 0;
+  std::size_t n = 0;
   if(potentiallySaveSubset){
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
       if(ge->physicals.size()){
-        for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+        for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
           ge->getMeshElement(j)->forceNum(++n);
         }
       }
     }
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
       if(ge->physicals.empty()){
-        for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+        for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
           ge->getMeshElement(j)->forceNum(++n);
         }
       }
     }
   }
   else{
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       GEntity *ge = entities[i];
-      for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
         ge->getMeshElement(j)->forceNum(++n);
       }
     }
   }
 }
 
-int GModel::getNumMeshElements(unsigned c[6])
+std::size_t GModel::getNumMeshElements(unsigned c[6])
 {
   c[0] = 0;
   c[1] = 0;
@@ -1449,14 +1449,14 @@ void GModel::rebuildMeshVertexCache(bool onlyIfNecessary)
     if(dense) {
       // numbering starts at 1
       _vertexVectorCache.resize(_maxVertexNum + 1, (MVertex *)0);
-      for(unsigned int i = 0; i < entities.size(); i++)
-        for(unsigned int 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++)
           _vertexVectorCache[entities[i]->mesh_vertices[j]->getNum()] =
             entities[i]->mesh_vertices[j];
     }
     else {
-      for(unsigned int i = 0; i < entities.size(); i++)
-        for(unsigned int 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++)
           _vertexMapCache[entities[i]->mesh_vertices[j]->getNum()] =
             entities[i]->mesh_vertices[j];
     }
@@ -1486,7 +1486,7 @@ void GModel::getMeshVerticesForPhysicalGroup(int dim, int num,
   if(it == groups.end()) return;
   const std::vector<GEntity *> &entities = it->second;
   std::set<MVertex *> sv;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(dim == 0) {
       GVertex *g = (GVertex *)entities[i];
       sv.insert(g->mesh_vertices[0]);
@@ -1523,15 +1523,15 @@ MElement *GModel::getMeshElementByTag(int n)
     if(dense) {
       // numbering starts at 1
       _elementVectorCache.resize(_maxElementNum + 1, (MElement *)0);
-      for(unsigned int i = 0; i < entities.size(); i++)
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++)
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           MElement *e = entities[i]->getMeshElement(j);
           _elementVectorCache[e->getNum()] = e;
         }
     }
     else {
-      for(unsigned int i = 0; i < entities.size(); i++)
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++)
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           MElement *e = entities[i]->getMeshElement(j);
           _elementMapCache[e->getNum()] = e;
         }
@@ -1562,7 +1562,7 @@ template <class T>
 static void removeInvisible(std::vector<T *> &elements, bool all)
 {
   std::vector<T *> tmp;
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     if(all || !elements[i]->getVisibility())
       delete elements[i];
     else
@@ -1606,15 +1606,15 @@ int GModel::indexMeshVertices(bool all, int singlePartition, bool renumber)
 
   // tag all mesh vertices with -1 (negative vertices will not be
   // saved)
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->setIndex(-1);
 
   // tag all mesh vertices belonging to elements that need to be saved with 0,
   // or with -2 if they need to be taken into account in the numbering but need
   // not to be saved (because we save a single partition and they are not used
   // in that partition)
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(all || entities[i]->physicals.size() ||
        (entities[i]->getParentEntity() &&
         entities[i]->getParentEntity()->physicals.size())) {
@@ -1737,7 +1737,7 @@ template <class T>
 static void _addElements(std::vector<T *> &dst,
                          const std::vector<MElement *> &src)
 {
-  for(unsigned int i = 0; i < src.size(); i++) dst.push_back((T *)src[i]);
+  for(std::size_t i = 0; i < src.size(); i++) dst.push_back((T *)src[i]);
 }
 
 void GModel::_storeElementsInEntities(
@@ -1819,7 +1819,7 @@ void GModel::_storeParentsInSubElements(
 {
   std::map<int, std::vector<MElement *> >::const_iterator it;
   for(it = map.begin(); it != map.end(); ++it)
-    for(unsigned int i = 0; i < it->second.size(); ++i)
+    for(std::size_t i = 0; i < it->second.size(); ++i)
       it->second[i]->updateParent(this);
 }
 
@@ -1828,7 +1828,7 @@ static void _associateEntityWithElementVertices(GEntity *ge,
                                                 std::vector<T *> &elements,
                                                 bool force = false)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     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())
@@ -1906,7 +1906,7 @@ void GModel::_storeVerticesInEntities(std::map<int, MVertex *> &vertices)
 
 void GModel::_storeVerticesInEntities(std::vector<MVertex *> &vertices)
 {
-  for(unsigned int i = 0; i < vertices.size(); i++) {
+  for(std::size_t i = 0; i < vertices.size(); i++) {
     MVertex *v = vertices[i];
     if(v) { // the vector is allowed to have null entries
       GEntity *ge = v->onWhat();
@@ -1925,8 +1925,8 @@ void GModel::pruneMeshVertexAssociations()
   std::vector<GEntity *> entities;
   std::vector<MVertex *> vertices;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int 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->setEntity(0);
       vertices.push_back(v);
@@ -2201,7 +2201,7 @@ void GModel::checkMeshCoherence(double tolerance)
   {
     Msg::Info("Checking for duplicate vertices...");
     std::vector<MVertex *> vertices;
-    for(unsigned int i = 0; i < entities.size(); i++)
+    for(std::size_t i = 0; i < entities.size(); i++)
       vertices.insert(vertices.end(), entities[i]->mesh_vertices.begin(),
                       entities[i]->mesh_vertices.end());
     MVertexRTree pos(eps);
@@ -2229,8 +2229,8 @@ void GModel::checkMeshCoherence(double tolerance)
   {
     Msg::Info("Checking for duplicate elements...");
     std::vector<MVertex *> vertices;
-    for(unsigned int i = 0; i < entities.size(); i++) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         MElement *e = entities[i]->getMeshElement(j);
         double vol = e->getVolume();
         if(vol < 0)
@@ -2243,7 +2243,7 @@ void GModel::checkMeshCoherence(double tolerance)
     }
     MVertexRTree pos(eps);
     int num = pos.insert(vertices, true);
-    for(unsigned int i = 0; i < vertices.size(); i++) delete vertices[i];
+    for(std::size_t i = 0; i < vertices.size(); i++) delete vertices[i];
     if(num) Msg::Error("%d duplicate element%s", num, num > 1 ? "s" : "");
   }
 
@@ -2265,9 +2265,9 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
   // to remove diplicate vertices from "incorrect" meshes, where vertices with
   // the same number are duplicated)
   int n = 0;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *ge = entities[i];
-    for(unsigned int j = 0; j < ge->mesh_vertices.size(); j++) {
+    for(std::size_t j = 0; j < ge->mesh_vertices.size(); j++) {
       MVertex *v = ge->mesh_vertices[j];
       v->setIndex(++n);
     }
@@ -2276,9 +2276,9 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
   MVertexRTree pos(eps);
   std::map<int, MVertex *> vertices;
   std::map<MVertex *, MVertex *> duplicates;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *ge = entities[i];
-    for(unsigned int j = 0; j < ge->mesh_vertices.size(); j++) {
+    for(std::size_t j = 0; j < ge->mesh_vertices.size(); j++) {
       MVertex *v = ge->mesh_vertices[j];
       MVertex *v2 = pos.insert(v);
       if(v2)
@@ -2345,7 +2345,7 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
   for(std::map<MVertex *, MVertex *>::iterator it = duplicates.begin();
       it != duplicates.end(); it++)
     to_delete.push_back(it->first);
-  for(unsigned int i = 0; i < to_delete.size(); i++) delete to_delete[i];
+  for(std::size_t i = 0; i < to_delete.size(); i++) delete to_delete[i];
 
   if(num)
     Msg::Info("Removed %d duplicate mesh %s", num,
@@ -2401,7 +2401,7 @@ static int connectedVolumes(std::vector<MElement *> &elements,
                             std::vector<std::vector<MElement *> > &regs)
 {
   std::multimap<MFace, MElement *, Less_Face> e2f;
-  for(unsigned int i = 0; i < elements.size(); ++i) {
+  for(std::size_t i = 0; i < elements.size(); ++i) {
     for(int j = 0; j < elements[i]->getNumFaces(); j++) {
       e2f.insert(std::make_pair(elements[i]->getFace(j), elements[i]));
     }
@@ -2449,7 +2449,7 @@ static int connectedSurfaces(std::vector<MElement *> &elements,
                              std::vector<std::vector<MElement *> > &faces)
 {
   std::multimap<MEdge, MElement *, Less_Edge> e2e;
-  for(unsigned int i = 0; i < elements.size(); ++i) {
+  for(std::size_t i = 0; i < elements.size(); ++i) {
     for(int j = 0; j < elements[i]->getNumEdges(); j++) {
       e2e.insert(std::make_pair(elements[i]->getEdge(j), elements[i]));
     }
@@ -2482,7 +2482,7 @@ void GModel::alignPeriodicBoundaries()
       // compose a search list on master edge
 
       std::map<MEdge, MLine *, Less_Edge> srcLines;
-      for(unsigned int i = 0; i < src->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < src->getNumMeshElements(); i++) {
         MLine *srcLine = dynamic_cast<MLine *>(src->getMeshElement(i));
         if(!srcLine) {
           Msg::Error("Master element %d is not an edge ",
@@ -2496,7 +2496,7 @@ void GModel::alignPeriodicBoundaries()
       // - check whether we find a counterpart (if not, flag error)
       // - check orientation and reorient if necessary
 
-      for(unsigned int i = 0; i < tgt->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < tgt->getNumMeshElements(); ++i) {
         MLine *tgtLine = dynamic_cast<MLine *>(tgt->getMeshElement(i));
 
         if(!tgtLine) {
@@ -2562,7 +2562,7 @@ void GModel::alignPeriodicBoundaries()
     if(src != NULL && src != tgt) {
       std::map<MFace, MElement *, Less_Face> srcElmts;
 
-      for(unsigned int i = 0; i < src->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < src->getNumMeshElements(); ++i) {
         MElement *srcElmt = src->getMeshElement(i);
         int nbVtcs = 0;
         if(dynamic_cast<MTriangle *>(srcElmt)) nbVtcs = 3;
@@ -2575,7 +2575,7 @@ void GModel::alignPeriodicBoundaries()
         srcElmts[MFace(vtcs)] = srcElmt;
       }
 
-      for(unsigned int i = 0; i < tgt->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < tgt->getNumMeshElements(); ++i) {
         MElement *tgtElmt = tgt->getMeshElement(i);
         MTriangle *tgtTri = dynamic_cast<MTriangle *>(tgtElmt);
         MQuadrangle *tgtQua = dynamic_cast<MQuadrangle *>(tgtElmt);
@@ -2665,7 +2665,7 @@ void GModel::makeDiscreteRegionsSimplyConnected()
   for(std::vector<discreteRegion *>::iterator itR = discRegions.begin();
       itR != discRegions.end(); itR++) {
     std::vector<MElement *> allElements((*itR)->getNumMeshElements());
-    for(unsigned int i = 0; i < (*itR)->getNumMeshElements(); i++)
+    for(std::size_t i = 0; i < (*itR)->getNumMeshElements(); i++)
       allElements[i] = (*itR)->getMeshElement(i);
 
     std::vector<std::vector<MElement *> > conRegions;
@@ -2679,11 +2679,11 @@ void GModel::makeDiscreteRegionsSimplyConnected()
       add(r);
       std::vector<MElement *> myElements = conRegions[ire];
       std::set<MVertex *> myVertices;
-      for(unsigned int i = 0; i < myElements.size(); i++) {
+      for(std::size_t i = 0; i < myElements.size(); i++) {
         MElement *e = myElements[i];
         std::vector<MVertex *> verts;
         e->getVertices(verts);
-        for(unsigned int k = 0; k < verts.size(); k++) {
+        for(std::size_t k = 0; k < verts.size(); k++) {
           if(verts[k]->onWhat() && verts[k]->onWhat()->dim() == 3) {
             if(touched.find(verts[k]) == touched.end()) {
               verts[k]->setEntity(r);
@@ -2725,7 +2725,7 @@ void GModel::makeDiscreteFacesSimplyConnected()
   for(std::vector<discreteFace *>::iterator itF = discFaces.begin();
       itF != discFaces.end(); itF++) {
     std::vector<MElement *> allElements((*itF)->getNumMeshElements());
-    for(unsigned int i = 0; i < (*itF)->getNumMeshElements(); i++)
+    for(std::size_t i = 0; i < (*itF)->getNumMeshElements(); i++)
       allElements[i] = (*itF)->getMeshElement(i);
 
     std::vector<std::vector<MElement *> > conFaces;
@@ -2738,11 +2738,11 @@ void GModel::makeDiscreteFacesSimplyConnected()
       add(f);
       std::vector<MElement *> myElements = conFaces[ifa];
       std::set<MVertex *> myVertices;
-      for(unsigned int i = 0; i < myElements.size(); i++) {
+      for(std::size_t i = 0; i < myElements.size(); i++) {
         MElement *e = myElements[i];
         std::vector<MVertex *> verts;
         e->getVertices(verts);
-        for(unsigned int k = 0; k < verts.size(); k++) {
+        for(std::size_t k = 0; k < verts.size(); k++) {
           if(verts[k]->onWhat() && verts[k]->onWhat()->dim() == 2) {
             if(touched.find(verts[k]) == touched.end()) {
               verts[k]->setEntity(f);
@@ -2787,23 +2787,23 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
     regs.push_back(it->first);
   std::multimap<MFace, MElement *, Less_Face> f2e;
   if(regs.size() > 2) {
-    for(unsigned int i = 0; i < regs.size(); i++) {
-      for(unsigned int j = 0; j < elements[4][regs[i]].size(); j++) {
+    for(std::size_t i = 0; i < regs.size(); i++) {
+      for(std::size_t j = 0; j < elements[4][regs[i]].size(); j++) {
         MElement *el = elements[4][regs[i]][j];
         for(int k = 0; k < el->getNumFaces(); k++)
           f2e.insert(std::make_pair(el->getFace(k), el));
       }
     }
   }
-  for(unsigned int i = 0; i < regs.size(); i++) {
+  for(std::size_t i = 0; i < regs.size(); i++) {
     int ri = regs[i];
     std::vector<MElement *> allElements;
-    for(unsigned int j = 0; j < elements[4][ri].size(); j++)
+    for(std::size_t j = 0; j < elements[4][ri].size(); j++)
       allElements.push_back(elements[4][ri][j]);
     std::vector<std::vector<MElement *> > conRegions;
     int nbConRegions = connectedVolumes(allElements, conRegions);
     Msg::Info("%d connected regions (reg=%d)", nbConRegions, ri);
-    unsigned int maxNumEl = 1;
+    std::size_t maxNumEl = 1;
     for(int j = 0; j < nbConRegions; j++)
       if(conRegions[j].size() > maxNumEl) maxNumEl = conRegions[j].size();
     for(int j = 0; j < nbConRegions; j++) {
@@ -2814,7 +2814,7 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
         if(regs.size() == 2)
           r2 = (ri + 1) % 2;
         else {
-          for(unsigned int k = 0; k < conRegions[j].size(); k++) {
+          for(std::size_t k = 0; k < conRegions[j].size(); k++) {
             MElement *el = conRegions[j][k];
             for(int l = 0; l < el->getNumFaces(); l++) {
               MFace mf = el->getFace(l);
@@ -2825,16 +2825,16 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
               }
               MElement *el2 = itl->second;
               bool sameRegion = false;
-              for(unsigned int m = 0; m < conRegions[j].size(); m++)
+              for(std::size_t m = 0; m < conRegions[j].size(); m++)
                 if(conRegions[j][m] == el2) {
                   sameRegion = true;
                   break;
                 }
               if(sameRegion) continue;
-              for(unsigned int m = 0; m < regs.size(); m++) {
+              for(std::size_t m = 0; m < regs.size(); m++) {
                 int rm = regs[m];
                 if(rm == ri) continue;
-                for(unsigned int n = 0; n < elements[4][rm].size(); n++)
+                for(std::size_t n = 0; n < elements[4][rm].size(); n++)
                   if(elements[4][rm][n] == el2) {
                     r2 = rm;
                     break;
@@ -2849,9 +2849,9 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
             Msg::Warning("Element not found for simply connected regions");
         }
 
-        for(unsigned int k = 0; k < conRegions[j].size(); k++) {
+        for(std::size_t k = 0; k < conRegions[j].size(); k++) {
           MElement *el = conRegions[j][k];
-          unsigned int l = 0;
+          std::size_t l = 0;
           for(; l < elements[4][ri].size(); l++)
             if(elements[4][ri][l] == el) break;
           elements[4][ri].erase(elements[4][ri].begin() + l);
@@ -2868,23 +2868,23 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
     faces.push_back(it->first);
   std::multimap<MEdge, MElement *, Less_Edge> e2e;
   if(faces.size() > 2) {
-    for(unsigned int i = 0; i < faces.size(); i++) {
-      for(unsigned int j = 0; j < elements[2][faces[i]].size(); j++) {
+    for(std::size_t i = 0; i < faces.size(); i++) {
+      for(std::size_t j = 0; j < elements[2][faces[i]].size(); j++) {
         MElement *el = elements[2][faces[i]][j];
         for(int k = 0; k < el->getNumEdges(); k++)
           e2e.insert(std::make_pair(el->getEdge(k), el));
       }
     }
   }
-  for(unsigned int i = 0; i < faces.size(); i++) {
+  for(std::size_t i = 0; i < faces.size(); i++) {
     int fi = faces[i];
     std::vector<MElement *> allElements;
-    for(unsigned int j = 0; j < elements[2][fi].size(); j++)
+    for(std::size_t j = 0; j < elements[2][fi].size(); j++)
       allElements.push_back(elements[2][fi][j]);
     std::vector<std::vector<MElement *> > conSurfaces;
     int nbConSurfaces = connectedSurfaces(allElements, conSurfaces);
     Msg::Info("%d connected surfaces (reg=%d)", nbConSurfaces, fi);
-    unsigned int maxNumEl = 1;
+    std::size_t maxNumEl = 1;
     for(int j = 0; j < nbConSurfaces; j++)
       if(conSurfaces[j].size() > maxNumEl) maxNumEl = conSurfaces[j].size();
     for(int j = 0; j < nbConSurfaces; j++) {
@@ -2895,7 +2895,7 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
         if(faces.size() == 2)
           f2 = (fi + 1) % 2;
         else {
-          for(unsigned int k = 0; k < conSurfaces[j].size(); k++) {
+          for(std::size_t k = 0; k < conSurfaces[j].size(); k++) {
             MElement *el = conSurfaces[j][k];
             for(int l = 0; l < el->getNumEdges(); l++) {
               MEdge me = el->getEdge(l);
@@ -2906,16 +2906,16 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
               }
               MElement *el2 = itl->second;
               bool sameSurface = false;
-              for(unsigned int m = 0; m < conSurfaces[j].size(); m++)
+              for(std::size_t m = 0; m < conSurfaces[j].size(); m++)
                 if(conSurfaces[j][m] == el2) {
                   sameSurface = true;
                   break;
                 }
               if(sameSurface) continue;
-              for(unsigned int m = 0; m < faces.size(); m++) {
+              for(std::size_t m = 0; m < faces.size(); m++) {
                 int fm = faces[m];
                 if(fm == fi) continue;
-                for(unsigned int n = 0; n < elements[2][fm].size(); n++)
+                for(std::size_t n = 0; n < elements[2][fm].size(); n++)
                   if(elements[2][fm][n] == el2) {
                     f2 = fm;
                     break;
@@ -2929,9 +2929,9 @@ makeSimplyConnected(std::map<int, std::vector<MElement *> > elements[11])
           if(f2 == fi)
             Msg::Warning("Element not found for simply connected surfaces");
         }
-        for(unsigned int k = 0; k < conSurfaces[j].size(); k++) {
+        for(std::size_t k = 0; k < conSurfaces[j].size(); k++) {
           MElement *el = conSurfaces[j][k];
-          unsigned int l = 0;
+          std::size_t l = 0;
           for(; l < elements[2][fi].size(); l++)
             if(elements[2][fi][l] == el) break;
           elements[2][fi].erase(elements[2][fi].begin() + l);
@@ -3023,7 +3023,7 @@ void GModel::setPhysicalNumToEntitiesInBox(int EntityDimension,
 {
   std::vector<GEntity *> entities;
   getEntitiesInBox(entities, box, EntityDimension);
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     entities[i]->addPhysicalEntity(PhysicalNumber);
 }
 
@@ -3086,13 +3086,13 @@ void GModel::classifyAllFaces(double angleThreshold, bool includeBoundary)
   buildEdgeToElements(elements, adj);
   std::vector<edge_angle> edges_detected, edges_lonely;
   buildListOfEdgeAngle(adj, edges_detected, edges_lonely);
-  for(unsigned int i = 0; i < edges_detected.size(); i++) {
+  for(std::size_t i = 0; i < edges_detected.size(); i++) {
     edge_angle ea = edges_detected[i];
     if(ea.angle <= angleThreshold) break;
     edge->lines.push_back(new MLine(ea.v1, ea.v2));
   }
   if(includeBoundary){
-    for(unsigned int i = 0; i < edges_lonely.size(); i++) {
+    for(std::size_t i = 0; i < edges_lonely.size(); i++) {
       edge_angle ea = edges_lonely[i];
       edge->lines.push_back(new MLine(ea.v1, ea.v2));
     }
@@ -3177,7 +3177,7 @@ void GModel::classifyFaces(std::set<GFace *> &_faces)
 
   for(GModel::eiter it = GModel::current()->firstEdge();
       it != GModel::current()->lastEdge(); ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++)
       lines[(*it)->lines[i]] = *it;
   }
 
@@ -3187,7 +3187,7 @@ void GModel::classifyFaces(std::set<GFace *> &_faces)
     std::set<GFace *>::iterator it = _faces.begin();
     while(it != _faces.end()) {
       GFace *gf = *it;
-      for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+      for(std::size_t i = 0; i < gf->triangles.size(); i++) {
         tris.push_back(new MTri3(gf->triangles[i], 0));
         reverse_old[gf->triangles[i]] = gf;
       }
@@ -3213,7 +3213,7 @@ void GModel::classifyFaces(std::set<GFace *> &_faces)
       GModel::current()->add(gf);
       newf.push_back(gf);
 
-      for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+      for(std::size_t i = 0; i < gf->triangles.size(); i++) {
         replacedBy.insert(std::make_pair(reverse_old[gf->triangles[i]], gf));
       }
     }
@@ -3266,7 +3266,7 @@ void GModel::classifyFaces(std::set<GFace *> &_faces)
   for(std::map<std::pair<int, int>, GEdge *>::iterator ite = newEdges.begin();
       ite != newEdges.end(); ++ite) {
     std::list<MLine *> allSegments;
-    for(unsigned int i = 0; i < ite->second->lines.size(); i++)
+    for(std::size_t i = 0; i < ite->second->lines.size(); i++)
       allSegments.push_back(ite->second->lines[i]);
 
     while(!allSegments.empty()) {
@@ -3375,7 +3375,7 @@ void GModel::classifyFaces(std::set<GFace *> &_faces)
   for(fiter fit = fac.begin(); fit != fac.end(); ++fit) {
     std::set<MVertex *> _verts;
     (*fit)->mesh_vertices.clear();
-    for(unsigned int i = 0; i < (*fit)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*fit)->triangles.size(); i++) {
       for(int j = 0; j < 3; j++) {
         if((*fit)->triangles[i]->getVertex(j)->onWhat()->dim() > 1) {
           (*fit)->triangles[i]->getVertex(j)->setEntity(*fit);
@@ -3442,7 +3442,7 @@ void GModel::computeHomology()
       std::vector<int> dim;
 
       std::stringstream ss;
-      for(unsigned int i = 0; i < dim0.size(); i++) {
+      for(std::size_t i = 0; i < dim0.size(); i++) {
         int d = dim0.at(i);
         if(d >= 0 && d <= getDim()) {
           dim.push_back(d);
@@ -3469,14 +3469,14 @@ void GModel::computeHomology()
       else if(type == "Homology" && !homology->isHomologyComputed(dim)) {
         homology->findHomologyBasis(dim);
         Msg::Info("Homology space basis chains to save: %s", dims.c_str());
-        for(unsigned int i = 0; i < dim.size(); i++) {
+        for(std::size_t i = 0; i < dim.size(); i++) {
           homology->addChainsToModel(dim.at(i));
         }
       }
       else if(type == "Cohomology" && !homology->isCohomologyComputed(dim)) {
         homology->findCohomologyBasis(dim);
         Msg::Info("Cohomology space basis cochains to save: %s", dims.c_str());
-        for(unsigned int i = 0; i < dim.size(); i++) {
+        for(std::size_t i = 0; i < dim.size(); i++) {
           homology->addCochainsToModel(dim.at(i));
         }
       }
diff --git a/Geo/GModel.h b/Geo/GModel.h
index c5741c36e269498a88fa41a7478690f94d2c17fb..a4f60ff77194dfd8c23c18d1ca5e4f0a6cb3ab22 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -133,7 +133,7 @@ protected:
   std::map<std::pair<int, int>, std::string> physicalNames, elementaryNames;
 
   // the set of all used mesh partition numbers
-  unsigned int _numPartitions;
+  std::size_t _numPartitions;
 
 protected:
   void _createGEOInternals();
@@ -185,8 +185,6 @@ public:
   // elementary/physical name iterator
   typedef std::map<std::pair<int, int>, std::string>::iterator piter;
 
-  typedef std::set<GVertex *, GEntityLessThan>::size_type size_type;
-
 public:
   GModel(const std::string &name = "");
   virtual ~GModel();
@@ -271,10 +269,10 @@ public:
   void setVisibility(char val) { _visible = val; }
 
   // get the number of entities in this model
-  int getNumRegions() const { return regions.size(); }
-  int getNumFaces() const { return faces.size(); }
-  int getNumEdges() const { return edges.size(); }
-  size_type getNumVertices() const { return vertices.size(); }
+  std::size_t getNumRegions() const { return regions.size(); }
+  std::size_t getNumFaces() const { return faces.size(); }
+  std::size_t getNumEdges() const { return edges.size(); }
+  std::size_t getNumVertices() const { return vertices.size(); }
 
   // quickly check if the model is empty (i.e., if it contains no
   // entities)
@@ -435,12 +433,12 @@ public:
   int getMeshStatus(bool countDiscrete = true);
 
   // return the total number of elements in the mesh
-  int getNumMeshElements(int dim = -1) const;
-  int getNumMeshParentElements() const;
+  std::size_t getNumMeshElements(int dim = -1) const;
+  std::size_t getNumMeshParentElements() const;
 
   // get the number of each type of element in the mesh at the largest
   // dimension and return the dimension
-  int getNumMeshElements(unsigned c[6]);
+  std::size_t getNumMeshElements(unsigned c[6]);
 
   // access a mesh element by coordinates (using an octree search)
   MElement *getMeshElementByCoord(SPoint3 &p, int dim = -1, bool strict = true);
@@ -455,7 +453,7 @@ public:
   void setMeshElementIndex(MElement *e, int index);
 
   // return the total number of vertices in the mesh
-  int getNumMeshVertices(int dim = -1) const;
+  std::size_t getNumMeshVertices(int dim = -1) const;
 
   // recompute _vertexVectorCache if there is a dense vertex numbering or
   // _vertexMapCache if not.
@@ -499,7 +497,7 @@ public:
   void removeInvisibleElements();
 
   // the list of partitions
-  unsigned int getNumPartitions() const { return _numPartitions; }
+  std::size_t getNumPartitions() const { return _numPartitions; }
   void setNumPartitions(unsigned int npart) { _numPartitions = npart; }
 
   // partition the mesh
diff --git a/Geo/GModelCreateTopologyFromMesh.cpp b/Geo/GModelCreateTopologyFromMesh.cpp
index eb49739a905f980237d8193e928cd9f95434a7b4..9b6dbf7227d3f63185d2b226be31e5534b80c06f 100644
--- a/Geo/GModelCreateTopologyFromMesh.cpp
+++ b/Geo/GModelCreateTopologyFromMesh.cpp
@@ -54,7 +54,7 @@ std::vector<GEdge *> ensureSimplyConnectedEdge(GEdge *ge)
   _all.push_back(ge);
 
   // create vertex to edge connectivity : only To neighbors are considered ...
-  for(unsigned int i = 0; i < ge->lines.size(); i++) {
+  for(std::size_t i = 0; i < ge->lines.size(); i++) {
     _lines.insert(ge->lines[i]);
     for(int j = 0; j < 2; j++) {
       std::map<MVertex *, std::pair<MLine *, MLine *> >::iterator it =
@@ -134,7 +134,7 @@ void ensureManifoldFace(GFace *gf)
 
   std::set<MElement *> _allFaces;
 
-  for(unsigned int i = 0; i < gf->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gf->getNumMeshElements(); i++) {
     MElement *e = gf->getMeshElement(i);
     _allFaces.insert(e);
     for(int j = 0; j < e->getNumEdges(); j++) {
@@ -188,7 +188,7 @@ void ensureManifoldFace(GFace *gf)
   Msg::Info("Surface %d is non-manifold: splitting it in %d parts", gf->tag(),
             _sub.size());
 
-  for(unsigned int i = 0; i < _sub.size(); i++) {
+  for(std::size_t i = 0; i < _sub.size(); i++) {
     if(i == 0)
       assignFace(gf, _sub[i]);
     else {
@@ -205,7 +205,7 @@ void ensureManifoldFaces(GModel *gm)
   std::vector<GFace *> f;
   for(GModel::fiter it = gm->firstFace(); it != gm->lastFace(); it++)
     f.push_back(*it);
-  for(unsigned int i = 0; i < f.size(); i++) ensureManifoldFace(f[i]);
+  for(std::size_t i = 0; i < f.size(); i++) ensureManifoldFace(f[i]);
 }
 
 typedef std::map<MVertex *, std::set<GEdge *> > MVertexToGEdgesMap;
@@ -238,7 +238,7 @@ void createTopologyFromMesh1D(GModel *gm, int &num)
 
   for(GModel::eiter it = gm->firstEdge(); it != gm->lastEdge(); it++) {
     GEdge *ge = *it;
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       MLine *e = (*it)->lines[i];
       for(int j = 0; j < 2; j++) {
         MVertex *mv = e->getVertex(j);
@@ -387,7 +387,7 @@ void createTopologyFromMesh2D(GModel *gm, int &num)
 
   for(GModel::eiter it = gm->firstEdge(); it != gm->lastEdge(); it++) {
     GEdge *ge = *it;
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       topoEdge te(ge->lines[i], 0);
       tEdgeToGEdge[te] = ge;
     }
@@ -400,7 +400,7 @@ void createTopologyFromMesh2D(GModel *gm, int &num)
 
   for(GModel::fiter it = gm->firstFace(); it != gm->lastFace(); it++) {
     GFace *gf = *it;
-    for(unsigned int i = 0; i < (*it)->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++) {
       MElement *e = (*it)->getMeshElement(i);
       if(e->getDim() == 2) {
         for(int j = 0; j < e->getNumEdges(); j++) {
@@ -711,7 +711,7 @@ void GModel::createTopologyFromMeshNew()
   std::vector<GEntity *> entities;
   getEntities(entities);
   std::set<MVertex *> vs;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     vs.insert(entities[i]->mesh_vertices.begin(),
               entities[i]->mesh_vertices.end());
     entities[i]->mesh_vertices.clear();
diff --git a/Geo/GModelIO_BDF.cpp b/Geo/GModelIO_BDF.cpp
index 2e7585ff245e7d6660efa8745a05b14c151de8ee..f6312741ee65e06dc4ca186073156afbb68b5974 100644
--- a/Geo/GModelIO_BDF.cpp
+++ b/Geo/GModelIO_BDF.cpp
@@ -17,7 +17,7 @@
 
 static int getFormatBDF(char *buffer, int &keySize)
 {
-  for(unsigned int i = 0; i < strlen(buffer); i++) {
+  for(std::size_t i = 0; i < strlen(buffer); i++) {
     if(buffer[i] == ',') { // free fields
       if(buffer[keySize] == '*') { // will contine on next line
         keySize = i;
@@ -102,7 +102,7 @@ static int readVertexBDF(FILE *fp, char *buffer, int keySize, int *num,
     strncpy(tmp[2], &buffer[40], 16);
     strncpy(tmp[3], &buffer[56], 16);
     char buffer2[256];
-    for(unsigned int i = 0; i < sizeof(buffer2); i++) buffer2[i] = '\0';
+    for(std::size_t i = 0; i < sizeof(buffer2); i++) buffer2[i] = '\0';
     if(!fgets(buffer2, sizeof(buffer2), fp)) return 0;
     strncpy(tmp[4], &buffer2[8], 16);
     break;
@@ -130,7 +130,7 @@ static void readLineBDF(char *buffer, int format, std::vector<char *> &fields)
   int nmax = (format == 2) ? 4 : 8; // max num of (center) fields per line
 
   if(format <= 0) { // free fields
-    for(unsigned int i = 0; i < strlen(buffer); i++) {
+    for(std::size_t i = 0; i < strlen(buffer); i++) {
       if(buffer[i] == ',') fields.push_back(&buffer[i + 1]);
     }
   }
@@ -151,7 +151,7 @@ static int readElementBDF(FILE *fp, char *buffer, int keySize, int numVertices,
   std::vector<char *> fields;
   int format = getFormatBDF(buffer, keySize);
 
-  for(unsigned int i = 0; i < sizeof(buffer2); i++)
+  for(std::size_t i = 0; i < sizeof(buffer2); i++)
     buffer2[i] = buffer3[i] = '\0';
 
   readLineBDF(buffer, format, fields);
@@ -183,7 +183,7 @@ static int readElementBDF(FILE *fp, char *buffer, int keySize, int numVertices,
   num = atoi(tmp);
   strncpy(tmp, fields[1], cmax);
   region = atoi(tmp);
-  for(unsigned int i = 2; i < fields.size(); i++) {
+  for(std::size_t i = 2; i < fields.size(); i++) {
     strncpy(tmp, fields[i], cmax);
     n[i - 2] = atoi(tmp);
   }
@@ -217,7 +217,7 @@ int GModel::readBDF(const std::string &name)
   // nodes can be defined after elements, so parse the file twice
 
   while(!feof(fp)) {
-    for(unsigned int i = 0; i < sizeof(buffer); i++) buffer[i] = '\0';
+    for(std::size_t i = 0; i < sizeof(buffer); i++) buffer[i] = '\0';
     if(!fgets(buffer, sizeof(buffer), fp)) break;
     if(buffer[0] != '$') { // skip comments
       if(!strncmp(buffer, "GRID", 4)) {
@@ -232,7 +232,7 @@ int GModel::readBDF(const std::string &name)
 
   rewind(fp);
   while(!feof(fp)) {
-    for(unsigned int i = 0; i < sizeof(buffer); i++) buffer[i] = '\0';
+    for(std::size_t i = 0; i < sizeof(buffer); i++) buffer[i] = '\0';
     if(!fgets(buffer, sizeof(buffer), fp)) break;
     if(buffer[0] != '$') { // skip comments
       int num, region;
@@ -350,13 +350,13 @@ int GModel::writeBDF(const std::string &name, int format, int elementTagType,
   getEntities(entities);
 
   // nodes
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeBDF(fp, format, scalingFactor);
 
   // elements
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < entities.size(); i++)
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
       int numPhys = entities[i]->physicals.size();
       if(saveAll || numPhys)
         entities[i]->getMeshElement(j)->writeBDF(
diff --git a/Geo/GModelIO_CELUM.cpp b/Geo/GModelIO_CELUM.cpp
index 53579a51abccfac848b1eb5001fa6fedebb6098d..95ccf44faafa3db2ba7f1813aa5a00b7229d1303 100644
--- a/Geo/GModelIO_CELUM.cpp
+++ b/Geo/GModelIO_CELUM.cpp
@@ -42,7 +42,7 @@ int GModel::writeCELUM(const std::string &name, bool saveAll,
     if(!saveAll && f->physicals.empty()) continue;
     numf += f->triangles.size();
     std::set<MVertex *> vset;
-    for(unsigned int i = 0; i < f->triangles.size(); i++) {
+    for(std::size_t i = 0; i < f->triangles.size(); i++) {
       for(int j = 0; j < 3; j++) vset.insert(f->triangles[i]->getVertex(j));
     }
     nums += vset.size();
@@ -83,7 +83,7 @@ int GModel::writeCELUM(const std::string &name, bool saveAll,
     if(!saveAll && f->physicals.empty()) continue;
     std::vector<MVertex *> vvec;
     std::map<MVertex *, CelumInfo> vmap;
-    for(unsigned int i = 0; i < f->triangles.size(); i++) {
+    for(std::size_t i = 0; i < f->triangles.size(); i++) {
       fprintf(fpf, "%d \"face %d\"", idf++, f->tag());
       for(int j = 0; j < 3; j++) {
         MVertex *v = f->triangles[i]->getVertex(j);
@@ -105,7 +105,7 @@ int GModel::writeCELUM(const std::string &name, bool saveAll,
       }
       fprintf(fpf, "\n\n");
     }
-    for(unsigned int i = 0; i < vvec.size(); i++) {
+    for(std::size_t i = 0; i < vvec.size(); i++) {
       MVertex *v = vvec[i];
       std::map<MVertex *, CelumInfo>::iterator it = vmap.find(v);
       fprintf(fps, "%d %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n\n",
diff --git a/Geo/GModelIO_CGNS.cpp b/Geo/GModelIO_CGNS.cpp
index 6f1acfbc38ced01f9a31e57f1c66d5c7a209e09c..96e88f657f61d0042460c40079549913d6037120 100644
--- a/Geo/GModelIO_CGNS.cpp
+++ b/Geo/GModelIO_CGNS.cpp
@@ -3074,7 +3074,7 @@ int write_CGNS_zones(GModel &model, const int zoneDefinition, const int numZone,
                 if(physical_num.size() == 0) {
                   physical_num = vertBo.vertex->onWhat()->physicals;
                 }
-                for(unsigned int ii = 0; ii < physical_num.size(); ++ii) {
+                for(std::size_t ii = 0; ii < physical_num.size(); ++ii) {
                   if(physical_name == "") {
                     physical_name = model.getPhysicalName(model.getDim() - 1,
                                                           physical_num[ii]);
@@ -3296,14 +3296,14 @@ static int isInterfaceFace(GModel *const model, MVertex *v0, MVertex *v1, MVerte
       regions.push_back(*it);
     }
 
-  for(unsigned int iRegion = 0; iRegion < regions.size(); iRegion++) {
+  for(std::size_t iRegion = 0; iRegion < regions.size(); iRegion++) {
     GRegion *gr = regions[iRegion];
     std::vector<GFace *> faces = gr->faces();
     if(faces.size() != 6) {
       Msg::Warning("Error in Number of faces in Structured Mesh Region (!=6) ");
     }
 
-    for(unsigned int iFace = 0; iFace < faces.size(); iFace++) {
+    for(std::size_t iFace = 0; iFace < faces.size(); iFace++) {
       std::vector<GVertex *> vf = faces[iFace]->vertices();
       if(vf.size() != 4) {
         Msg::Warning(
@@ -3436,7 +3436,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
      */
     if(meshDim == 3) {
       int numTotFaces(0);
-      for(unsigned int i = 0; i < regions.size(); i++) {
+      for(std::size_t i = 0; i < regions.size(); i++) {
         std::vector<GFace *> const &faces = regions[i]->faces();
         numTotFaces += faces.size();
       }
@@ -3449,7 +3449,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
      */
     if(meshDim == 2) {
       int numTotEdges(0);
-      for(unsigned int i = 0; i < faces.size(); i++) {
+      for(std::size_t i = 0; i < faces.size(); i++) {
         std::vector<GEdge *> const &edges = faces[i]->edges();
         numTotEdges += edges.size();
       }
@@ -3464,7 +3464,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
                    "Normals are not consistent,");
       Msg::Warning("you may need to reverse the order of the vertices for "
                    "'Transfinite Surface' in your .geo file.");
-      for(unsigned int iFace = 0; iFace < faces.size(); iFace++) {
+      for(std::size_t iFace = 0; iFace < faces.size(); iFace++) {
         GFace *gf = faces[iFace];
         double *Face_Orientation = NULL;
         Face_Orientation = new double[3];
@@ -3482,7 +3482,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
                    "below - if Volume mesh orientations are not consistent,");
       Msg::Warning("you may need to change the order of the vertices for "
                    "'Transfinite Volume' in your .geo file.");
-      for(unsigned int iRegion = 0; iRegion < regions.size(); iRegion++) {
+      for(std::size_t iRegion = 0; iRegion < regions.size(); iRegion++) {
         GRegion *gr = regions[iRegion];
         int volOri = volumeOrientationTransfinite(gr);
         Msg::Info("iRegion= %i \t Orientation=   %i", iRegion, volOri);
@@ -3520,7 +3520,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
       static int patchIndex(-1);
       static int interfaceIndex(-1);
 
-      for(unsigned int iFace = 0; iFace < faces.size(); iFace++) {
+      for(std::size_t iFace = 0; iFace < faces.size(); iFace++) {
         GFace *gf = faces[iFace];
         std::vector<GEdge *> const &edges = gf->edges();
         if(edges.size() != 4) {
@@ -3564,8 +3564,8 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
         dBuffer.resize(cgZoneSize[0] * cgZoneSize[1]);
 
         // x-coordinates for this zone
-        for(unsigned int k = 0; k < gf->transfinite_vertices[0].size(); k++) {
-          for(unsigned int j = 0; j < gf->transfinite_vertices.size(); j++) {
+        for(std::size_t k = 0; k < gf->transfinite_vertices[0].size(); k++) {
+          for(std::size_t j = 0; j < gf->transfinite_vertices.size(); j++) {
             MVertex *v = gf->transfinite_vertices[j][k];
             dBuffer[cgZoneSize[0] * k + j] = v->x() * scalingFactor;
           }
@@ -3576,8 +3576,8 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
           return cgnsErr();
 
         // y-coordinates for this zone
-        for(unsigned int k = 0; k < gf->transfinite_vertices[0].size(); k++) {
-          for(unsigned int j = 0; j < gf->transfinite_vertices.size(); j++) {
+        for(std::size_t k = 0; k < gf->transfinite_vertices[0].size(); k++) {
+          for(std::size_t j = 0; j < gf->transfinite_vertices.size(); j++) {
             MVertex *v = gf->transfinite_vertices[j][k];
             dBuffer[cgZoneSize[0] * k + j] = v->y() * scalingFactor;
           }
@@ -3590,8 +3590,8 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
         // z-coordinates for this zone - writes only Z=0 value (even if the mesh
         // is in different Z)
         if(vectorDim == 3) {
-          for(unsigned int k = 0; k < gf->transfinite_vertices[0].size(); k++) {
-            for(unsigned int j = 0; j < gf->transfinite_vertices.size(); j++) {
+          for(std::size_t k = 0; k < gf->transfinite_vertices[0].size(); k++) {
+            for(std::size_t j = 0; j < gf->transfinite_vertices.size(); j++) {
               // MVertex *v = gf->transfinite_vertices[j][k];
               // dBuffer[cgZoneSize[0]*k+j] = v->z() * scalingFactor ;
               dBuffer[cgZoneSize[0] * k + j] = 0;
@@ -3618,7 +3618,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
         Point_Donor_Range = new cgsize_t[4];
         Transform = new int[2];
 
-        for(unsigned int iBc = 0; iBc < 4; ++iBc) {
+        for(std::size_t iBc = 0; iBc < 4; ++iBc) {
           interfaceEdge = 0;
           interfaceWritten = 0;
 
@@ -3699,7 +3699,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
 
           if(numInterfaceEdges >
              0) { // Note: An Edge can have interface with only one more edge
-            for(unsigned int jFace = 0; jFace < faces.size(); jFace++) {
+            for(std::size_t jFace = 0; jFace < faces.size(); jFace++) {
               if(jFace != iFace) {
                 interfaceEdge = 0;
                 GFace *gf2 = faces[jFace];
@@ -3890,7 +3890,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
       static int patchIndex(-1);
       static int interfaceIndex(-1);
 
-      for(unsigned int iRegion = 0; iRegion < regions.size(); iRegion++) {
+      for(std::size_t iRegion = 0; iRegion < regions.size(); iRegion++) {
         GRegion *gr = regions[iRegion];
         std::vector<GFace *> faces = gr->faces();
         if(faces.size() != 6) {
@@ -3942,11 +3942,11 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
         dBuffer.resize(imax * jmax * kmax);
 
         // x-coordinates for this zone
-        for(unsigned int kk = 0; kk < gr->transfinite_vertices[0][0].size();
+        for(std::size_t kk = 0; kk < gr->transfinite_vertices[0][0].size();
             kk++) {
-          for(unsigned int jj = 0; jj < gr->transfinite_vertices[0].size();
+          for(std::size_t jj = 0; jj < gr->transfinite_vertices[0].size();
               jj++) {
-            for(unsigned int ii = 0; ii < gr->transfinite_vertices.size();
+            for(std::size_t ii = 0; ii < gr->transfinite_vertices.size();
                 ii++) {
               MVertex *v = gr->transfinite_vertices[ii][jj][kk];
               dBuffer[imax * jmax * kk + imax * jj + ii] =
@@ -3959,11 +3959,11 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
           return cgnsErr();
 
         // y-coordinates for this zone
-        for(unsigned int kk = 0; kk < gr->transfinite_vertices[0][0].size();
+        for(std::size_t kk = 0; kk < gr->transfinite_vertices[0][0].size();
             kk++) {
-          for(unsigned int jj = 0; jj < gr->transfinite_vertices[0].size();
+          for(std::size_t jj = 0; jj < gr->transfinite_vertices[0].size();
               jj++) {
-            for(unsigned int ii = 0; ii < gr->transfinite_vertices.size();
+            for(std::size_t ii = 0; ii < gr->transfinite_vertices.size();
                 ii++) {
               MVertex *v = gr->transfinite_vertices[ii][jj][kk];
               dBuffer[imax * jmax * kk + imax * jj + ii] =
@@ -3976,11 +3976,11 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
           return cgnsErr();
 
         // z-coordinates for this zone
-        for(unsigned int kk = 0; kk < gr->transfinite_vertices[0][0].size();
+        for(std::size_t kk = 0; kk < gr->transfinite_vertices[0][0].size();
             kk++) {
-          for(unsigned int jj = 0; jj < gr->transfinite_vertices[0].size();
+          for(std::size_t jj = 0; jj < gr->transfinite_vertices[0].size();
               jj++) {
-            for(unsigned int ii = 0; ii < gr->transfinite_vertices.size();
+            for(std::size_t ii = 0; ii < gr->transfinite_vertices.size();
                 ii++) {
               MVertex *v = gr->transfinite_vertices[ii][jj][kk];
               dBuffer[imax * jmax * kk + imax * jj + ii] =
@@ -4007,7 +4007,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
         Point_Donor_Range = new cgsize_t[6];
         Transform = new int[3];
 
-        for(unsigned int iBc = 0; iBc < 6; ++iBc) {
+        for(std::size_t iBc = 0; iBc < 6; ++iBc) {
           interfaceFace = 0;
           interfaceFaceWritten = 0;
 
@@ -4152,7 +4152,7 @@ int GModel::writeCGNS(const std::string &name, int zoneDefinition,
           if(numInterfaceFaces >
              0) { // Note: An Face can have interface with only one ore Face
             if(isInterfaceFace(this, v0Tmp, v1Tmp, v2Tmp, v3Tmp)) {
-              for(unsigned int jRegion = 0; jRegion < regions.size();
+              for(std::size_t jRegion = 0; jRegion < regions.size();
                   jRegion++) {
                 if(jRegion != iRegion) {
                   interfaceFace = 0;
diff --git a/Geo/GModelIO_DIFF.cpp b/Geo/GModelIO_DIFF.cpp
index 1dfa55eac854117520b8ba7f029bfd7fc7bec1ba..806ae4bdd24744375e24ee5ad2b9b6a2f4437bfb 100644
--- a/Geo/GModelIO_DIFF.cpp
+++ b/Geo/GModelIO_DIFF.cpp
@@ -434,7 +434,7 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
         itf++) {
       GFace *gf = *itf;
       boundaryIndicators.push_back(gf->tag());
-      for(unsigned int i = 0; i < gf->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < gf->getNumMeshElements(); i++) {
         MElement *e = gf->getMeshElement(i);
         for(std::size_t j = 0; j < e->getNumVertices(); j++) {
           MVertex *v = e->getVertex(j);
@@ -457,16 +457,16 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
 
   // find max dimension of mesh elements we need to save
   int dim = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->physicals.size() || saveAll)
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++)
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++)
         dim = std::max(dim, entities[i]->getMeshElement(j)->getDim());
 
   // loop over all elements we need to save
   std::size_t numElements = 0, maxNumNodesPerElement = 0;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->physicals.size() || saveAll) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         MElement *e = entities[i]->getMeshElement(j);
         if(e->getStringForDIFF() && e->getDim() == dim) {
           numElements++;
@@ -502,8 +502,8 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
   fprintf(fp, "#\n");
 
   // write mesh vertices
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int 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() > 0) {
         v->writeDIFF(fp, binary, scalingFactor);
@@ -528,9 +528,9 @@ int GModel::writeDIFF(const std::string &name, bool binary, bool saveAll,
 
   // write mesh elements
   int num = 0;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->physicals.size() || saveAll) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         MElement *e = entities[i]->getMeshElement(j);
         if(e->getStringForDIFF() && e->getDim() == dim)
           e->writeDIFF(fp, ++num, binary, entities[i]->tag());
diff --git a/Geo/GModelIO_GEO.cpp b/Geo/GModelIO_GEO.cpp
index 0c87a3d5c5c3b15bdf7f932696a05223a3b13e9f..649ac1a33736849fdcfaaee69df382657c11ab7d 100644
--- a/Geo/GModelIO_GEO.cpp
+++ b/Geo/GModelIO_GEO.cpp
@@ -156,7 +156,7 @@ bool GEO_Internals::addLine(int &tag, const std::vector<int> &pointTags)
   }
   if(tag < 0) tag = getMaxTag(1) + 1;
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < pointTags.size(); i++) {
+  for(std::size_t i = 0; i < pointTags.size(); i++) {
     int t = pointTags[i];
     List_Add(tmp, &t);
   }
@@ -246,7 +246,7 @@ bool GEO_Internals::addSpline(int &tag, const std::vector<int> &pointTags)
   }
   if(tag < 0) tag = getMaxTag(1) + 1;
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < pointTags.size(); i++) {
+  for(std::size_t i = 0; i < pointTags.size(); i++) {
     int t = pointTags[i];
     List_Add(tmp, &t);
   }
@@ -270,7 +270,7 @@ bool GEO_Internals::addBezier(int &tag, const std::vector<int> &pointTags)
     return false;
   }
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < pointTags.size(); i++) {
+  for(std::size_t i = 0; i < pointTags.size(); i++) {
     int t = pointTags[i];
     List_Add(tmp, &t);
   }
@@ -295,7 +295,7 @@ bool GEO_Internals::addBSpline(int &tag, const std::vector<int> &pointTags,
   }
   if(tag < 0) tag = getMaxTag(1) + 1;
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < pointTags.size(); i++) {
+  for(std::size_t i = 0; i < pointTags.size(); i++) {
     int t = pointTags[i];
     List_Add(tmp, &t);
   }
@@ -306,7 +306,7 @@ bool GEO_Internals::addBSpline(int &tag, const std::vector<int> &pointTags,
   else {
     int order = seqknots.size() - pointTags.size() - 1;
     List_T *knotsList = List_Create(2, 2, sizeof(double));
-    for(unsigned int i = 0; i < seqknots.size(); i++) {
+    for(std::size_t i = 0; i < seqknots.size(); i++) {
       double d = seqknots[i];
       List_Add(knotsList, &d);
     }
@@ -327,7 +327,7 @@ bool GEO_Internals::addLineLoop(int &tag, const std::vector<int> &curveTags)
   }
   if(tag < 0) tag = getMaxTag(-1) + 1;
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < curveTags.size(); i++) {
+  for(std::size_t i = 0; i < curveTags.size(); i++) {
     int t = curveTags[i];
     List_Add(tmp, &t);
   }
@@ -351,7 +351,7 @@ bool GEO_Internals::addPlaneSurface(int &tag, const std::vector<int> &wireTags)
     return false;
   }
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < wireTags.size(); i++) {
+  for(std::size_t i = 0; i < wireTags.size(); i++) {
     int t = wireTags[i];
     List_Add(tmp, &t);
   }
@@ -407,7 +407,7 @@ bool GEO_Internals::addSurfaceFilling(int &tag,
     return false;
   }
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < wireTags.size(); i++) {
+  for(std::size_t i = 0; i < wireTags.size(); i++) {
     int t = wireTags[i];
     List_Add(tmp, &t);
   }
@@ -436,7 +436,7 @@ bool GEO_Internals::addSurfaceLoop(int &tag,
   if(tag < 0) tag = getMaxTag(-2) + 1;
 
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < surfaceTags.size(); i++) {
+  for(std::size_t i = 0; i < surfaceTags.size(); i++) {
     int t = surfaceTags[i];
     List_Add(tmp, &t);
   }
@@ -456,7 +456,7 @@ bool GEO_Internals::addVolume(int &tag, const std::vector<int> &shellTags)
   if(tag < 0) tag = getMaxTag(3) + 1;
 
   List_T *tmp = List_Create(2, 2, sizeof(int));
-  for(unsigned int i = 0; i < shellTags.size(); i++) {
+  for(std::size_t i = 0; i < shellTags.size(); i++) {
     int t = shellTags[i];
     List_Add(tmp, &t);
   }
@@ -479,7 +479,7 @@ bool GEO_Internals::_extrude(int mode,
   List_T *in = List_Create(inDimTags.size() + 1, 10, sizeof(Shape));
   List_T *out = List_Create(3 * inDimTags.size() + 1, 10, sizeof(Shape));
 
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     Shape s;
@@ -564,7 +564,7 @@ bool GEO_Internals::_transform(int mode,
                                double c, double d)
 {
   List_T *list = List_Create(dimTags.size() + 1, 10, sizeof(Shape));
-  for(unsigned int i = 0; i < dimTags.size(); i++) {
+  for(std::size_t i = 0; i < dimTags.size(); i++) {
     int dim = dimTags[i].first;
     int tag = dimTags[i].second;
     Shape s;
@@ -615,7 +615,7 @@ bool GEO_Internals::splitCurve(int tag, const std::vector<int> &pointTags,
                                std::vector<int> &curveTags)
 {
   List_T *tmp = List_Create(10, 10, sizeof(int));
-  for(unsigned int i = 0; i < pointTags.size(); i++) {
+  for(std::size_t i = 0; i < pointTags.size(); i++) {
     int t = pointTags[i];
     List_Add(tmp, &t);
   }
@@ -638,7 +638,7 @@ bool GEO_Internals::intersectCurvesWithSurface(
 {
   List_T *curves = List_Create(10, 10, sizeof(double));
   List_T *shapes = List_Create(10, 10, sizeof(Shape));
-  for(unsigned int i = 0; i < curveTags.size(); i++) {
+  for(std::size_t i = 0; i < curveTags.size(); i++) {
     double d = curveTags[i];
     List_Add(curves, &d);
   }
@@ -662,7 +662,7 @@ bool GEO_Internals::copy(const std::vector<std::pair<int, int> > &inDimTags,
                          std::vector<std::pair<int, int> > &outDimTags)
 {
   bool ret = true;
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     if(dim == 0) {
@@ -732,7 +732,7 @@ bool GEO_Internals::remove(int dim, int tag, bool recursive)
 bool GEO_Internals::remove(const std::vector<std::pair<int, int> > &dimTags,
                            bool recursive)
 {
-  for(unsigned int i = 0; i < dimTags.size(); i++)
+  for(std::size_t i = 0; i < dimTags.size(); i++)
     remove(dimTags[i].first, dimTags[i].second, recursive);
   return true;
 }
@@ -781,7 +781,7 @@ bool GEO_Internals::modifyPhysicalGroup(int dim, int tag, int op,
   }
   else if(op == 0) {
     List_T *tmp = List_Create(10, 10, sizeof(int));
-    for(unsigned int i = 0; i < tags.size(); i++) {
+    for(std::size_t i = 0; i < tags.size(); i++) {
       int t = tags[i];
       List_Add(tmp, &t);
     }
@@ -790,13 +790,13 @@ bool GEO_Internals::modifyPhysicalGroup(int dim, int tag, int op,
     List_Add(PhysicalGroups, &p);
   }
   else if(op == 1) {
-    for(unsigned int i = 0; i < tags.size(); i++) {
+    for(std::size_t i = 0; i < tags.size(); i++) {
       int t = tags[i];
       List_Add(p->Entities, &t);
     }
   }
   else if(op == 2) {
-    for(unsigned int i = 0; i < tags.size(); i++) {
+    for(std::size_t i = 0; i < tags.size(); i++) {
       int t = tags[i];
       List_Suppress(p->Entities, &t, fcmp_int);
     }
@@ -833,7 +833,7 @@ bool GEO_Internals::mergeVertices(const std::vector<int> &tags)
   }
 
   double x = target->Pos.X, y = target->Pos.Y, z = target->Pos.Z;
-  for(unsigned int i = 1; i < tags.size(); i++) {
+  for(std::size_t i = 1; i < tags.size(); i++) {
     Vertex *source = FindPoint(tags[i]);
     if(!source) {
       Msg::Error("Could not find GEO point with tag %d", tags[i]);
@@ -925,7 +925,7 @@ void GEO_Internals::setTransfiniteSurface(int tag, int arrangement,
       List_Reset(s->TrsfPoints);
       if(cornerTags.empty() || cornerTags.size() == 3 ||
          cornerTags.size() == 4) {
-        for(unsigned int j = 0; j < cornerTags.size(); j++) {
+        for(std::size_t j = 0; j < cornerTags.size(); j++) {
           Vertex *v = FindPoint(std::abs(cornerTags[j]));
           if(v)
             List_Add(s->TrsfPoints, &v);
@@ -961,7 +961,7 @@ void GEO_Internals::setTransfiniteVolume(int tag,
       List_Reset(v->TrsfPoints);
       if(cornerTags.empty() || cornerTags.size() == 6 ||
          cornerTags.size() == 8) {
-        for(unsigned int i = 0; i < cornerTags.size(); i++) {
+        for(std::size_t i = 0; i < cornerTags.size(); i++) {
           Vertex *vert = FindPoint(std::abs(cornerTags[i]));
           if(vert)
             List_Add(v->TrsfPoints, &vert);
@@ -1267,7 +1267,7 @@ void GEO_Internals::synchronize(GModel *model)
     int dim = it->first;
     std::vector<int> compound = it->second;
     std::vector<GEntity *> ents;
-    for(unsigned int i = 0; i < compound.size(); i++) {
+    for(std::size_t i = 0; i < compound.size(); i++) {
       int tag = compound[i];
       GEntity *ent = NULL;
       switch(dim) {
@@ -1278,7 +1278,7 @@ void GEO_Internals::synchronize(GModel *model)
       }
       if(ent) ents.push_back(ent);
     }
-    for(unsigned int i = 0; i < ents.size(); i++) {
+    for(std::size_t i = 0; i < ents.size(); i++) {
       ents[i]->_compound = ents;
     }
   }
@@ -1437,7 +1437,7 @@ public:
       fprintf(geo, "(\"%s\") = {", newName.c_str());
     else
       fprintf(geo, "(%d) = {", g.first);
-    for(unsigned int i = 0; i < g.second.size(); i++) {
+    for(std::size_t i = 0; i < g.second.size(); i++) {
       if(i) fprintf(geo, ", ");
       fprintf(geo, "%d", g.second[i]->tag());
     }
@@ -1526,7 +1526,7 @@ int GModel::writeGEO(const std::string &name, bool printLabels,
   for(std::map<std::string, gmsh_yysymbol>::iterator it =
         gmsh_yysymbols.begin();
       it != gmsh_yysymbols.end(); ++it)
-    for(unsigned int i = 0; i < it->second.value.size(); i++)
+    for(std::size_t i = 0; i < it->second.value.size(); i++)
       labels[(int)it->second.value[i]] = it->first;
 #endif
 
diff --git a/Geo/GModelIO_INP.cpp b/Geo/GModelIO_INP.cpp
index 6e3cedc52a7f0652c911c348370b3f153205089a..8f0e8d4153bb29d6efc93a3ed73880bedc81f8d7 100644
--- a/Geo/GModelIO_INP.cpp
+++ b/Geo/GModelIO_INP.cpp
@@ -27,7 +27,7 @@ static void writeElementsINP(FILE *fp, GEntity *ge, std::vector<T *> &elements,
         (ge->dim() == 1) ? "Line" :
         "Point"; // currently unused
       fprintf(fp, "*ELEMENT, type=%s, ELSET=%s%d\n", typ, str, ge->tag());
-      for(unsigned int i = 0; i < elements.size(); i++)
+      for(std::size_t i = 0; i < elements.size(); i++)
         elements[i]->writeINP(fp, elements[i]->getNum());
     }
   }
@@ -46,7 +46,7 @@ static std::string physicalName(GModel *m, int dim, int num)
             num);
     name = tmp;
   }
-  for(unsigned int i = 0; i < name.size(); i++)
+  for(std::size_t i = 0; i < name.size(); i++)
     if(name[i] == ' ') name[i] = '_';
   return name;
 }
@@ -70,8 +70,8 @@ int GModel::writeINP(const std::string &name, bool saveAll,
   fprintf(fp, " %s\n", name.c_str());
 
   fprintf(fp, "*NODE\n");
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeINP(fp, scalingFactor);
 
   fprintf(fp, "******* E L E M E N T S *************\n");
@@ -104,8 +104,8 @@ int GModel::writeINP(const std::string &name, bool saveAll,
       fprintf(fp, "*ELSET,ELSET=%s\n",
               physicalName(this, dim, it->first).c_str());
       int n = 0;
-      for(unsigned int i = 0; i < entities.size(); i++) {
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++) {
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           MElement *e = entities[i]->getMeshElement(j);
           if(n && !(n % 10)) fprintf(fp, "\n");
           fprintf(fp, "%d, ", e->getNum());
@@ -124,8 +124,8 @@ int GModel::writeINP(const std::string &name, bool saveAll,
           it != groups[dim].end(); it++) {
         std::set<MVertex *> nodes;
         std::vector<GEntity *> &entities = it->second;
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             for(std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
diff --git a/Geo/GModelIO_IR3.cpp b/Geo/GModelIO_IR3.cpp
index 586c00f86d1a5a3f3d0ddd1ab947009c3a1111e8..63790263fefc92696f75a5d91d1c18a988195247 100644
--- a/Geo/GModelIO_IR3.cpp
+++ b/Geo/GModelIO_IR3.cpp
@@ -33,8 +33,8 @@ int GModel::writeIR3(const std::string &name, int elementTagType, bool saveAll,
   std::vector<GEntity *> entities;
   getEntities(entities);
 
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       if(entities[i]->mesh_vertices[j]->getIndex() >= 0)
         fprintf(fp, "%d %.16g %.16g %.16g\n",
                 entities[i]->mesh_vertices[j]->getIndex(),
@@ -46,7 +46,7 @@ int GModel::writeIR3(const std::string &name, int elementTagType, bool saveAll,
   for(fiter it = firstFace(); it != lastFace(); ++it) {
     int numPhys = (*it)->physicals.size();
     if(saveAll || numPhys)
-      for(unsigned int i = 0; i < (*it)->getNumMeshElements(); i++)
+      for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++)
         (*it)->getMeshElement(i)->writeIR3(fp, elementTagType, iElement++,
                                            (*it)->tag(),
                                            numPhys ? (*it)->physicals[0] : 0);
@@ -56,7 +56,7 @@ int GModel::writeIR3(const std::string &name, int elementTagType, bool saveAll,
   for(riter it = firstRegion(); it != lastRegion(); ++it) {
     int numPhys = (*it)->physicals.size();
     if(saveAll || numPhys)
-      for(unsigned int i = 0; i < (*it)->getNumMeshElements(); i++)
+      for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++)
         (*it)->getMeshElement(i)->writeIR3(fp, elementTagType, iElement++,
                                            (*it)->tag(),
                                            numPhys ? (*it)->physicals[0] : 0);
diff --git a/Geo/GModelIO_KEY.cpp b/Geo/GModelIO_KEY.cpp
index f21cbaf8ddda9948d3914e55f6cd3d6e35025a2e..f77fa48926525c9e12ba7f4ec7206bf655f8a525 100644
--- a/Geo/GModelIO_KEY.cpp
+++ b/Geo/GModelIO_KEY.cpp
@@ -25,7 +25,7 @@ static std::string physicalName(GModel *m, int dim, int num)
             num);
     name = tmp;
   }
-  for(unsigned int i = 0; i < name.size(); i++)
+  for(std::size_t i = 0; i < name.size(); i++)
     if(name[i] == ' ') name[i] = '_';
   return name;
 }
@@ -43,7 +43,7 @@ static void writeElementsKEY(FILE *fp, GEntity *ge, std::vector<T *> &elements,
       fprintf(fp, "*ELEMENT%s\n$#SET_ELEMENT=%s%d\n", typ,
               physicalName(ge->model(), ge->dim(), ge->tag()).c_str(),
               ge->tag());
-      for(unsigned int i = 0; i < elements.size(); i++)
+      for(std::size_t i = 0; i < elements.size(); i++)
         elements[i]->writeKEY(fp, pid, elements[i]->getNum());
     }
   }
@@ -68,8 +68,8 @@ int GModel::writeKEY(const std::string &name, int saveAll,
   fprintf(fp, " %s\n", name.c_str());
 
   fprintf(fp, "*NODE\n");
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeKEY(fp, scalingFactor);
 
   if(!(saveAll & 0x2)) /* save or ignore Vertex, not in GUI */
@@ -106,8 +106,8 @@ int GModel::writeKEY(const std::string &name, int saveAll,
           it != groups[dim].end(); it++) {
         std::vector<GEntity *> &entities = it->second;
         int n = 0;
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             if(!n) {
               const char *str = (e->getDim() == 3) ?
@@ -138,8 +138,8 @@ int GModel::writeKEY(const std::string &name, int saveAll,
           it != groups[dim].end(); it++) {
         std::set<MVertex *> nodes;
         std::vector<GEntity *> &entities = it->second;
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             for(std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
diff --git a/Geo/GModelIO_MAIL.cpp b/Geo/GModelIO_MAIL.cpp
index 63ef2d6c32e08a43db1020e48b485634e73a7155..dcbd4ca2971e1da52de003fd60fbbd62b362db1d 100644
--- a/Geo/GModelIO_MAIL.cpp
+++ b/Geo/GModelIO_MAIL.cpp
@@ -30,8 +30,8 @@ int GModel::writeMAIL(const std::string &name, bool saveAll,
 
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int 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];
       fprintf(fp, " %19.10E %19.10E %19.10E\n", v->x() * scalingFactor,
               v->y() * scalingFactor, v->z() * scalingFactor);
@@ -40,7 +40,7 @@ int GModel::writeMAIL(const std::string &name, bool saveAll,
 
   for(fiter it = firstFace(); it != lastFace(); ++it) {
     if(saveAll || (*it)->physicals.size()) {
-      for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
         MTriangle *t = (*it)->triangles[i];
         fprintf(fp, " %d %d %d\n", t->getVertex(0)->getIndex(),
                 t->getVertex(1)->getIndex(), t->getVertex(2)->getIndex());
@@ -51,7 +51,7 @@ int GModel::writeMAIL(const std::string &name, bool saveAll,
   // TODO write edges (with signs)
   for(fiter it = firstFace(); it != lastFace(); ++it) {
     if(saveAll || (*it)->physicals.size()) {
-      for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
         // MTriangle *t = (*it)->triangles[i];
         fprintf(fp, " %d %d %d\n", 0, 0, 0);
       }
diff --git a/Geo/GModelIO_MATLAB.cpp b/Geo/GModelIO_MATLAB.cpp
index 06759b9fc8e3a1f4830995d49870cf33c9137ab2..dfa7a419dc94649319d6ca27609c0c3613efed75 100644
--- a/Geo/GModelIO_MATLAB.cpp
+++ b/Geo/GModelIO_MATLAB.cpp
@@ -23,7 +23,7 @@ void writeElementsMATLAB(FILE *fp, const GEntity *entity, int filetype,
                          bool binary, int physical)
 {
   if(filetype != 0) return;
-  for(unsigned int j = 0; j < entity->getNumMeshElements(); j++) {
+  for(std::size_t j = 0; j < entity->getNumMeshElements(); j++) {
     if(entity->getMeshElement(j)->getTypeForMSH())
       entity->getMeshElement(j)->writeMATLAB(fp, filetype, entity->tag(),
                                              physical, binary);
@@ -35,7 +35,7 @@ void storePairMATLAB(
   const GEntity *entity, int physical,
   std::vector<std::vector<std::pair<MElement *, int> > > &elems)
 {
-  for(unsigned int j = 0; j < entity->getNumMeshElements(); j++) {
+  for(std::size_t j = 0; j < entity->getNumMeshElements(); j++) {
     int elemtype = entity->getMeshElement(j)->getTypeForMSH();
     if(elemtype)
       elems[elemtype - 1].push_back(
@@ -89,15 +89,15 @@ int GModel::writeMATLAB(const std::string &name, bool binary, bool saveAll,
   if(filetype == SIMPLE) {
     fprintf(fp, "gVertices = %d;\n", numVertices);
     fprintf(fp, "gXYZ = [\n");
-    for(unsigned int i = 0; i < entities.size(); i++)
-      for(unsigned int 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++)
         entities[i]->mesh_vertices[j]->writeMATLAB(fp, filetype, binary,
                                                    scalingFactor);
     fprintf(fp, "];\n");
     // triangles
     fprintf(fp, "\%\%\n");
     fprintf(fp, "gTri=[\n");
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(saveAll)
         writeElementsMATLAB(fp, entities[i], filetype, binary, 0);
       else if(entities[i]->getPhysicalEntities().size()) {
@@ -117,8 +117,8 @@ int GModel::writeMATLAB(const std::string &name, bool binary, bool saveAll,
     fprintf(fp, "clear msh;\n");
     fprintf(fp, "msh.nbNod = %d;\n", numVertices);
     fprintf(fp, "msh.POS = [\n");
-    for(unsigned int i = 0; i < entities.size(); i++)
-      for(unsigned int 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++)
         entities[i]->mesh_vertices[j]->writeMATLAB(fp, filetype, binary,
                                                    scalingFactor);
     fprintf(fp, "];\n");
@@ -128,11 +128,11 @@ int GModel::writeMATLAB(const std::string &name, bool binary, bool saveAll,
     // file.
     std::vector<std::vector<std::pair<MElement *, int> > > elems(MSH_MAX_NUM);
     // loop on each element and fill the vectors of connectivity
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(saveAll)
         storePairMATLAB(entities[i], 0, elems);
       else {
-        for(unsigned int iphys = 0;
+        for(std::size_t iphys = 0;
             iphys < entities[i]->getPhysicalEntities().size(); iphys++) {
           int physical = entities[i]->getPhysicalEntities()[iphys];
           storePairMATLAB(entities[i], physical, elems);
@@ -144,7 +144,7 @@ int GModel::writeMATLAB(const std::string &name, bool binary, bool saveAll,
       if(elems[elemtype - 1].empty()) continue;
       fprintf(fp, "msh.%s =[\n", getMATLABName(elemtype).c_str());
       // writes
-      for(unsigned int i = 0; i < elems[elemtype - 1].size(); i++) {
+      for(std::size_t i = 0; i < elems[elemtype - 1].size(); i++) {
         elems[elemtype - 1][i].first->writeMATLAB(
           fp, filetype, elems[elemtype - 1][i].second, binary);
       }
diff --git a/Geo/GModelIO_MED.cpp b/Geo/GModelIO_MED.cpp
index 3ab812f62775407fd37eb38b5dfe47e04af18d07..d7aa52dad57e2148be7782d2104c993e536f1aa8 100644
--- a/Geo/GModelIO_MED.cpp
+++ b/Geo/GModelIO_MED.cpp
@@ -211,7 +211,7 @@ int GModel::readMED(const std::string &name)
   }
 
   int ret = 1;
-  for(unsigned int i = 0; i < meshNames.size(); i++) {
+  for(std::size_t i = 0; i < meshNames.size(); i++) {
     // we use the filename as a kind of "partition" indicator, allowing to
     // complete a model part by part (used e.g. in DDM, since MED does not store
     // a partition index)
@@ -511,9 +511,9 @@ static void fillElementsMED(med_int family, std::vector<T *> &elements,
     Msg::Warning("Unsupported element type in MED format");
     return;
   }
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     elements[i]->setVolumePositive();
-    for(unsigned int j = 0; j < elements[i]->getNumVertices(); j++)
+    for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++)
       conn.push_back(
         elements[i]->getVertex(med2mshNodeIndex(type, j))->getIndex());
     fam.push_back(family);
@@ -610,7 +610,7 @@ int GModel::writeMED(const std::string &name, bool saveAll,
 
     // create one family per elementary entity, with one group per
     // physical entity and no attributes
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(saveAll || entities[i]->physicals.size()) {
         int num = -((int)families.size() + 1);
         families[entities[i]] = num;
@@ -648,8 +648,8 @@ int GModel::writeMED(const std::string &name, bool saveAll,
   {
     std::vector<med_float> coord;
     std::vector<med_int> fam;
-    for(unsigned int i = 0; i < entities.size(); i++) {
-      for(unsigned int 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() >= 0) {
           coord.push_back(v->x() * scalingFactor);
diff --git a/Geo/GModelIO_MESH.cpp b/Geo/GModelIO_MESH.cpp
index f5772d5f16dd486d8f9dd9956943b359df8ddb5d..41a5d4b09d1657fcd3431a42ab74a73307a2eaf3 100644
--- a/Geo/GModelIO_MESH.cpp
+++ b/Geo/GModelIO_MESH.cpp
@@ -259,8 +259,8 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
   fprintf(fp, " %d\n", numVertices);
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeMESH(fp, scalingFactor);
 
   int numEdges = 0, numTriangles = 0, numQuadrangles = 0;
@@ -292,7 +292,7 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
     for(eiter it = firstEdge(); it != lastEdge(); ++it) {
       int numPhys = (*it)->physicals.size();
       if(saveAll || numPhys) {
-        for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+        for(std::size_t i = 0; i < (*it)->lines.size(); i++)
           (*it)->lines[i]->writeMESH(fp, elementTagType, (*it)->tag(),
                                      numPhys ? (*it)->physicals[0] : 0);
       }
@@ -307,7 +307,7 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
     for(fiter it = firstFace(); it != lastFace(); ++it) {
       int numPhys = (*it)->physicals.size();
       if(saveAll || numPhys) {
-        for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+        for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
           (*it)->triangles[i]->writeMESH(fp, elementTagType, (*it)->tag(),
                                          numPhys ? (*it)->physicals[0] : 0);
       }
@@ -319,7 +319,7 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
     for(fiter it = firstFace(); it != lastFace(); ++it) {
       int numPhys = (*it)->physicals.size();
       if(saveAll || numPhys) {
-        for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++)
+        for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++)
           (*it)->quadrangles[i]->writeMESH(fp, elementTagType, (*it)->tag(),
                                            numPhys ? (*it)->physicals[0] : 0);
       }
@@ -334,7 +334,7 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
     for(riter it = firstRegion(); it != lastRegion(); ++it) {
       int numPhys = (*it)->physicals.size();
       if(saveAll || numPhys) {
-        for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++)
+        for(std::size_t i = 0; i < (*it)->tetrahedra.size(); i++)
           (*it)->tetrahedra[i]->writeMESH(fp, elementTagType, (*it)->tag(),
                                           numPhys ? (*it)->physicals[0] : 0);
       }
@@ -346,7 +346,7 @@ int GModel::writeMESH(const std::string &name, int elementTagType, bool saveAll,
     for(riter it = firstRegion(); it != lastRegion(); ++it) {
       int numPhys = (*it)->physicals.size();
       if(saveAll || numPhys) {
-        for(unsigned int i = 0; i < (*it)->hexahedra.size(); i++)
+        for(std::size_t i = 0; i < (*it)->hexahedra.size(); i++)
           (*it)->hexahedra[i]->writeMESH(fp, elementTagType, (*it)->tag(),
                                          numPhys ? (*it)->physicals[0] : 0);
       }
diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp
index b8b597fb500ddb9ec06f3c707cb50cbe972d2c18..be183423e6b0f5647f018ed578a8f35bc73590d8 100644
--- a/Geo/GModelIO_MSH2.cpp
+++ b/Geo/GModelIO_MSH2.cpp
@@ -474,7 +474,7 @@ int GModel::_readMSH2(const std::string &name)
           elems[num] = e;
           elemreg[num] = elementary;
           elemphy[num] = physical;
-          for(unsigned int j = 0; j < ghosts.size(); j++)
+          for(std::size_t j = 0; j < ghosts.size(); j++)
             _ghostCells.insert(std::pair<MElement *, short>(e, ghosts[j]));
           if(numElements > 100000)
             Msg::ProgressMeter(i + 1, numElements, true, "Reading elements");
@@ -695,7 +695,7 @@ static void writeElementMSH(FILE *fp, GModel *model, GEntity *ge, T *ele,
                    dom1Num, dom2Num, &ghosts);
   else {
     if(parentNum) parentNum = parentNum - physicals.size() + 1;
-    for(unsigned int j = 0; j < physicals.size(); j++) {
+    for(std::size_t j = 0; j < physicals.size(); j++) {
       ele->writeMSH2(fp, version, binary, ++num, elementary, physicals[j],
                      parentNum, dom1Num, dom2Num, &ghosts);
       if(parentNum) parentNum++;
@@ -724,12 +724,12 @@ static void writeElementsMSH(FILE *fp, GModel *model, GEntity *ge,
     if(ele.empty()) return;
     int offset = -saveSinglePartition;
     int maxPhysical = model->getMaxPhysicalNumber(ele[0]->getDim());
-    for(unsigned int i = 0; i < ele.size(); i++) {
+    for(std::size_t i = 0; i < ele.size(); i++) {
       std::vector<int> newPhysicals;
       int newElementary = elementary;
       if(elementary > 0) { // classical entity
         newElementary = elementary * offset + ele[i]->getPartition();
-        for(unsigned int j = 0; j < physicals.size(); j++)
+        for(std::size_t j = 0; j < physicals.size(); j++)
           newPhysicals.push_back(physicals[j] * offset +
                                  ele[i]->getPartition());
       }
@@ -743,7 +743,7 @@ static void writeElementsMSH(FILE *fp, GModel *model, GEntity *ge,
     return;
   }
 
-  for(unsigned int i = 0; i < ele.size(); i++) {
+  for(std::size_t i = 0; i < ele.size(); i++) {
     if(saveSinglePartition && ele[i]->getPartition() != saveSinglePartition)
       continue;
     if(ele[i]->getDomain(0)) continue;
@@ -768,7 +768,7 @@ static int getNumElementsMSH(GEntity *ge, bool saveAll, int saveSinglePartition)
   if(saveSinglePartition <= 0)
     n = p * ge->getNumMeshElements();
   else
-    for(unsigned int i = 0; i < ge->getNumMeshElements(); i++)
+    for(std::size_t i = 0; i < ge->getNumMeshElements(); i++)
       if(ge->getMeshElement(i)->getPartition() == saveSinglePartition) n += p;
   return n;
 }
@@ -779,7 +779,7 @@ static int getNumElementsMSH(GModel *m, bool saveAll, int saveSinglePartition)
   for(GModel::viter it = m->firstVertex(); it != m->lastVertex(); ++it) {
     n += getNumElementsMSH(*it, saveAll, saveSinglePartition);
     if(!CTX::instance()->mesh.saveTri) {
-      for(unsigned int i = 0; i < (*it)->points.size(); i++)
+      for(std::size_t i = 0; i < (*it)->points.size(); i++)
         if((*it)->points[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
     }
@@ -787,7 +787,7 @@ static int getNumElementsMSH(GModel *m, bool saveAll, int saveSinglePartition)
   for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it) {
     n += getNumElementsMSH(*it, saveAll, saveSinglePartition);
     if(!CTX::instance()->mesh.saveTri) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++)
         if((*it)->lines[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
     }
@@ -795,16 +795,16 @@ static int getNumElementsMSH(GModel *m, bool saveAll, int saveSinglePartition)
   for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) {
     n += getNumElementsMSH(*it, saveAll, saveSinglePartition);
     if(CTX::instance()->mesh.saveTri) {
-      for(unsigned int i = 0; i < (*it)->polygons.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->polygons.size(); i++) {
         int nbC = (*it)->polygons[i]->getNumChildren() - 1;
         n += (saveAll ? nbC : nbC * (*it)->physicals.size());
       }
     }
     else {
-      for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+      for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
         if((*it)->triangles[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
-      for(unsigned int i = 0; i < (*it)->polygons.size(); i++)
+      for(std::size_t i = 0; i < (*it)->polygons.size(); i++)
         if((*it)->polygons[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
     }
@@ -812,16 +812,16 @@ static int getNumElementsMSH(GModel *m, bool saveAll, int saveSinglePartition)
   for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) {
     n += getNumElementsMSH(*it, saveAll, saveSinglePartition);
     if(CTX::instance()->mesh.saveTri) {
-      for(unsigned int i = 0; i < (*it)->polyhedra.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->polyhedra.size(); i++) {
         int nbC = (*it)->polyhedra[i]->getNumChildren() - 1;
         n += (saveAll ? nbC : nbC * (*it)->physicals.size());
       }
     }
     else {
-      for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++)
+      for(std::size_t i = 0; i < (*it)->tetrahedra.size(); i++)
         if((*it)->tetrahedra[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
-      for(unsigned int i = 0; i < (*it)->polyhedra.size(); i++)
+      for(std::size_t i = 0; i < (*it)->polyhedra.size(); i++)
         if((*it)->polyhedra[i]->ownsParent())
           n += (saveAll ? 1 : (*it)->physicals.size());
     }
@@ -913,8 +913,8 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary,
 
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeMSH2(fp, binary, saveParametric,
                                                scalingFactor);
 
@@ -940,42 +940,42 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary,
   // parents
   if(!CTX::instance()->mesh.saveTri) {
     for(viter it = firstVertex(); it != lastVertex(); ++it) {
-      for(unsigned int i = 0; i < (*it)->points.size(); i++)
+      for(std::size_t i = 0; i < (*it)->points.size(); i++)
         if((*it)->points[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->points[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
                           (*it)->physicals);
     }
     for(eiter it = firstEdge(); it != lastEdge(); ++it) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++)
         if((*it)->lines[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->lines[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
                           (*it)->physicals);
     }
     for(fiter it = firstFace(); it != lastFace(); ++it) {
-      for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+      for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
         if((*it)->triangles[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->triangles[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
                           (*it)->physicals);
     }
     for(riter it = firstRegion(); it != lastRegion(); ++it) {
-      for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++)
+      for(std::size_t i = 0; i < (*it)->tetrahedra.size(); i++)
         if((*it)->tetrahedra[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->tetrahedra[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
                           (*it)->physicals);
     }
     for(fiter it = firstFace(); it != lastFace(); ++it) {
-      for(unsigned int i = 0; i < (*it)->polygons.size(); i++)
+      for(std::size_t i = 0; i < (*it)->polygons.size(); i++)
         if((*it)->polygons[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->polygons[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
                           (*it)->physicals);
     }
     for(riter it = firstRegion(); it != lastRegion(); ++it) {
-      for(unsigned int i = 0; i < (*it)->polyhedra.size(); i++)
+      for(std::size_t i = 0; i < (*it)->polyhedra.size(); i++)
         if((*it)->polyhedra[i]->ownsParent())
           writeElementMSH(fp, this, *it, (*it)->polyhedra[i]->getParent(), saveAll,
                           version, binary, num, _getElementary(*it),
@@ -1044,7 +1044,7 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary,
   }
   // level set faces
   for(fiter it = firstFace(); it != lastFace(); ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       if(t->getDomain(0))
         writeElementMSH(fp, this, *it, t, saveAll, version, binary, num,
@@ -1052,7 +1052,7 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary,
                         getMeshElementIndex(t->getDomain(0)),
                         getMeshElementIndex(t->getDomain(1)));
     }
-    for(unsigned int i = 0; i < (*it)->polygons.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->polygons.size(); i++) {
       MPolygon *p = (*it)->polygons[i];
       if(p->getDomain(0))
         writeElementMSH(fp, this, *it, p, saveAll, version, binary, num,
@@ -1063,7 +1063,7 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary,
   }
   // level set lines
   for(eiter it = firstEdge(); it != lastEdge(); ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       MLine *l = (*it)->lines[i];
       if(l->getDomain(0))
         writeElementMSH(fp, this, *it, l, saveAll, version, binary, num,
@@ -1095,7 +1095,7 @@ int GModel::_writePartitionedMSH2(const std::string &baseName, bool binary,
 {
   int numElements;
   int startNum = 0;
-  for(unsigned int partition = 1; partition <= getNumPartitions();
+  for(std::size_t partition = 1; partition <= getNumPartitions();
       partition++) {
     std::ostringstream sstream;
     sstream << baseName << "_" << partition << ".msh";
diff --git a/Geo/GModelIO_MSH3.cpp b/Geo/GModelIO_MSH3.cpp
index 5755b23fd2340842f81fe7130e45a017575f5301..603f597ccbd53bd044be68c4d3208aa67454fe66 100644
--- a/Geo/GModelIO_MSH3.cpp
+++ b/Geo/GModelIO_MSH3.cpp
@@ -558,7 +558,7 @@ static void writeMSHPhysicals(FILE *fp, GEntity *ge)
 void writeMSHEntities(FILE *fp, GModel *gm) // also used in MSH2
 {
   fprintf(fp, "$Entities\n");
-  fprintf(fp, "%lu %d %d %d\n", gm->getNumVertices(), gm->getNumEdges(),
+  fprintf(fp, "%lu %lu %lu %lu\n", gm->getNumVertices(), gm->getNumEdges(),
           gm->getNumFaces(), gm->getNumRegions());
   for(GModel::viter it = gm->firstVertex(); it != gm->lastVertex(); ++it) {
     fprintf(fp, "%d ", (*it)->tag());
@@ -589,10 +589,10 @@ void writeMSHEntities(FILE *fp, GModel *gm) // also used in MSH2
     std::vector<int> signs(ori.begin(), ori.end());
 
     if(tags.size() == signs.size()) {
-      for(unsigned int i = 0; i < tags.size(); i++)
+      for(std::size_t i = 0; i < tags.size(); i++)
         tags[i] *= (signs[i] > 0 ? 1 : -1);
     }
-    for(unsigned int i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
+    for(std::size_t i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
     writeMSHPhysicals(fp, *it);
     fprintf(fp, "\n");
   }
@@ -608,10 +608,10 @@ void writeMSHEntities(FILE *fp, GModel *gm) // also used in MSH2
         itf++)
       signs.push_back(*itf);
     if(tags.size() == signs.size()) {
-      for(unsigned int i = 0; i < tags.size(); i++)
+      for(std::size_t i = 0; i < tags.size(); i++)
         tags[i] *= (signs[i] > 0 ? 1 : -1);
     }
-    for(unsigned int i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
+    for(std::size_t i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
     writeMSHPhysicals(fp, *it);
     fprintf(fp, "\n");
   }
@@ -625,7 +625,7 @@ static int getNumElementsMSH(GEntity *ge, bool saveAll, int saveSinglePartition)
     if(saveSinglePartition <= 0)
       n = ge->getNumMeshElements();
     else
-      for(unsigned int i = 0; i < ge->getNumMeshElements(); i++)
+      for(std::size_t i = 0; i < ge->getNumMeshElements(); i++)
         if(ge->getMeshElement(i)->getPartition() == saveSinglePartition) n++;
   }
   return n;
@@ -654,7 +654,7 @@ static void writeElementsMSH(FILE *fp, GModel *model, GEntity *ge,
                              int saveSinglePartition, bool binary)
 {
   if(saveAll || ge->physicals.size()) {
-    for(unsigned int i = 0; i < ele.size(); i++) {
+    for(std::size_t i = 0; i < ele.size(); i++) {
       if(saveSinglePartition && ele[i]->getPartition() != saveSinglePartition)
         continue;
       writeElementMSH(fp, model, ele[i], binary, ge->tag());
@@ -666,12 +666,12 @@ void writeMSHPeriodicNodes(FILE *fp, std::vector<GEntity *> &entities,
                            bool renumber) // also used in MSH2
 {
   int count = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->getMeshMaster() != entities[i]) count++;
   if(!count) return;
   fprintf(fp, "$Periodic\n");
   fprintf(fp, "%d\n", count);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *g_slave = entities[i];
     GEntity *g_master = g_slave->getMeshMaster();
     if(g_slave != g_master) {
@@ -736,7 +736,7 @@ int GModel::_writeMSH3(const std::string &name, double version, bool binary,
   std::vector<GEntity *> entities;
   getEntities(entities);
   int numElements = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     numElements += getNumElementsMSH(entities[i], saveAll, saveSinglePartition);
 
   fprintf(fp, "$MeshFormat\n");
@@ -764,8 +764,8 @@ int GModel::_writeMSH3(const std::string &name, double version, bool binary,
 
   fprintf(fp, "$Nodes\n");
   fprintf(fp, "%d\n", numVertices);
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeMSH(fp, binary, saveParametric,
                                               scalingFactor);
 
@@ -826,7 +826,7 @@ int GModel::_writePartitionedMSH3(const std::string &baseName, double version,
     return 0;
   }
 
-  for(unsigned int partition = 0; partition < getNumPartitions(); partition++) {
+  for(std::size_t partition = 0; partition < getNumPartitions(); partition++) {
     std::ostringstream sstream;
     sstream << baseName << "_" << std::setw(6) << std::setfill('0')
             << partition;
diff --git a/Geo/GModelIO_MSH4.cpp b/Geo/GModelIO_MSH4.cpp
index e4681d5f62b6b834fd40012dcb7a6b49c90adc9c..4b79e9107576bef07101e09713454607554d44e3 100644
--- a/Geo/GModelIO_MSH4.cpp
+++ b/Geo/GModelIO_MSH4.cpp
@@ -165,13 +165,13 @@ static bool readMSH4BoundingEntities(GModel *const model, FILE *fp,
     break;
   case 2: {
     std::vector<int> tags(boundingEntities.size());
-    for(unsigned int i = 0; i < boundingEntities.size(); i++)
+    for(std::size_t i = 0; i < boundingEntities.size(); i++)
       tags[i] = std::abs(boundingEntities[i]->tag());
     reinterpret_cast<discreteFace *>(entity)->setBoundEdges(tags, boundingSign);
   } break;
   case 3: {
     std::vector<int> tags(boundingEntities.size());
-    for(unsigned int i = 0; i < boundingEntities.size(); i++)
+    for(std::size_t i = 0; i < boundingEntities.size(); i++)
       tags[i] = std::abs(boundingEntities[i]->tag());
     reinterpret_cast<discreteRegion *>(entity)->setBoundFaces(tags,
                                                               boundingSign);
@@ -319,7 +319,7 @@ static bool readMSH4Entities(GModel *const model, FILE *fp, bool partition,
     }
 
     model->setNumPartitions(numPartitions);
-    Msg::Info("%d partitions", model->getNumPartitions());
+    Msg::Info("%lu partitions", model->getNumPartitions());
     for(unsigned int i = 0; i < 2 * ghostSize; i += 2) {
       switch(model->getDim()) {
       case 1: {
@@ -1151,7 +1151,7 @@ static bool readMSH4GhostElements(GModel *const model, FILE *fp, bool binary,
   std::vector<GEntity *> ghostEntities(model->getNumPartitions() + 1, 0);
   std::vector<GEntity *> entities;
   model->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *ge = entities[i];
     int partNum = -1;
     if(ge->geomType() == GEntity::GhostCurve)
@@ -1388,12 +1388,12 @@ int GModel::_readMSH4(const std::string &name)
     // partitioning and the old one.
     std::vector<GEntity *> entities;
     getEntities(entities);
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(entities[i]->geomType() == GEntity::PartitionPoint) {
         partitionVertex *pv = static_cast<partitionVertex *>(entities[i]);
         if(pv->numPartitions() == 1) {
           const unsigned int part = pv->getPartition(0);
-          for(unsigned int j = 0; j < pv->getNumMeshElements(); j++) {
+          for(std::size_t j = 0; j < pv->getNumMeshElements(); j++) {
             pv->getMeshElement(j)->setPartition(part);
           }
         }
@@ -1402,7 +1402,7 @@ int GModel::_readMSH4(const std::string &name)
         partitionEdge *pe = static_cast<partitionEdge *>(entities[i]);
         if(pe->numPartitions() == 1) {
           const unsigned int part = pe->getPartition(0);
-          for(unsigned int j = 0; j < pe->getNumMeshElements(); j++) {
+          for(std::size_t j = 0; j < pe->getNumMeshElements(); j++) {
             pe->getMeshElement(j)->setPartition(part);
           }
         }
@@ -1411,7 +1411,7 @@ int GModel::_readMSH4(const std::string &name)
         partitionFace *pf = static_cast<partitionFace *>(entities[i]);
         if(pf->numPartitions() == 1) {
           const unsigned int part = pf->getPartition(0);
-          for(unsigned int j = 0; j < pf->getNumMeshElements(); j++) {
+          for(std::size_t j = 0; j < pf->getNumMeshElements(); j++) {
             pf->getMeshElement(j)->setPartition(part);
           }
         }
@@ -1420,7 +1420,7 @@ int GModel::_readMSH4(const std::string &name)
         partitionRegion *pr = static_cast<partitionRegion *>(entities[i]);
         if(pr->numPartitions() == 1) {
           const unsigned int part = pr->getPartition(0);
-          for(unsigned int j = 0; j < pr->getNumMeshElements(); j++) {
+          for(std::size_t j = 0; j < pr->getNumMeshElements(); j++) {
             pr->getMeshElement(j)->setPartition(part);
           }
         }
@@ -1437,7 +1437,7 @@ static void writeMSH4Physicals(FILE *fp, GEntity *const entity, bool binary)
     std::vector<int> phys = entity->getPhysicalEntities();
     unsigned long phySize = phys.size();
     fwrite(&phySize, sizeof(unsigned long), 1, fp);
-    for(unsigned int i = 0; i < phys.size(); i++) {
+    for(std::size_t i = 0; i < phys.size(); i++) {
       int phy = phys[i];
       fwrite(&phy, sizeof(int), 1, fp);
     }
@@ -1445,7 +1445,7 @@ static void writeMSH4Physicals(FILE *fp, GEntity *const entity, bool binary)
   else {
     std::vector<int> phys = entity->getPhysicalEntities();
     fprintf(fp, "%lu", phys.size());
-    for(unsigned int i = 0; i < phys.size(); i++) {
+    for(std::size_t i = 0; i < phys.size(); i++) {
       fprintf(fp, " %d", phys[i]);
     }
     fprintf(fp, " ");
@@ -1703,7 +1703,7 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
   }
   else {
     if(partition) {
-      fprintf(fp, "%d\n", model->getNumPartitions());
+      fprintf(fp, "%lu\n", model->getNumPartitions());
 
       // write the ghostentities' tag
       unsigned int ghostSize = ghost.size();
@@ -1751,7 +1751,7 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
         fprintf(fp, "%d %d ", parentEntityDim, parentEntityTag);
         std::vector<unsigned int> partitions = pv->getPartitions();
         fprintf(fp, "%d ", (int)partitions.size());
-        for(unsigned int i = 0; i < partitions.size(); i++)
+        for(std::size_t i = 0; i < partitions.size(); i++)
           fprintf(fp, "%d ", partitions[i]);
       }
       writeMSH4BoundingBox((*it)->bounds(), fp, scalingFactor, binary);
@@ -1782,7 +1782,7 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
         fprintf(fp, "%d %d ", parentEntityDim, parentEntityTag);
         std::vector<unsigned int> partitions = pe->getPartitions();
         fprintf(fp, "%d ", (int)partitions.size());
-        for(unsigned int i = 0; i < partitions.size(); i++)
+        for(std::size_t i = 0; i < partitions.size(); i++)
           fprintf(fp, "%d ", partitions[i]);
       }
       writeMSH4BoundingBox((*it)->bounds(), fp, scalingFactor, binary);
@@ -1811,7 +1811,7 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
         fprintf(fp, "%d %d ", parentEntityDim, parentEntityTag);
         std::vector<unsigned int> partitions = pf->getPartitions();
         fprintf(fp, "%d ", (int)partitions.size());
-        for(unsigned int i = 0; i < partitions.size(); i++)
+        for(std::size_t i = 0; i < partitions.size(); i++)
           fprintf(fp, "%d ", partitions[i]);
       }
       writeMSH4BoundingBox((*it)->bounds(), fp, scalingFactor, binary);
@@ -1825,10 +1825,10 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
           ite++)
         signs.push_back(*ite);
       if(tags.size() == signs.size()) {
-        for(unsigned int i = 0; i < tags.size(); i++)
+        for(std::size_t i = 0; i < tags.size(); i++)
           tags[i] *= (signs[i] > 0 ? 1 : -1);
       }
-      for(unsigned int i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
+      for(std::size_t i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
       fprintf(fp, "\n");
     }
 
@@ -1846,7 +1846,7 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
         fprintf(fp, "%d %d ", parentEntityDim, parentEntityTag);
         std::vector<unsigned int> partitions = pr->getPartitions();
         fprintf(fp, "%d ", (int)partitions.size());
-        for(unsigned int i = 0; i < partitions.size(); i++)
+        for(std::size_t i = 0; i < partitions.size(); i++)
           fprintf(fp, "%d ", partitions[i]);
       }
       writeMSH4BoundingBox((*it)->bounds(), fp, scalingFactor, binary);
@@ -1862,10 +1862,10 @@ static void writeMSH4Entities(GModel *const model, FILE *fp, bool partition,
       std::vector<int> signs(ori.begin(), ori.end());
 
       if(tags.size() == signs.size()) {
-        for(unsigned int i = 0; i < tags.size(); i++)
+        for(std::size_t i = 0; i < tags.size(); i++)
           tags[i] *= (signs[i] > 0 ? 1 : -1);
       }
-      for(unsigned int i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
+      for(std::size_t i = 0; i < tags.size(); i++) fprintf(fp, "%d ", tags[i]);
       fprintf(fp, "\n");
     }
   }
@@ -1887,8 +1887,8 @@ getAdditionalEntities(std::set<GRegion *, GEntityLessThan> &regions,
   for(std::set<GEdge *, GEntityLessThan>::iterator it = edges.begin();
       it != edges.end(); ++it) {
     numVertices += (*it)->getNumMeshVertices();
-    for(GFace::size_type i = 0; i < (*it)->getNumMeshElements(); i++) {
-      for(GFace::size_type j = 0;
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++) {
+      for(std::size_t j = 0;
           j < (*it)->getMeshElement(i)->getNumVertices(); j++) {
         if((*it)->getMeshElement(i)->getVertex(j)->onWhat() != (*it)) {
           GEntity *entity = (*it)->getMeshElement(i)->getVertex(j)->onWhat();
@@ -1929,8 +1929,8 @@ getAdditionalEntities(std::set<GRegion *, GEntityLessThan> &regions,
   for(std::set<GFace *, GEntityLessThan>::iterator it = faces.begin();
       it != faces.end(); ++it) {
     numVertices += (*it)->getNumMeshVertices();
-    for(GFace::size_type i = 0; i < (*it)->getNumMeshElements(); i++) {
-      for(GFace::size_type j = 0;
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++) {
+      for(std::size_t j = 0;
           j < (*it)->getMeshElement(i)->getNumVertices(); j++) {
         if((*it)->getMeshElement(i)->getVertex(j)->onWhat() != (*it)) {
           GEntity *entity = (*it)->getMeshElement(i)->getVertex(j)->onWhat();
@@ -1971,8 +1971,8 @@ getAdditionalEntities(std::set<GRegion *, GEntityLessThan> &regions,
   for(std::set<GRegion *, GEntityLessThan>::iterator it = regions.begin();
       it != regions.end(); ++it) {
     numVertices += (*it)->getNumMeshVertices();
-    for(GFace::size_type i = 0; i < (*it)->getNumMeshElements(); i++) {
-      for(GFace::size_type j = 0;
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++) {
+      for(std::size_t j = 0;
           j < (*it)->getMeshElement(i)->getNumVertices(); j++) {
         if((*it)->getMeshElement(i)->getVertex(j)->onWhat() != (*it)) {
           GEntity *entity = (*it)->getMeshElement(i)->getVertex(j)->onWhat();
@@ -2102,7 +2102,7 @@ static void writeMSH4Nodes(GModel *const model, FILE *fp, bool partitioned,
               (unsigned long)(*it)->getNumMeshVertices());
     }
 
-    for(unsigned int i = 0; i < (*it)->getNumMeshVertices(); i++)
+    for(std::size_t i = 0; i < (*it)->getNumMeshVertices(); i++)
       (*it)->getMeshVertex(i)->writeMSH4(fp, binary, saveParametric,
                                          scalingFactor);
   }
@@ -2122,7 +2122,7 @@ static void writeMSH4Nodes(GModel *const model, FILE *fp, bool partitioned,
               (unsigned long)(*it)->getNumMeshVertices());
     }
 
-    for(unsigned int i = 0; i < (*it)->getNumMeshVertices(); i++)
+    for(std::size_t i = 0; i < (*it)->getNumMeshVertices(); i++)
       (*it)->getMeshVertex(i)->writeMSH4(fp, binary, saveParametric,
                                          scalingFactor);
   }
@@ -2142,7 +2142,7 @@ static void writeMSH4Nodes(GModel *const model, FILE *fp, bool partitioned,
               (unsigned long)(*it)->getNumMeshVertices());
     }
 
-    for(unsigned int i = 0; i < (*it)->getNumMeshVertices(); i++)
+    for(std::size_t i = 0; i < (*it)->getNumMeshVertices(); i++)
       (*it)->getMeshVertex(i)->writeMSH4(fp, binary, saveParametric,
                                          scalingFactor);
   }
@@ -2162,7 +2162,7 @@ static void writeMSH4Nodes(GModel *const model, FILE *fp, bool partitioned,
               (unsigned long)(*it)->getNumMeshVertices());
     }
 
-    for(unsigned int i = 0; i < (*it)->getNumMeshVertices(); i++)
+    for(std::size_t i = 0; i < (*it)->getNumMeshVertices(); i++)
       (*it)->getMeshVertex(i)->writeMSH4(fp, binary, saveParametric,
                                          scalingFactor);
   }
@@ -2228,7 +2228,7 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
     if(!saveAll && (*it)->physicals.size() == 0) continue;
 
     numElements += (*it)->points.size();
-    for(unsigned int i = 0; i < (*it)->points.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->points.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->points[i]->getTypeForMSH());
       elementsByDegree[0][p].push_back((*it)->points[i]);
     }
@@ -2240,7 +2240,7 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
       continue;
 
     numElements += (*it)->lines.size();
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->lines[i]->getTypeForMSH());
       elementsByDegree[1][p].push_back((*it)->lines[i]);
     }
@@ -2252,12 +2252,12 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
       continue;
 
     numElements += (*it)->triangles.size();
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->triangles[i]->getTypeForMSH());
       elementsByDegree[2][p].push_back((*it)->triangles[i]);
     }
     numElements += (*it)->quadrangles.size();
-    for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++) {
       std::pair<int, int> p((*it)->tag(),
                             (*it)->quadrangles[i]->getTypeForMSH());
       elementsByDegree[2][p].push_back((*it)->quadrangles[i]);
@@ -2270,28 +2270,28 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
       continue;
 
     numElements += (*it)->tetrahedra.size();
-    for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->tetrahedra.size(); i++) {
       std::pair<int, int> p((*it)->tag(),
                             (*it)->tetrahedra[i]->getTypeForMSH());
       elementsByDegree[3][p].push_back((*it)->tetrahedra[i]);
     }
     numElements += (*it)->hexahedra.size();
-    for(unsigned int i = 0; i < (*it)->hexahedra.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->hexahedra.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->hexahedra[i]->getTypeForMSH());
       elementsByDegree[3][p].push_back((*it)->hexahedra[i]);
     }
     numElements += (*it)->prisms.size();
-    for(unsigned int i = 0; i < (*it)->prisms.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->prisms.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->prisms[i]->getTypeForMSH());
       elementsByDegree[3][p].push_back((*it)->prisms[i]);
     }
     numElements += (*it)->pyramids.size();
-    for(unsigned int i = 0; i < (*it)->pyramids.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->pyramids.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->pyramids[i]->getTypeForMSH());
       elementsByDegree[3][p].push_back((*it)->pyramids[i]);
     }
     numElements += (*it)->trihedra.size();
-    for(unsigned int i = 0; i < (*it)->trihedra.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->trihedra.size(); i++) {
       std::pair<int, int> p((*it)->tag(), (*it)->trihedra[i]->getTypeForMSH());
       elementsByDegree[3][p].push_back((*it)->trihedra[i]);
     }
@@ -2329,7 +2329,7 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
         const int nbrVertices = MElement::getInfoMSH(elmType);
         int indexElement = 0;
         int *elementData = new int[it->second.size() * (nbrVertices + 1)];
-        for(unsigned int i = 0; i < it->second.size() * (nbrVertices + 1);
+        for(std::size_t i = 0; i < it->second.size() * (nbrVertices + 1);
             i += (nbrVertices + 1)) {
           elementData[i] = it->second[indexElement]->getNum();
           for(int j = 0; j < nbrVertices; j++) {
@@ -2343,7 +2343,7 @@ static void writeMSH4Elements(GModel *const model, FILE *fp, bool partitioned,
         delete[] elementData;
       }
       else {
-        for(unsigned int i = 0; i < it->second.size(); i++) {
+        for(std::size_t i = 0; i < it->second.size(); i++) {
           it->second[i]->writeMSH4(fp, binary);
         }
       }
@@ -2359,7 +2359,7 @@ static void writeMSH4PeriodicNodes(GModel *const model, FILE *fp,
   int count = 0;
   std::vector<GEntity *> entities;
   model->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(std::size_t i = 0; i < entities.size(); i++)
     if(entities[i]->getMeshMaster() != entities[i]) count++;
 
   if(!count) return;
@@ -2373,7 +2373,7 @@ static void writeMSH4PeriodicNodes(GModel *const model, FILE *fp,
     fprintf(fp, "%d\n", count);
   }
 
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *g_slave = entities[i];
     GEntity *g_master = g_slave->getMeshMaster();
 
@@ -2439,7 +2439,7 @@ static void writeMSH4GhostCells(GModel *const model, FILE *fp, bool binary)
   model->getEntities(entities);
   std::map<MElement *, std::vector<unsigned int> > ghostCells;
 
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     std::map<MElement *, unsigned int> ghostElements;
     unsigned int partition;
 
@@ -2478,7 +2478,7 @@ static void writeMSH4GhostCells(GModel *const model, FILE *fp, bool binary)
         fwrite(&elmTag, sizeof(int), 1, fp);
         fwrite(&partNum, sizeof(unsigned int), 1, fp);
         fwrite(&numGhostPartitions, sizeof(unsigned int), 1, fp);
-        for(unsigned int i = 1; i < it->second.size(); i++) {
+        for(std::size_t i = 1; i < it->second.size(); i++) {
           fwrite(&it->second[i], sizeof(int), 1, fp);
         }
       }
@@ -2492,7 +2492,7 @@ static void writeMSH4GhostCells(GModel *const model, FILE *fp, bool binary)
           it != ghostCells.end(); ++it) {
         fprintf(fp, "%d %d %ld", it->first->getNum(), it->second[0],
                 it->second.size() - 1);
-        for(unsigned int i = 1; i < it->second.size(); i++) {
+        for(std::size_t i = 1; i < it->second.size(); i++) {
           fprintf(fp, " %d", it->second[i]);
         }
         fprintf(fp, "\n");
@@ -2583,9 +2583,8 @@ static void associateVertices(GModel *model)
 {
   for(GModel::const_viter it = model->firstVertex(); it != model->lastVertex();
       ++it) {
-    for(GFace::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GFace::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         (*it)->getMeshElement(j)->getVertex(k)->setEntity(0);
       }
     }
@@ -2593,9 +2592,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_eiter it = model->firstEdge(); it != model->lastEdge();
       ++it) {
-    for(GFace::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GFace::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         (*it)->getMeshElement(j)->getVertex(k)->setEntity(0);
       }
     }
@@ -2603,9 +2601,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_fiter it = model->firstFace(); it != model->lastFace();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         (*it)->getMeshElement(j)->getVertex(k)->setEntity(0);
       }
     }
@@ -2613,9 +2610,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_riter it = model->firstRegion(); it != model->lastRegion();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         (*it)->getMeshElement(j)->getVertex(k)->setEntity(0);
       }
     }
@@ -2624,9 +2620,8 @@ static void associateVertices(GModel *model)
 
   for(GModel::const_viter it = model->firstVertex(); it != model->lastVertex();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         if((*it)->getMeshElement(j)->getVertex(k)->onWhat() == 0) {
           (*it)->getMeshElement(j)->getVertex(k)->setEntity(*it);
           (*it)->mesh_vertices.push_back(
@@ -2637,9 +2632,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_eiter it = model->firstEdge(); it != model->lastEdge();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         if((*it)->getMeshElement(j)->getVertex(k)->onWhat() == 0) {
           (*it)->getMeshElement(j)->getVertex(k)->setEntity(*it);
           (*it)->mesh_vertices.push_back(
@@ -2650,9 +2644,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_fiter it = model->firstFace(); it != model->lastFace();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         if((*it)->getMeshElement(j)->getVertex(k)->onWhat() == 0) {
           (*it)->getMeshElement(j)->getVertex(k)->setEntity(*it);
           (*it)->mesh_vertices.push_back(
@@ -2663,9 +2656,8 @@ static void associateVertices(GModel *model)
   }
   for(GModel::const_riter it = model->firstRegion(); it != model->lastRegion();
       ++it) {
-    for(GModel::size_type j = 0; j < (*it)->getNumMeshElements(); j++) {
-      for(GModel::size_type k = 0;
-          k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
+    for(std::size_t j = 0; j < (*it)->getNumMeshElements(); j++) {
+      for(std::size_t k = 0; k < (*it)->getMeshElement(j)->getNumVertices(); k++) {
         if((*it)->getMeshElement(j)->getVertex(k)->onWhat() == 0) {
           (*it)->getMeshElement(j)->getVertex(k)->setEntity(*it);
           (*it)->mesh_vertices.push_back(
@@ -2683,7 +2675,7 @@ int GModel::_writePartitionedMSH4(const std::string &baseName, double version,
   std::vector<GEntity *> ghostEntities;
   std::vector<GEntity *> entities;
   getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->geomType() == GEntity::GhostCurve ||
        entities[i]->geomType() == GEntity::GhostSurface ||
        entities[i]->geomType() == GEntity::GhostVolume) {
@@ -2696,11 +2688,11 @@ int GModel::_writePartitionedMSH4(const std::string &baseName, double version,
   tmp->setPhysicalNames(getPhysicalNames());
   tmp->setNumPartitions(getNumPartitions());
 
-  for(unsigned int i = 1; i <= getNumPartitions(); i++) {
+  for(std::size_t i = 1; i <= getNumPartitions(); i++) {
     std::set<GEntity *> entitiesSet;
     GEntity *ghostEntity = 0;
 
-    for(unsigned int j = 0; j < entities.size(); j++) {
+    for(std::size_t j = 0; j < entities.size(); j++) {
       GEntity *ge = entities[j];
       switch(ge->geomType()) {
       case GEntity::PartitionVolume: {
@@ -2774,9 +2766,9 @@ int GModel::_writePartitionedMSH4(const std::string &baseName, double version,
     associateVertices(tmp);
 
     if(ghostEntity) {
-      for(unsigned int j = 0; j < ghostEntity->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < ghostEntity->getNumMeshElements(); j++) {
         MElement *e = ghostEntity->getMeshElement(j);
-        for(unsigned int k = 0; k < e->getNumVertices(); k++) {
+        for(std::size_t k = 0; k < e->getNumVertices(); k++) {
           MVertex *v = e->getVertex(k);
           if(entitiesSet.find(v->onWhat()) == entitiesSet.end()) {
             v->setEntity(ghostEntity);
@@ -2920,7 +2912,7 @@ int GModel::writePartitionedTopology(std::string &name)
   std::map<std::pair<int, int>, std::vector<int> > sigmasij;
   std::map<int, std::vector<int> > sigmas;
   std::map<int, std::set<int> > neighbors;
-  unsigned int omegaDim = 0;
+  std::size_t omegaDim = 0;
   for(size_t i = 4; i > 0; --i) {
     if(allParts[i - 1].size() != 0) {
       omegaDim = i - 1;
diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index d9b30f5c13374bd9d093139073b443967739e9b0..45c652ffe8daea864e23675f2b098fc65f583afe 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1013,7 +1013,7 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
   try {
     TColgp_Array1OfPnt ctrlPoints(1, pointTags.size());
     TopoDS_Vertex start, end;
-    for(unsigned int i = 0; i < pointTags.size(); i++) {
+    for(std::size_t i = 0; i < pointTags.size(); i++) {
       if(!_tagVertex.IsBound(pointTags[i])) {
         Msg::Error("Unknown OpenCASCADE point with tag %d", pointTags[i]);
         return false;
@@ -1079,7 +1079,7 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
         Msg::Error("Number of BSpline knots (%d) should be >= 2", knots.size());
         return false;
       }
-      for(unsigned int i = 0; i < knots.size() - 1; i++) {
+      for(std::size_t i = 0; i < knots.size() - 1; i++) {
         if(knots[i] >= knots[i + 1]) {
           Msg::Error("BSpline knots should be increasing: knot %d (%g) > "
                      "knot %d (%g)",
@@ -1087,7 +1087,7 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
           return false;
         }
       }
-      for(unsigned int i = 0; i < multiplicities.size(); i++) {
+      for(std::size_t i = 0; i < multiplicities.size(); i++) {
         if(multiplicities[i] < 1) {
           Msg::Error("BSpline multiplicities should be >= 1");
           return false;
@@ -1114,7 +1114,7 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
         }
         // TODO C++11 std::accumulate
         std::size_t sum = 0;
-        for(unsigned int i = 0; i < multiplicities.size() - 1; i++)
+        for(std::size_t i = 0; i < multiplicities.size() - 1; i++)
           sum += multiplicities[i];
         if(pointTags.size() - 1 != sum) {
           Msg::Error(
@@ -1126,7 +1126,7 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
       }
       else {
         std::size_t sum = 0;
-        for(unsigned int i = 0; i < multiplicities.size(); i++)
+        for(std::size_t i = 0; i < multiplicities.size(); i++)
           sum += multiplicities[i];
         if(pointTags.size() != sum - degree - 1) {
           Msg::Error("Number of control points for non-periodic BSpline should "
@@ -1142,10 +1142,10 @@ bool OCC_Internals::_addBSpline(int &tag, const std::vector<int> &pointTags,
         w.SetValue(i, weights[i - 1]);
       }
       TColStd_Array1OfReal k(1, knots.size());
-      for(unsigned int i = 0; i < knots.size(); i++)
+      for(std::size_t i = 0; i < knots.size(); i++)
         k.SetValue(i + 1, knots[i]);
       TColStd_Array1OfInteger m(1, multiplicities.size());
-      for(unsigned int i = 0; i < multiplicities.size(); i++)
+      for(std::size_t i = 0; i < multiplicities.size(); i++)
         m.SetValue(i + 1, multiplicities[i]);
       Handle(Geom_BSplineCurve) curve =
         new Geom_BSplineCurve(p, w, k, m, degree, periodic);
@@ -1219,14 +1219,14 @@ bool OCC_Internals::addBSpline(int &tag, const std::vector<int> &pointTags,
         return false;
       }
       k.resize(num_knots);
-      for(unsigned int i = 0; i < k.size(); i++) k[i] = i;
+      for(std::size_t i = 0; i < k.size(); i++) k[i] = i;
       m.resize(num_knots, 1);
       m.front() = d + 1;
       m.back() = d + 1;
     }
     else {
       k.resize(pointTags.size() - 1);
-      for(unsigned int i = 0; i < k.size(); i++) k[i] = i;
+      for(std::size_t i = 0; i < k.size(); i++) k[i] = i;
       m.resize(k.size(), 1);
       m.front() = d - 1;
       m.back() = d - 1;
@@ -1246,7 +1246,7 @@ bool OCC_Internals::addWire(int &tag, const std::vector<int> &curveTags,
   TopoDS_Wire result;
   try {
     BRepBuilderAPI_MakeWire w;
-    for(unsigned int i = 0; i < curveTags.size(); i++) {
+    for(std::size_t i = 0; i < curveTags.size(); i++) {
       if(!_tagEdge.IsBound(curveTags[i])) {
         Msg::Error("Unknown OpenCASCADE curve with tag %d", curveTags[i]);
         return false;
@@ -1273,7 +1273,7 @@ bool OCC_Internals::addLineLoop(int &tag, const std::vector<int> &curveTags)
   std::vector<int> tags(curveTags);
   // all curve tags are > 0 for OCC : to improve compatibility between GEO and
   // OCC factories, allow negative tags - and simply ignore the sign here
-  for(unsigned int i = 0; i < tags.size(); i++) tags[i] = std::abs(tags[i]);
+  for(std::size_t i = 0; i < tags.size(); i++) tags[i] = std::abs(tags[i]);
   return addWire(tag, tags, true);
 }
 
@@ -1436,7 +1436,7 @@ bool OCC_Internals::addPlaneSurface(int &tag, const std::vector<int> &wireTags)
   }
 
   std::vector<TopoDS_Wire> wires;
-  for(unsigned int i = 0; i < wireTags.size(); i++) {
+  for(std::size_t i = 0; i < wireTags.size(); i++) {
     // all wire tags are > 0 for OCC : to improve compatibility between GEO and
     // OCC factories, allow negative tags - and simply ignore the sign here
     int wireTag = std::abs(wireTags[i]);
@@ -1456,7 +1456,7 @@ bool OCC_Internals::addPlaneSurface(int &tag, const std::vector<int> &wireTags)
 
   try {
     BRepBuilderAPI_MakeFace f(wires[0]);
-    for(unsigned int i = 1; i < wires.size(); i++) {
+    for(std::size_t i = 1; i < wires.size(); i++) {
       // holes
       TopoDS_Wire w = wires[i];
       w.Orientation(TopAbs_REVERSED);
@@ -1525,7 +1525,7 @@ bool OCC_Internals::addSurfaceFilling(int &tag, int wireTag,
       i++;
     }
     // point constraints
-    for(unsigned int i = 0; i < pointTags.size(); i++) {
+    for(std::size_t i = 0; i < pointTags.size(); i++) {
       if(!_tagVertex.IsBound(pointTags[i])) {
         Msg::Error("Unknown OpenCASCADE point with tag %d", pointTags[i]);
         return false;
@@ -1569,7 +1569,7 @@ bool OCC_Internals::addSurfaceLoop(int &tag,
   TopoDS_Shape result;
   try {
     BRepBuilderAPI_Sewing s;
-    for(unsigned int i = 0; i < surfaceTags.size(); i++) {
+    for(std::size_t i = 0; i < surfaceTags.size(); i++) {
       if(!_tagFace.IsBound(surfaceTags[i])) {
         Msg::Error("Unknown OpenCASCADE surface with tag %d", surfaceTags[i]);
         return false;
@@ -1639,7 +1639,7 @@ bool OCC_Internals::addVolume(int &tag, const std::vector<int> &shellTags)
   TopoDS_Solid result;
   try {
     BRepBuilderAPI_MakeSolid s;
-    for(unsigned int i = 0; i < shellTags.size(); i++) {
+    for(std::size_t i = 0; i < shellTags.size(); i++) {
       if(!_tagShell.IsBound(shellTags[i])) {
         Msg::Error("Unknown OpenCASCADE surface loop with tag %d",
                    shellTags[i]);
@@ -1929,7 +1929,7 @@ bool OCC_Internals::addThruSections(
   TopoDS_Shape result;
   try {
     BRepOffsetAPI_ThruSections ts(makeSolid, makeRuled);
-    for(unsigned int i = 0; i < wireTags.size(); i++) {
+    for(std::size_t i = 0; i < wireTags.size(); i++) {
       if(!_tagWire.IsBound(wireTags[i])) {
         Msg::Error("Unknown OpenCASCADE wire or line loop with tag %d",
                    wireTags[i]);
@@ -1974,7 +1974,7 @@ bool OCC_Internals::addThickSolid(int tag, int solidTag,
   try {
     TopoDS_Shape shape = _find(3, solidTag);
     TopTools_ListOfShape exclude;
-    for(unsigned int i = 0; i < excludeFaceTags.size(); i++) {
+    for(std::size_t i = 0; i < excludeFaceTags.size(); i++) {
       if(!_tagFace.IsBound(excludeFaceTags[i])) {
         Msg::Error("Unknown OpenCASCADE surface with tag %d",
                    excludeFaceTags[i]);
@@ -2081,7 +2081,7 @@ int OCC_Internals::_getFuzzyTag(int dim, const TopoDS_Shape &s)
   _meshAttributes->getSimilarShapes(dim, s, candidates);
 
   int num = 0;
-  for(unsigned int i = 0; i < candidates.size(); i++) {
+  for(std::size_t i = 0; i < candidates.size(); i++) {
     if(_isBound(dim, candidates[i])) {
       num++;
     }
@@ -2089,7 +2089,7 @@ int OCC_Internals::_getFuzzyTag(int dim, const TopoDS_Shape &s)
   Msg::Info("Extruded mesh constraint fuzzy search: found %d candidates "
             "(dim=%d, %d bound)",
             (int)candidates.size(), dim, num);
-  for(unsigned int i = 0; i < candidates.size(); i++) {
+  for(std::size_t i = 0; i < candidates.size(); i++) {
     if(_isBound(dim, candidates[i])) {
       return _find(dim, candidates[i]);
     }
@@ -2199,7 +2199,7 @@ bool OCC_Internals::_extrude(int mode,
   BRep_Builder b;
   TopoDS_Compound c;
   b.MakeCompound(c);
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     if(!_isBound(dim, tag)) {
@@ -2281,7 +2281,7 @@ bool OCC_Internals::_extrude(int mode,
   if(dim >= 1 && dim <= 3 && top.size() == inDimTags.size() &&
      top.size() == body.size()) {
     outDimTags.clear();
-    for(unsigned int i = 0; i < top.size(); i++) {
+    for(std::size_t i = 0; i < top.size(); i++) {
       if(_isBound(dim - 1, top[i]))
         outDimTags.push_back(
           std::pair<int, int>(dim - 1, _find(dim - 1, top[i])));
@@ -2289,7 +2289,7 @@ bool OCC_Internals::_extrude(int mode,
         outDimTags.push_back(std::pair<int, int>(dim, _find(dim, body[i])));
       if(CTX::instance()->geom.extrudeReturnLateral &&
          top.size() == lateral.size()) {
-        for(unsigned int j = 0; j < lateral[i].size(); j++) {
+        for(std::size_t j = 0; j < lateral[i].size(); j++) {
           if(_isBound(dim - 1, lateral[i][j]))
             outDimTags.push_back(
               std::pair<int, int>(dim - 1, _find(dim - 1, lateral[i][j])));
@@ -2335,7 +2335,7 @@ bool OCC_Internals::_fillet(int mode, const std::vector<int> &volumeTags,
                             bool removeVolume)
 {
   std::vector<TopoDS_Edge> edges;
-  for(unsigned int i = 0; i < curveTags.size(); i++) {
+  for(std::size_t i = 0; i < curveTags.size(); i++) {
     if(!_tagEdge.IsBound(curveTags[i])) {
       Msg::Error("Unknown OpenCASCADE curve with tag %d", curveTags[i]);
       return false;
@@ -2344,7 +2344,7 @@ bool OCC_Internals::_fillet(int mode, const std::vector<int> &volumeTags,
   }
 
   std::vector<TopoDS_Face> faces;
-  for(unsigned int i = 0; i < surfaceTags.size(); i++) {
+  for(std::size_t i = 0; i < surfaceTags.size(); i++) {
     if(!_tagFace.IsBound(surfaceTags[i])) {
       Msg::Error("Unknown OpenCASCADE surface with tag %d", surfaceTags[i]);
       return false;
@@ -2360,7 +2360,7 @@ bool OCC_Internals::_fillet(int mode, const std::vector<int> &volumeTags,
   BRep_Builder b;
   TopoDS_Compound c;
   b.MakeCompound(c);
-  for(unsigned int i = 0; i < volumeTags.size(); i++) {
+  for(std::size_t i = 0; i < volumeTags.size(); i++) {
     if(!_isBound(3, volumeTags[i])) {
       Msg::Error("Unknown OpenCASCADE volume with tag %d", volumeTags[i]);
       return false;
@@ -2379,7 +2379,7 @@ bool OCC_Internals::_fillet(int mode, const std::vector<int> &volumeTags,
   try {
     if(mode == 0) { // fillet
       BRepFilletAPI_MakeFillet f(c);
-      for(unsigned int i = 0; i < edges.size(); i++) {
+      for(std::size_t i = 0; i < edges.size(); i++) {
         if(param.size() == 1)
           f.Add(param[0], edges[i]);
         else if(param.size() == edges.size())
@@ -2396,7 +2396,7 @@ bool OCC_Internals::_fillet(int mode, const std::vector<int> &volumeTags,
     }
     else { // chamfer
       BRepFilletAPI_MakeChamfer f(c);
-      for(unsigned int i = 0; i < edges.size(); i++) {
+      for(std::size_t i = 0; i < edges.size(); i++) {
         if(param.size() == 1)
           f.Add(param[0], param[0], edges[i], faces[i]);
         else if(param.size() == edges.size())
@@ -2451,7 +2451,7 @@ static void _filterTags(std::vector<std::pair<int, int> > &outDimTags,
 {
   std::vector<std::pair<int, int> > tmp(outDimTags);
   outDimTags.clear();
-  for(unsigned int i = 0; i < tmp.size(); i++) {
+  for(std::size_t i = 0; i < tmp.size(); i++) {
     if(tmp[i].first >= minDim) outDimTags.push_back(tmp[i]);
   }
 }
@@ -2477,7 +2477,7 @@ bool OCC_Internals::booleanOperator(
 
   int minDim = 3;
   TopTools_ListOfShape objectShapes, toolShapes;
-  for(unsigned int i = 0; i < objectDimTags.size(); i++) {
+  for(std::size_t i = 0; i < objectDimTags.size(); i++) {
     int dim = objectDimTags[i].first;
     int t = objectDimTags[i].second;
     if(!_isBound(dim, t)) {
@@ -2491,7 +2491,7 @@ bool OCC_Internals::booleanOperator(
     }
     minDim = std::min(minDim, dim);
   }
-  for(unsigned int i = 0; i < toolDimTags.size(); i++) {
+  for(std::size_t i = 0; i < toolDimTags.size(); i++) {
     int dim = toolDimTags[i].first;
     int t = toolDimTags[i].second;
     if(!_isBound(dim, t)) {
@@ -2626,12 +2626,12 @@ bool OCC_Internals::booleanOperator(
   std::vector<std::pair<int, int> > inDimTags;
   inDimTags.insert(inDimTags.end(), objectDimTags.begin(), objectDimTags.end());
   inDimTags.insert(inDimTags.end(), toolDimTags.begin(), toolDimTags.end());
-  unsigned int numObjects = objectDimTags.size();
+  std::size_t numObjects = objectDimTags.size();
 
   if(tag >= 0 || !preserveNumbering) {
     // if we specify the tag explicitly, or if we don't care about preserving
     // the numering, just go ahead and bind the resulting shape (and sub-shapes)
-    for(unsigned int i = 0; i < inDimTags.size(); i++) {
+    for(std::size_t i = 0; i < inDimTags.size(); i++) {
       bool remove = (i < numObjects) ? removeObject : removeTool;
       if(remove) {
         int d = inDimTags[i].first;
@@ -2648,7 +2648,7 @@ bool OCC_Internals::booleanOperator(
     // the numbering of smaller dimension entities (on boundaries) they should
     // appear *before* higher dimensional entities in the object/tool lists.
     _toPreserve.clear();
-    for(unsigned int i = 0; i < inDimTags.size(); i++) {
+    for(std::size_t i = 0; i < inDimTags.size(); i++) {
       int dim = inDimTags[i].first;
       int tag = inDimTags[i].second;
       bool remove = (i < numObjects) ? removeObject : removeTool;
@@ -2687,7 +2687,7 @@ bool OCC_Internals::booleanOperator(
   }
 
   // return input/output correspondance maps
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     std::pair<int, int> dimTag(dim, tag);
@@ -2715,7 +2715,7 @@ bool OCC_Internals::booleanOperator(
     }
     std::ostringstream sstream;
     sstream << "BOOL in (" << dim << "," << tag << ") -> out";
-    for(unsigned int j = 0; j < dimTags.size(); j++)
+    for(std::size_t j = 0; j < dimTags.size(); j++)
       sstream << " (" << dimTags[j].first << "," << dimTags[j].second << ")";
     Msg::Debug("%s", sstream.str().c_str());
     outDimTagsMap.push_back(dimTags);
@@ -2811,7 +2811,7 @@ bool OCC_Internals::mergeVertices(const std::vector<int> &tags)
 {
   std::vector<std::pair<int, int> > objectDimTags, toolDimTags, outDimTags;
   std::vector<std::vector<std::pair<int, int> > > outDimTagsMap;
-  for(unsigned int i = 0; i < tags.size(); i++)
+  for(std::size_t i = 0; i < tags.size(); i++)
     objectDimTags.push_back(std::pair<int, int>(0, tags[i]));
   return booleanFragments(-1, objectDimTags, toolDimTags, outDimTags,
                           outDimTagsMap, true, true);
@@ -2852,7 +2852,7 @@ bool OCC_Internals::_transform(
   BRep_Builder b;
   TopoDS_Compound c;
   b.MakeCompound(c);
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     if(!_isBound(dim, tag)) {
@@ -2910,7 +2910,7 @@ bool OCC_Internals::_transform(
     Msg::Error("OpenCASCADE transform changed the number of shapes");
     return false;
   }
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     // FIXME we should implement rebind(object, result, dim) which would
     // unbind/bind all subshapes to the same tags
     int dim = inDimTags[i].first;
@@ -2990,7 +2990,7 @@ bool OCC_Internals::copy(const std::vector<std::pair<int, int> > &inDimTags,
                          std::vector<std::pair<int, int> > &outDimTags)
 {
   bool ret = true;
-  for(unsigned int i = 0; i < inDimTags.size(); i++) {
+  for(std::size_t i = 0; i < inDimTags.size(); i++) {
     int dim = inDimTags[i].first;
     int tag = inDimTags[i].second;
     if(!_isBound(dim, tag)) {
@@ -3022,7 +3022,7 @@ bool OCC_Internals::remove(const std::vector<std::pair<int, int> > &dimTags,
                            bool recursive)
 {
   bool ret = true;
-  for(unsigned int i = 0; i < dimTags.size(); i++) {
+  for(std::size_t i = 0; i < dimTags.size(); i++) {
     if(!remove(dimTags[i].first, dimTags[i].second, recursive)) ret = false;
   }
   return ret;
diff --git a/Geo/GModelIO_P3D.cpp b/Geo/GModelIO_P3D.cpp
index 7b672a6530d4db3f9cb55d9d4f7cee44beab44e2..93dd81445cb0ea04020003fbb17df966e791c4c4 100644
--- a/Geo/GModelIO_P3D.cpp
+++ b/Geo/GModelIO_P3D.cpp
@@ -59,8 +59,8 @@ int GModel::readP3D(const std::string &name)
           }
         }
       }
-      for(unsigned int i = 0; i < gf->transfinite_vertices.size() - 1; i++)
-        for(unsigned int j = 0; j < gf->transfinite_vertices[0].size() - 1; j++)
+      for(std::size_t i = 0; i < gf->transfinite_vertices.size() - 1; i++)
+        for(std::size_t j = 0; j < gf->transfinite_vertices[0].size() - 1; j++)
           gf->quadrangles.push_back(new MQuadrangle(
             gf->transfinite_vertices[i][j], gf->transfinite_vertices[i + 1][j],
             gf->transfinite_vertices[i + 1][j + 1],
@@ -100,9 +100,9 @@ int GModel::readP3D(const std::string &name)
           }
         }
       }
-      for(unsigned int i = 0; i < gr->transfinite_vertices.size() - 1; i++)
-        for(unsigned int j = 0; j < gr->transfinite_vertices[0].size() - 1; j++)
-          for(unsigned int k = 0; k < gr->transfinite_vertices[0][0].size() - 1;
+      for(std::size_t i = 0; i < gr->transfinite_vertices.size() - 1; i++)
+        for(std::size_t j = 0; j < gr->transfinite_vertices[0].size() - 1; j++)
+          for(std::size_t k = 0; k < gr->transfinite_vertices[0][0].size() - 1;
               k++)
             gr->hexahedra.push_back(
               new MHexahedron(gr->transfinite_vertices[i][j][k],
@@ -154,20 +154,20 @@ int GModel::writeP3D(const std::string &name, bool saveAll,
 
   fprintf(fp, "%d\n", (int)(faces.size() + regions.size()));
 
-  for(unsigned int i = 0; i < faces.size(); i++)
+  for(std::size_t i = 0; i < faces.size(); i++)
     fprintf(fp, "%d %d 1\n", (int)faces[i]->transfinite_vertices.size(),
             (int)faces[i]->transfinite_vertices[0].size());
 
-  for(unsigned int i = 0; i < regions.size(); i++)
+  for(std::size_t i = 0; i < regions.size(); i++)
     fprintf(fp, "%d %d %d\n", (int)regions[i]->transfinite_vertices.size(),
             (int)regions[i]->transfinite_vertices[0].size(),
             (int)regions[i]->transfinite_vertices[0][0].size());
 
-  for(unsigned int i = 0; i < faces.size(); i++) {
+  for(std::size_t i = 0; i < faces.size(); i++) {
     GFace *gf = faces[i];
     for(int coord = 0; coord < 3; coord++) {
-      for(unsigned int k = 0; k < gf->transfinite_vertices[0].size(); k++) {
-        for(unsigned int j = 0; j < gf->transfinite_vertices.size(); j++) {
+      for(std::size_t k = 0; k < gf->transfinite_vertices[0].size(); k++) {
+        for(std::size_t j = 0; j < gf->transfinite_vertices.size(); j++) {
           MVertex *v = gf->transfinite_vertices[j][k];
           double d = (coord == 0) ? v->x() : (coord == 1) ? v->y() : v->z();
           fprintf(fp, "%.16g ", d * scalingFactor);
@@ -177,12 +177,12 @@ int GModel::writeP3D(const std::string &name, bool saveAll,
     }
   }
 
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     GRegion *gr = regions[i];
     for(int coord = 0; coord < 3; coord++) {
-      for(unsigned int l = 0; l < gr->transfinite_vertices[0][0].size(); l++) {
-        for(unsigned int k = 0; k < gr->transfinite_vertices[0].size(); k++) {
-          for(unsigned int j = 0; j < gr->transfinite_vertices.size(); j++) {
+      for(std::size_t l = 0; l < gr->transfinite_vertices[0][0].size(); l++) {
+        for(std::size_t k = 0; k < gr->transfinite_vertices[0].size(); k++) {
+          for(std::size_t j = 0; j < gr->transfinite_vertices.size(); j++) {
             MVertex *v = gr->transfinite_vertices[j][k][l];
             double d = (coord == 0) ? v->x() : (coord == 1) ? v->y() : v->z();
             fprintf(fp, "%.16g ", d * scalingFactor);
diff --git a/Geo/GModelIO_STL.cpp b/Geo/GModelIO_STL.cpp
index d850e969a9748271fe308888a9d8eb6e3605d772..2515ed184fc46d79ae122658aee162a13556b383 100644
--- a/Geo/GModelIO_STL.cpp
+++ b/Geo/GModelIO_STL.cpp
@@ -71,7 +71,7 @@ int GModel::readSTL(const std::string &name, double tolerance)
 
   // check if we could parse something
   bool empty = true;
-  for(unsigned int i = 0; i < points.size(); i++) {
+  for(std::size_t i = 0; i < points.size(); i++) {
     if(points[i].size()) {
       empty = false;
       break;
@@ -103,7 +103,7 @@ int GModel::readSTL(const std::string &name, double tolerance)
         char *data = new char[nfacets * 50 * sizeof(char)];
         ret = fread(data, sizeof(char), nfacets * 50, fp);
         if(ret == nfacets * 50) {
-          for(unsigned int i = 0; i < nfacets; i++) {
+          for(std::size_t i = 0; i < nfacets; i++) {
             float *xyz = (float *)&data[i * 50 * sizeof(char)];
             if(swap) SwapBytes((char *)xyz, sizeof(float), 12);
             for(int j = 0; j < 3; j++) {
@@ -119,7 +119,7 @@ int GModel::readSTL(const std::string &name, double tolerance)
   }
 
   std::vector<GFace *> faces;
-  for(unsigned int i = 0; i < points.size(); i++) {
+  for(std::size_t i = 0; i < points.size(); i++) {
     if(points[i].empty()) {
       Msg::Error("No facets found in STL file for solid %d", i);
       fclose(fp);
@@ -141,8 +141,8 @@ int GModel::readSTL(const std::string &name, double tolerance)
   // create triangles using unique vertices
   double eps = norm(SVector3(bbox.max(), bbox.min())) * tolerance;
   std::vector<MVertex *> vertices;
-  for(unsigned int i = 0; i < points.size(); i++)
-    for(unsigned int j = 0; j < points[i].size(); j++)
+  for(std::size_t i = 0; i < points.size(); i++)
+    for(std::size_t j = 0; j < points[i].size(); j++)
       vertices.push_back(
         new MVertex(points[i][j].x(), points[i][j].y(), points[i][j].z()));
   MVertexRTree pos(eps);
@@ -150,8 +150,8 @@ int GModel::readSTL(const std::string &name, double tolerance)
 
   std::set<MFace, Less_Face> unique;
   int nbDuplic = 0;
-  for(unsigned int i = 0; i < points.size(); i++) {
-    for(unsigned int j = 0; j < points[i].size(); j += 3) {
+  for(std::size_t i = 0; i < points.size(); i++) {
+    for(std::size_t j = 0; j < points[i].size(); j += 3) {
       MVertex *v[3];
       for(int k = 0; k < 3; k++) {
         double x = points[i][j + k].x();
@@ -225,7 +225,7 @@ int GModel::writeSTL(const std::string &name, bool binary, bool saveAll,
   for(fiter it = firstFace(); it != lastFace(); ++it) {
     if(saveAll || (*it)->physicals.size()) {
       if(useGeoSTL && (*it)->stl_vertices_uv.size()) {
-        for(unsigned int i = 0; i < (*it)->stl_triangles.size(); i += 3) {
+        for(std::size_t i = 0; i < (*it)->stl_triangles.size(); i += 3) {
           SPoint2 &p1((*it)->stl_vertices_uv[(*it)->stl_triangles[i]]);
           SPoint2 &p2((*it)->stl_vertices_uv[(*it)->stl_triangles[i + 1]]);
           SPoint2 &p3((*it)->stl_vertices_uv[(*it)->stl_triangles[i + 2]]);
@@ -264,9 +264,9 @@ int GModel::writeSTL(const std::string &name, bool binary, bool saveAll,
         }
       }
       else {
-        for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+        for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
           (*it)->triangles[i]->writeSTL(fp, binary, scalingFactor);
-        for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++)
+        for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++)
           (*it)->quadrangles[i]->writeSTL(fp, binary, scalingFactor);
       }
     }
diff --git a/Geo/GModelIO_TOCHNOG.cpp b/Geo/GModelIO_TOCHNOG.cpp
index 6064c83091f5860cfd20cdbbba64e9914ce8f309..1532802ff4febc18f493c737e53cf315361e3f61 100644
--- a/Geo/GModelIO_TOCHNOG.cpp
+++ b/Geo/GModelIO_TOCHNOG.cpp
@@ -27,7 +27,7 @@ static void writeElementsTOCHNOG(FILE *fp, GEntity *ge,
       // const char *str = (ge->dim() == 3) ? " 3 " : (ge->dim() == 2) ?
       //  " 2 " : (ge->dim() == 1) ? " 1 " : "Point";
       // fprintf(fp, "( 'number_of_space_dimensions   %s)\n", str);
-      for(unsigned int i = 0; i < elements.size(); i++)
+      for(std::size_t i = 0; i < elements.size(); i++)
         elements[i]->writeTOCHNOG(fp, elements[i]->getNum());
     }
   }
@@ -46,7 +46,7 @@ static std::string physicalName(GModel *m, int dim, int num)
             num);
     name = tmp;
   }
-  for(unsigned int i = 0; i < name.size(); i++)
+  for(std::size_t i = 0; i < name.size(); i++)
     if(name[i] == ' ') name[i] = '_';
   return name;
 }
@@ -87,8 +87,8 @@ int GModel::writeTOCHNOG(const std::string &name, bool saveAll,
   std::vector<GEntity *> entities;
   getEntities(entities);
 
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeTOCHNOG(fp, dim, scalingFactor);
   fprintf(fp, "\n");
   // Nodes
@@ -158,8 +158,8 @@ int GModel::writeTOCHNOG(const std::string &name, bool saveAll,
               "MATERIALS =%s)\n",
               physicalName(this, dim, it->first).c_str());
       int n = 0;
-      for(unsigned int i = 0; i < entities.size(); i++) {
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++) {
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           MElement *e = entities[i]->getMeshElement(j);
           if(n && !(n % 10)) fprintf(fp, "\n");
           fprintf(fp, "%d ", e->getNum());
@@ -178,8 +178,8 @@ int GModel::writeTOCHNOG(const std::string &name, bool saveAll,
           it != groups[dim].end(); it++) {
         std::set<MVertex *> nodes;
         std::vector<GEntity *> &entities = it->second;
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             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 9702e45b3905c77915b1a7bca100ef8f70111648..a1d0614a8e1e1b162fe02090ad9004cfc6372406 100644
--- a/Geo/GModelIO_UNV.cpp
+++ b/Geo/GModelIO_UNV.cpp
@@ -63,7 +63,7 @@ int GModel::readUNV(const std::string &name)
           if(sscanf(buffer, "%d %d %d %d", &num, &dum, &dum, &dum) != 4) break;
           if(!gmshgets(buffer, sizeof(buffer), fp)) break;
           double x, y, z;
-          for(unsigned int i = 0; i < strlen(buffer); i++)
+          for(std::size_t i = 0; i < strlen(buffer); i++)
             if(buffer[i] == 'D') buffer[i] = 'E';
           if(sscanf(buffer, "%lf %lf %lf", &x, &y, &z) != 3) break;
           _vertexMapCache[num] = new MVertex(x, y, z, 0, num);
@@ -280,7 +280,7 @@ static std::string physicalName(GModel *m, int dim, int num)
             num);
     name = tmp;
   }
-  for(unsigned int i = 0; i < name.size(); i++)
+  for(std::size_t i = 0; i < name.size(); i++)
     if(name[i] == ' ') name[i] = '_';
   return name;
 }
@@ -304,8 +304,8 @@ int GModel::writeUNV(const std::string &name, bool saveAll,
   // nodes
   fprintf(fp, "%6d\n", -1);
   fprintf(fp, "%6d\n", 2411);
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeUNV
         (fp, CTX::instance()->mesh.unvStrictFormat ? true : false, scalingFactor);
   fprintf(fp, "%6d\n", -1);
@@ -313,9 +313,9 @@ int GModel::writeUNV(const std::string &name, bool saveAll,
   // elements
   fprintf(fp, "%6d\n", -1);
   fprintf(fp, "%6d\n", 2412);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(saveAll || entities[i]->physicals.size()) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         MElement *e = entities[i]->getMeshElement(j);
         e->writeUNV(fp, e->getNum(), entities[i]->tag(), 0);
       }
@@ -338,8 +338,8 @@ int GModel::writeUNV(const std::string &name, bool saveAll,
 
       std::set<MVertex *> nodes;
       if(saveGroupsOfNodes) {
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             for(std::size_t k = 0; k < e->getNumVertices(); k++)
               nodes.insert(e->getVertex(k));
@@ -348,7 +348,7 @@ int GModel::writeUNV(const std::string &name, bool saveAll,
       }
 
       int nele = 0;
-      for(unsigned int i = 0; i < entities.size(); i++)
+      for(std::size_t i = 0; i < entities.size(); i++)
         nele += entities[i]->getNumMeshElements();
 
       fprintf(fp, "%10d%10d%10d%10d%10d%10d%10d%10d\n", it->first, 0, 0, 0, 0,
@@ -371,8 +371,8 @@ int GModel::writeUNV(const std::string &name, bool saveAll,
 
       {
         int row = 0;
-        for(unsigned int i = 0; i < entities.size(); i++) {
-          for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+        for(std::size_t i = 0; i < entities.size(); i++) {
+          for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
             MElement *e = entities[i]->getMeshElement(j);
             if(row == 2) {
               fprintf(fp, "\n");
diff --git a/Geo/GModelIO_VRML.cpp b/Geo/GModelIO_VRML.cpp
index 3d9f668672cb8e12c4ea3ccbfd84195f9d059d52..b548cd5fa13ff37e3dae919650c4a99e4885339b 100644
--- a/Geo/GModelIO_VRML.cpp
+++ b/Geo/GModelIO_VRML.cpp
@@ -37,7 +37,7 @@ static int readVerticesVRML(FILE *fp, std::vector<MVertex *> &vertexVector,
   vertexVector.push_back(new MVertex(x, y, z));
   while(fscanf(fp, " , %lf %lf %lf", &x, &y, &z) == 3)
     vertexVector.push_back(new MVertex(x, y, z));
-  for(unsigned int i = 0; i < vertexVector.size(); i++)
+  for(std::size_t i = 0; i < vertexVector.size(); i++)
     allVertexVector.push_back(vertexVector[i]);
   Msg::Info("%d vertices", vertexVector.size());
   return 1;
@@ -71,7 +71,7 @@ static int readElementsVRML(FILE *fp, std::vector<MVertex *> &vertexVector,
     }
     else {
       std::vector<MVertex *> vertices;
-      for(unsigned int j = 0; j < idx.size(); j++) {
+      for(std::size_t j = 0; j < idx.size(); j++) {
         if(idx[j] < 0 || idx[j] > (int)(vertexVector.size() - 1)) {
           Msg::Error("Wrong vertex index %d", idx[j]);
           return 0;
@@ -93,7 +93,7 @@ static int readElementsVRML(FILE *fp, std::vector<MVertex *> &vertexVector,
         elements[2][region].push_back(new MQuadrangle(vertices));
       }
       else if(strips) { // triangle strip
-        for(unsigned int j = 2; j < vertices.size(); j++) {
+        for(std::size_t j = 2; j < vertices.size(); j++) {
           if(j % 2)
             elements[1][region].push_back(
               new MTriangle(vertices[j], vertices[j - 1], vertices[j - 2]));
@@ -103,7 +103,7 @@ static int readElementsVRML(FILE *fp, std::vector<MVertex *> &vertexVector,
         }
       }
       else { // import polygon as triangle fan
-        for(unsigned int j = 2; j < vertices.size(); j++) {
+        for(std::size_t j = 2; j < vertices.size(); j++) {
           elements[1][region].push_back(
             new MTriangle(vertices[0], vertices[j - 1], vertices[j]));
         }
@@ -212,13 +212,13 @@ int GModel::writeVRML(const std::string &name, bool saveAll,
   fprintf(fp, "  point [\n");
 
   for(viter it = firstVertex(); it != lastVertex(); ++it)
-    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); i++)
       (*it)->mesh_vertices[i]->writeVRML(fp, scalingFactor);
   for(eiter it = firstEdge(); it != lastEdge(); ++it)
-    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); i++)
       (*it)->mesh_vertices[i]->writeVRML(fp, scalingFactor);
   for(fiter it = firstFace(); it != lastFace(); ++it)
-    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); i++)
       (*it)->mesh_vertices[i]->writeVRML(fp, scalingFactor);
 
   fprintf(fp, "  ]\n");
@@ -228,7 +228,7 @@ int GModel::writeVRML(const std::string &name, bool saveAll,
     if(saveAll || (*it)->physicals.size()) {
       fprintf(fp, "DEF Curve%d IndexedLineSet {\n", (*it)->tag());
       fprintf(fp, "  coordIndex [\n");
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++)
         (*it)->lines[i]->writeVRML(fp);
       fprintf(fp, "  ]\n");
       fprintf(fp, "}\n");
@@ -239,9 +239,9 @@ int GModel::writeVRML(const std::string &name, bool saveAll,
     if(saveAll || (*it)->physicals.size()) {
       fprintf(fp, "DEF Surface%d IndexedFaceSet {\n", (*it)->tag());
       fprintf(fp, "  coordIndex [\n");
-      for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+      for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
         (*it)->triangles[i]->writeVRML(fp);
-      for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++)
+      for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++)
         (*it)->quadrangles[i]->writeVRML(fp);
       fprintf(fp, "  ]\n");
       fprintf(fp, "}\n");
diff --git a/Geo/GModelIO_VTK.cpp b/Geo/GModelIO_VTK.cpp
index 8a2b2ad8a20dc645b1f36843560108b628d2ce01..bfc9429fa2706371f1c7b74d07b933a9d404f693 100644
--- a/Geo/GModelIO_VTK.cpp
+++ b/Geo/GModelIO_VTK.cpp
@@ -44,17 +44,17 @@ int GModel::writeVTK(const std::string &name, bool binary, bool saveAll,
 
   // write mesh vertices
   fprintf(fp, "POINTS %d double\n", numVertices);
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int 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++)
       entities[i]->mesh_vertices[j]->writeVTK(fp, binary, scalingFactor,
                                               bigEndian);
   fprintf(fp, "\n");
 
   // loop over all elements we need to save and count vertices
   int numElements = 0, totalNumInt = 0;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->physicals.size() || saveAll) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         if(entities[i]->getMeshElement(j)->getTypeForVTK()) {
           numElements++;
           totalNumInt += entities[i]->getMeshElement(j)->getNumVertices() + 1;
@@ -65,9 +65,9 @@ int GModel::writeVTK(const std::string &name, bool binary, bool saveAll,
 
   // print vertex indices in ascii or binary
   fprintf(fp, "CELLS %d %d\n", numElements, totalNumInt);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->physicals.size() || saveAll) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         if(entities[i]->getMeshElement(j)->getTypeForVTK())
           entities[i]->getMeshElement(j)->writeVTK(fp, binary, bigEndian);
       }
@@ -77,9 +77,9 @@ int GModel::writeVTK(const std::string &name, bool binary, bool saveAll,
 
   // print element types in ascii or binary
   fprintf(fp, "CELL_TYPES %d\n", numElements);
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     if(entities[i]->physicals.size() || saveAll) {
-      for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
         int type = entities[i]->getMeshElement(j)->getTypeForVTK();
         if(type) {
           if(binary) {
@@ -216,7 +216,7 @@ int GModel::readVTK(const std::string &name, bool bigEndian)
 
   if(haveCells) {
     std::vector<std::vector<MVertex *> > cells(numElements);
-    for(unsigned int i = 0; i < cells.size(); i++) {
+    for(std::size_t i = 0; i < cells.size(); i++) {
       int numVerts, n[100];
       if(binary) {
         if(fread(&numVerts, sizeof(int), 1, fp) != 1) {
@@ -260,7 +260,7 @@ int GModel::readVTK(const std::string &name, bool bigEndian)
         fclose(fp);
         return 0;
       }
-      for(unsigned int i = 0; i < cells.size(); i++) {
+      for(std::size_t i = 0; i < cells.size(); i++) {
         int type;
         if(binary) {
           if(fread(&type, sizeof(int), 1, fp) != 1) {
@@ -302,7 +302,7 @@ int GModel::readVTK(const std::string &name, bool bigEndian)
       }
     }
     else {
-      for(unsigned int i = 0; i < cells.size(); i++) {
+      for(std::size_t i = 0; i < cells.size(); i++) {
         int nbNodes = (int)cells[i].size();
         switch(nbNodes) {
         case 1: elements[0][1].push_back(new MPoint(cells[i])); break;
diff --git a/Geo/GModelVertexArrays.cpp b/Geo/GModelVertexArrays.cpp
index 36e5c575bbd51f21a21bbe05023a195d31cfa288..69c41303a7f59fbb1d6cdbcc0f3156e5f41cfe13 100644
--- a/Geo/GModelVertexArrays.cpp
+++ b/Geo/GModelVertexArrays.cpp
@@ -148,14 +148,14 @@ bool isElementVisible(MElement *ele)
 
 template <class T> static bool areAllElementsVisible(std::vector<T *> &elements)
 {
-  for(unsigned int i = 0; i < elements.size(); i++)
+  for(std::size_t i = 0; i < elements.size(); i++)
     if(!isElementVisible(elements[i])) return false;
   return true;
 }
 
 template <class T> static bool areSomeElementsCurved(std::vector<T *> &elements)
 {
-  for(unsigned int i = 0; i < elements.size(); i++)
+  for(std::size_t i = 0; i < elements.size(); i++)
     if(elements[i]->getPolynomialOrder() > 1) return true;
   return false;
 }
@@ -163,7 +163,7 @@ template <class T> static bool areSomeElementsCurved(std::vector<T *> &elements)
 template <class T>
 static void addSmoothNormals(GEntity *e, std::vector<T *> &elements)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     const bool curved =
       (ele->getPolynomialOrder() > 1) &&
@@ -193,7 +193,7 @@ static void addElementsInArrays(GEntity *e, std::vector<T *> &elements,
 #if defined(_OPENMP)
 #pragma omp parallel for schedule(dynamic)
 #endif
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
 
     if(!isElementVisible(ele) || ele->getDim() < 1) continue;
@@ -382,7 +382,7 @@ private:
     if(CTX::instance()->mesh.volumesEdges) {
       // suppose edge shared by 4 elements on averge (pessmistic)
       int numLP = 0;
-      for(unsigned int i = 0; i < r->polyhedra.size(); i++)
+      for(std::size_t i = 0; i < r->polyhedra.size(); i++)
         numLP += 2 * r->polyhedra[i]->getNumEdges();
       num += (12 * r->tetrahedra.size() + 24 * r->hexahedra.size() +
               18 * r->prisms.size() + 16 * r->pyramids.size() +
@@ -399,7 +399,7 @@ private:
     int num = 0;
     if(CTX::instance()->mesh.volumesFaces) {
       int numFP = 0;
-      for(unsigned int i = 0; i < r->polyhedra.size(); i++)
+      for(std::size_t i = 0; i < r->polyhedra.size(); i++)
         numFP += r->polyhedra[i]->getNumFaces();
       num += (4 * r->tetrahedra.size() + 12 * r->hexahedra.size() +
               8 * r->prisms.size() + 6 * r->pyramids.size() +
diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp
index df65c3ed6e477d0aed49b53e8482cb095c6325e7..a45659932fda01133a29b42758f6d17084543e18 100644
--- a/Geo/GRegion.cpp
+++ b/Geo/GRegion.cpp
@@ -36,34 +36,34 @@ GRegion::~GRegion()
 void GRegion::deleteMesh(bool onlyDeleteElements)
 {
   if(!onlyDeleteElements) {
-    for(unsigned int i = 0; i < mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < mesh_vertices.size(); i++)
       delete mesh_vertices[i];
     mesh_vertices.clear();
     transfinite_vertices.clear();
   }
-  for(unsigned int i = 0; i < tetrahedra.size(); i++) delete tetrahedra[i];
+  for(std::size_t i = 0; i < tetrahedra.size(); i++) delete tetrahedra[i];
   tetrahedra.clear();
-  for(unsigned int i = 0; i < hexahedra.size(); i++) delete hexahedra[i];
+  for(std::size_t i = 0; i < hexahedra.size(); i++) delete hexahedra[i];
   hexahedra.clear();
-  for(unsigned int i = 0; i < prisms.size(); i++) delete prisms[i];
+  for(std::size_t i = 0; i < prisms.size(); i++) delete prisms[i];
   prisms.clear();
-  for(unsigned int i = 0; i < pyramids.size(); i++) delete pyramids[i];
+  for(std::size_t i = 0; i < pyramids.size(); i++) delete pyramids[i];
   pyramids.clear();
-  for(unsigned int i = 0; i < trihedra.size(); i++) delete trihedra[i];
+  for(std::size_t i = 0; i < trihedra.size(); i++) delete trihedra[i];
   trihedra.clear();
-  for(unsigned int i = 0; i < polyhedra.size(); i++) delete polyhedra[i];
+  for(std::size_t i = 0; i < polyhedra.size(); i++) delete polyhedra[i];
   polyhedra.clear();
   deleteVertexArrays();
   model()->destroyMeshCaches();
 }
 
-GRegion::size_type GRegion::getNumMeshElements() const
+std::size_t GRegion::getNumMeshElements() const
 {
   return tetrahedra.size() + hexahedra.size() + prisms.size() +
          pyramids.size() + trihedra.size() + polyhedra.size();
 }
 
-unsigned int GRegion::getNumMeshElementsByType(const int familyType) const
+std::size_t GRegion::getNumMeshElementsByType(const int familyType) const
 {
   if(familyType == TYPE_TET)
     return tetrahedra.size();
@@ -81,10 +81,10 @@ unsigned int GRegion::getNumMeshElementsByType(const int familyType) const
   return 0;
 }
 
-unsigned int GRegion::getNumMeshParentElements()
+std::size_t GRegion::getNumMeshParentElements()
 {
-  unsigned int n = 0;
-  for(unsigned int i = 0; i < polyhedra.size(); i++)
+  std::size_t n = 0;
+  for(std::size_t i = 0; i < polyhedra.size(); i++)
     if(polyhedra[i]->ownsParent()) n++;
   return n;
 }
@@ -124,7 +124,7 @@ MElement *const *GRegion::getStartElementType(int type) const
   return 0;
 }
 
-MElement *GRegion::getMeshElement(unsigned int index) const
+MElement *GRegion::getMeshElement(std::size_t index) const
 {
   if(index < tetrahedra.size())
     return tetrahedra[index];
@@ -149,7 +149,7 @@ MElement *GRegion::getMeshElement(unsigned int index) const
 }
 
 MElement *GRegion::getMeshElementByType(const int familyType,
-                                        const unsigned int index) const
+                                        const std::size_t index) const
 {
   if(familyType == TYPE_TET)
     return tetrahedra[index];
@@ -185,8 +185,8 @@ SBoundingBox3d GRegion::bounds(bool fast) const
   else {
     int ipp = getNumMeshElements() / 20;
     if(ipp < 1) ipp = 1;
-    for(unsigned int i = 0; i < getNumMeshElements(); i += ipp)
-      for(unsigned int j = 0; j < getMeshElement(i)->getNumVertices(); j++)
+    for(std::size_t i = 0; i < getNumMeshElements(); i += ipp)
+      for(std::size_t j = 0; j < getMeshElement(i)->getNumVertices(); j++)
         res += getMeshElement(i)->getVertex(j)->point();
   }
   return res;
@@ -397,7 +397,7 @@ void GRegion::writeGEO(FILE *fp)
     fprintf(fp, "Transfinite Volume {%d}", tag());
     if(meshAttributes.corners.size()) {
       fprintf(fp, " = {");
-      for(unsigned int i = 0; i < meshAttributes.corners.size(); i++) {
+      for(std::size_t i = 0; i < meshAttributes.corners.size(); i++) {
         if(i) fprintf(fp, ",");
         fprintf(fp, "%d", meshAttributes.corners[i]->tag());
       }
@@ -452,7 +452,7 @@ double GRegion::computeSolidProperties(std::vector<double> cg,
   double surface = 0;
   cg[0] = cg[1] = cg[2] = 0.0;
   for(; it != l_faces.end(); ++it, ++itdir) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); ++i) {
       MTriangle *e = (*it)->triangles[i];
       int npt;
       IntPt *pts;
@@ -494,7 +494,7 @@ double GRegion::computeSolidProperties(std::vector<double> cg,
     0.0;
 
   for(; it != l_faces.end(); ++it, ++itdir) {
-    for(unsigned int i = 0; i < (*it)->getNumMeshElements(); ++i) {
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); ++i) {
       MElement *e = (*it)->getMeshElement(i);
       int npt;
       IntPt *pts;
@@ -603,7 +603,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MTetrahedron *> newTetrahedraOrder(tetrahedra.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newTetrahedraOrder[i] = tetrahedra[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -626,7 +626,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MHexahedron *> newHexahedraOrder(hexahedra.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newHexahedraOrder[i] = hexahedra[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -649,7 +649,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MPrism *> newPrismsOrder(prisms.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newPrismsOrder[i] = prisms[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -672,7 +672,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MPyramid *> newPyramidsOrder(pyramids.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newPyramidsOrder[i] = pyramids[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -695,7 +695,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MPolyhedron *> newPolyhedraOrder(polyhedra.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newPolyhedraOrder[i] = polyhedra[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -718,7 +718,7 @@ bool GRegion::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MTrihedron *> newTrihedraOrder(trihedra.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newTrihedraOrder[i] = trihedra[ordering[i]];
       }
 #if __cplusplus >= 201103L
@@ -808,7 +808,7 @@ bool GRegion::setOutwardOrientationMeshConstraint()
       return false;
     }
     int nb_intersect = 0;
-    for(unsigned int i = 0; i < gf->stl_triangles.size(); i += 3) {
+    for(std::size_t i = 0; i < gf->stl_triangles.size(); i += 3) {
       SPoint3 p1 = gf->stl_vertices_xyz[gf->stl_triangles[i]];
       SPoint3 p2 = gf->stl_vertices_xyz[gf->stl_triangles[i + 1]];
       SPoint3 p3 = gf->stl_vertices_xyz[gf->stl_triangles[i + 2]];
@@ -842,7 +842,7 @@ bool GRegion::setOutwardOrientationMeshConstraint()
                      gf_b->tag());
           return false;
         }
-        for(unsigned int i_b = 0; i_b < gf_b->stl_triangles.size(); i_b += 3) {
+        for(std::size_t i_b = 0; i_b < gf_b->stl_triangles.size(); i_b += 3) {
           SPoint3 p1 = gf_b->stl_vertices_xyz[gf_b->stl_triangles[i_b]];
           SPoint3 p2 = gf_b->stl_vertices_xyz[gf_b->stl_triangles[i_b + 1]];
           SPoint3 p3 = gf_b->stl_vertices_xyz[gf_b->stl_triangles[i_b + 2]];
diff --git a/Geo/GRegion.h b/Geo/GRegion.h
index 69d8d7839d74fac9ec38dfc44d73064179e060aa..d121b835de7d942b8a1ea4ffc3bf4fc0eda0ceb3 100644
--- a/Geo/GRegion.h
+++ b/Geo/GRegion.h
@@ -111,19 +111,19 @@ public:
   int getNumElementTypes() const { return 6; }
 
   // get total/by-type number of elements in the mesh
-  size_type getNumMeshElements() const;
-  unsigned int getNumMeshElementsByType(const int familyType) const;
-  unsigned int getNumMeshParentElements();
+  std::size_t getNumMeshElements() const;
+  std::size_t getNumMeshElementsByType(const int familyType) const;
+  std::size_t getNumMeshParentElements();
   void getNumMeshElements(unsigned *const c) const;
 
   // get the start of the array of a type of element
   MElement *const *getStartElementType(int type) const;
 
   // get the element at the given index
-  MElement *getMeshElement(unsigned int index) const;
+  MElement *getMeshElement(std::size_t index) const;
   // get the element at the given index for a given familyType
   MElement *getMeshElementByType(const int familyType,
-                                 const unsigned int index) const;
+                                 const std::size_t index) const;
 
   // reset the mesh attributes to default values
   virtual void resetMeshAttributes();
diff --git a/Geo/GVertex.cpp b/Geo/GVertex.cpp
index 27de69230cde0be1e33137491d37cb498f425215..976975cc5ae62803f6932271ba70154e3812d5ed 100644
--- a/Geo/GVertex.cpp
+++ b/Geo/GVertex.cpp
@@ -20,11 +20,11 @@ GVertex::~GVertex() { deleteMesh(); }
 void GVertex::deleteMesh(bool onlyDeleteElements)
 {
   if(!onlyDeleteElements) {
-    for(unsigned int i = 0; i < mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < mesh_vertices.size(); i++)
       delete mesh_vertices[i];
     mesh_vertices.clear();
   }
-  for(unsigned int i = 0; i < points.size(); i++) delete points[i];
+  for(std::size_t i = 0; i < points.size(); i++) delete points[i];
   points.clear();
   deleteVertexArrays();
   model()->destroyMeshCaches();
@@ -83,7 +83,7 @@ void GVertex::writeGEO(FILE *fp, const std::string &meshSizeParameter)
     fprintf(fp, "Point(%d) = {%.16g, %.16g, %.16g};\n", tag(), x(), y(), z());
 }
 
-unsigned int GVertex::getNumMeshElementsByType(const int familyType) const
+std::size_t GVertex::getNumMeshElementsByType(const int familyType) const
 {
   if(familyType == TYPE_PNT) return points.size();
 
@@ -95,14 +95,14 @@ void GVertex::getNumMeshElements(unsigned *const c) const
   c[0] += points.size();
 }
 
-MElement *GVertex::getMeshElement(unsigned int index) const
+MElement *GVertex::getMeshElement(std::size_t index) const
 {
   if(index < points.size()) return points[index];
   return 0;
 }
 
 MElement *GVertex::getMeshElementByType(const int familyType,
-                                        const unsigned int index) const
+                                        const std::size_t index) const
 {
   if(familyType == TYPE_PNT) return points[index];
 
@@ -152,7 +152,7 @@ std::list<GRegion *> GVertex::regions() const
 
 void GVertex::relocateMeshVertices()
 {
-  for(unsigned int i = 0; i < mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < mesh_vertices.size(); i++) {
     MVertex *v = mesh_vertices[i];
     v->x() = x();
     v->y() = y();
@@ -192,7 +192,7 @@ bool GVertex::reorder(const int elementType, const std::vector<int> &ordering)
       }
 
       std::vector<MPoint *> newPointsOrder(points.size());
-      for(unsigned int i = 0; i < ordering.size(); i++) {
+      for(std::size_t i = 0; i < ordering.size(); i++) {
         newPointsOrder[i] = points[ordering[i]];
       }
 #if __cplusplus >= 201103L
diff --git a/Geo/GVertex.h b/Geo/GVertex.h
index 980929bfe5865de81deb2682063e94a5b29e9924..8d03df9e0f8ab43a203ee7edfe23b7d4611796ab 100644
--- a/Geo/GVertex.h
+++ b/Geo/GVertex.h
@@ -84,15 +84,15 @@ public:
   virtual void writeGEO(FILE *fp, const std::string &meshSizeParameter = "");
 
   // get number of elements in the mesh
-  size_type getNumMeshElements() const { return points.size(); }
-  unsigned int getNumMeshElementsByType(const int familyType) const;
+  std::size_t getNumMeshElements() const { return points.size(); }
+  std::size_t getNumMeshElementsByType(const int familyType) const;
   void getNumMeshElements(unsigned *const c) const;
 
   // get the element at the given index
-  MElement *getMeshElement(unsigned int index) const;
+  MElement *getMeshElement(std::size_t index) const;
   // get the element at the given index for a given familyType
   MElement *getMeshElementByType(const int familyType,
-                                 const unsigned int index) const;
+                                 const std::size_t index) const;
 
   // return true if this vertex is on a seam of the given face
   bool isOnSeam(const GFace *gf) const;
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index 6f9e0bdb7e7be214af892c0454eb9204c4b9376b..6bbf90535fb9302437ce073af0a39b93a3401925 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1714,13 +1714,13 @@ static void ReplaceDuplicatePointsNew(double tol = -1.)
   }
 
   int start = Tree_Nbr(GModel::current()->getGEOInternals()->Points);
-  for(unsigned int i = 0; i < unused.size(); i++) {
+  for(std::size_t i = 0; i < unused.size(); i++) {
     Vertex *V = v2V[unused[i]];
     Tree_Suppress(GModel::current()->getGEOInternals()->Points, &V);
     Tree_Add(GModel::current()->getGEOInternals()->DelPoints, &V);
     delete unused[i];
   }
-  for(unsigned int i = 0; i < used.size(); i++) {
+  for(std::size_t i = 0; i < used.size(); i++) {
     delete used[i];
   }
   int end = Tree_Nbr(GModel::current()->getGEOInternals()->Points);
@@ -3443,7 +3443,7 @@ void SetSurfaceGeneratrices(Surface *s, List_T *loops)
             List_Add(s->Generatrices, &c);
         }
       }
-      for(unsigned int j = 0; j < fromModel.size(); j++) {
+      for(std::size_t j = 0; j < fromModel.size(); j++) {
         ic = fromModel[j];
         GEdge *ge = GModel::current()->getEdgeByTag(abs(ic));
         if(ge) {
diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp
index 7624e1bc545cb0ce5323a87d3f8e1b5ff747110e..9bafcf76c414985e895c9aee97597d08686152cd 100644
--- a/Geo/GeoStringInterface.cpp
+++ b/Geo/GeoStringInterface.cpp
@@ -156,7 +156,7 @@ static std::string list2String(List_T *list)
 static std::string vector2String(const std::vector<int> &v)
 {
   std::ostringstream sstream;
-  for(unsigned int i = 0; i < v.size(); i++) {
+  for(std::size_t i = 0; i < v.size(); i++) {
     if(i) sstream << ", ";
     sstream << v[i];
   }
@@ -166,7 +166,7 @@ static std::string vector2String(const std::vector<int> &v)
 static std::string dimTags2String(const std::vector<std::pair<int, int> > &l)
 {
   std::ostringstream sstream;
-  for(unsigned int i = 0; i < l.size(); i++) {
+  for(std::size_t i = 0; i < l.size(); i++) {
     switch(l[i].first) {
     case 0: sstream << "Point{" << l[i].second << "}; "; break;
     case 1: sstream << "Curve{" << l[i].second << "}; "; break;
@@ -207,7 +207,7 @@ void add_trsfline(std::vector<int> &l, const std::string &fileName,
 {
   std::ostringstream sstream;
   sstream << "Transfinite Curve {";
-  for(unsigned int i = 0; i < l.size(); i++) {
+  for(std::size_t i = 0; i < l.size(); i++) {
     if(i) sstream << ", ";
     sstream << l[i];
   }
@@ -224,7 +224,7 @@ void add_trsfsurf(std::vector<int> &l, const std::string &fileName,
   sstream << "Transfinite Surface {" << l[0] << "}";
   if(l.size() > 1) {
     sstream << " = {";
-    for(unsigned int i = 1; i < l.size(); i++) {
+    for(std::size_t i = 1; i < l.size(); i++) {
       if(i > 1) sstream << ", ";
       sstream << l[i];
     }
@@ -239,7 +239,7 @@ void add_trsfvol(std::vector<int> &l, const std::string &fileName)
 {
   std::ostringstream sstream;
   sstream << "Transfinite Volume{" << l[0] << "} = {";
-  for(unsigned int i = 1; i < l.size(); i++) {
+  for(std::size_t i = 1; i < l.size(); i++) {
     if(i > 1) sstream << ", ";
     sstream << l[i];
   }
@@ -329,7 +329,7 @@ void add_multline(const std::string &type, std::vector<int> &p,
   std::ostringstream sstream;
   sstream << type << "(" << GModel::current()->getMaxElementaryNumber(1) + 1
           << ") = {";
-  for(unsigned int i = 0; i < p.size(); i++) {
+  for(std::size_t i = 0; i < p.size(); i++) {
     if(i) sstream << ", ";
     sstream << p[i];
   }
diff --git a/Geo/GeomMeshMatcher.cpp b/Geo/GeomMeshMatcher.cpp
index 129e64450dca167db40a1b187bdc4eff86a0dcd2..7bd587c634b84589a2ed27e95434dbca655d0ddd 100644
--- a/Geo/GeomMeshMatcher.cpp
+++ b/Geo/GeomMeshMatcher.cpp
@@ -495,8 +495,8 @@ int GeomMeshMatcher::forceTomatch(GModel *geom, GModel *mesh, const double TOL)
 
   std::vector<GEntity*> entities;
   mesh->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++){
-    for(unsigned int 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];
       GVertex *gv = getGVertex (v, geom, TOL);
       bool found = 0;
@@ -531,7 +531,7 @@ int GeomMeshMatcher::forceTomatch(GModel *geom, GModel *mesh, const double TOL)
     }
   }
   for (GModel::eiter it = mesh->firstEdge(); it != mesh->lastEdge(); ++it){
-    for (unsigned int i=0;i<(*it)->lines.size();i++){
+    for (std::size_t i=0;i<(*it)->lines.size();i++){
       MVertex *v1 = geom->getMeshVertexByTag((*it)->lines[i]->getVertex(0)->getNum());
       MVertex *v2 = geom->getMeshVertexByTag((*it)->lines[i]->getVertex(1)->getNum());
       if (v1 && v2){
@@ -554,7 +554,7 @@ int GeomMeshMatcher::forceTomatch(GModel *geom, GModel *mesh, const double TOL)
     }
   }
   for (GModel::fiter it = mesh->firstFace(); it != mesh->lastFace(); ++it){
-    for (unsigned int i=0;i<(*it)->triangles.size();i++){
+    for (std::size_t i=0;i<(*it)->triangles.size();i++){
       MVertex *v1 = geom->getMeshVertexByTag((*it)->triangles[i]->getVertex(0)->getNum());
       MVertex *v2 = geom->getMeshVertexByTag((*it)->triangles[i]->getVertex(1)->getNum());
       MVertex *v3 = geom->getMeshVertexByTag((*it)->triangles[i]->getVertex(2)->getNum());
@@ -565,7 +565,7 @@ int GeomMeshMatcher::forceTomatch(GModel *geom, GModel *mesh, const double TOL)
       else if (v3->onWhat()->dim() == 2)
         ((GFace*)v3->onWhat())->triangles.push_back(new MTriangle(v1,v2,v3));
     }
-    for (unsigned int i=0;i<(*it)->quadrangles.size();i++){
+    for (std::size_t i=0;i<(*it)->quadrangles.size();i++){
       MVertex *v1 = geom->getMeshVertexByTag((*it)->quadrangles[i]->getVertex(0)->getNum());
       MVertex *v2 = geom->getMeshVertexByTag((*it)->quadrangles[i]->getVertex(1)->getNum());
       MVertex *v3 = geom->getMeshVertexByTag((*it)->quadrangles[i]->getVertex(2)->getNum());
@@ -680,7 +680,7 @@ static void copy_vertices (GVertex *to, GVertex *from,
 
   to->deleteMesh();
   if (from) {
-    for (unsigned int i=0;i<1;i++){
+    for (std::size_t i=0;i<1;i++){
       MVertex *v_from = from->mesh_vertices[i];
       MVertex *v_to = new MVertex (v_from->x(),v_from->y(),v_from->z(), to);
       to->mesh_vertices.push_back(v_to);
@@ -693,7 +693,7 @@ static void copy_vertices (GRegion *to, GRegion *from,
 
   to->deleteMesh();
   if (from) {
-    for (unsigned int i=0;i<from->mesh_vertices.size();i++){
+    for (std::size_t i=0;i<from->mesh_vertices.size();i++){
       MVertex *v_from = from->mesh_vertices[i];
       MVertex *v_to = new MVertex (v_from->x(),v_from->y(),v_from->z(), to);
       to->mesh_vertices.push_back(v_to);
@@ -713,7 +713,7 @@ static void copy_vertices (GEdge* to, GEdge* from,
     return;
   }
 
-  for (unsigned int i=0;i<from->mesh_vertices.size();i++){
+  for (std::size_t i=0;i<from->mesh_vertices.size();i++){
     MVertex *v_from = from->mesh_vertices[i];
     double t;
     GPoint gp = to->closestPoint(SPoint3(v_from->x(),v_from->y(),v_from->z()), t);
@@ -726,7 +726,7 @@ static void copy_vertices (GEdge* to, GEdge* from,
 static void copy_vertices (GFace *to, GFace *from,
                            std::map<MVertex*,MVertex*> &_mesh_to_geom){
 
-  for (unsigned int i=0;i<from->mesh_vertices.size();i++){
+  for (std::size_t i=0;i<from->mesh_vertices.size();i++){
     MVertex *v_from = from->mesh_vertices[i];
     double uv[2];
     GPoint gp = to->closestPoint ( SPoint3(v_from->x(),v_from->y(),v_from->z()), uv );
@@ -762,7 +762,7 @@ static void copy_elements (std::vector<ELEMENT*> &to,
                            std::map<MVertex*,MVertex*> &_mesh_to_geom){
   MElementFactory toto;
   to.clear();
-  for (unsigned int i=0;i < from.size();i++){
+  for (std::size_t i=0;i < from.size();i++){
     ELEMENT *e = from[i];
     std::vector<MVertex*> nodes;
     for(std::size_t j=0;j<e->getNumVertices();j++) {
@@ -789,13 +789,13 @@ void copy_vertices (GModel *geom, GModel *mesh,
                     std::vector<Pair<GRegion*, GRegion*> > *coresp_r){
 
   // copy all elements
-  for (unsigned int i=0;i<coresp_v->size();++i)
+  for (std::size_t i=0;i<coresp_v->size();++i)
     copy_vertices((*coresp_v)[i].first(),(*coresp_v)[i].second(),_mesh_to_geom);
-  for (unsigned int i=0;i<coresp_e->size();++i)
+  for (std::size_t i=0;i<coresp_e->size();++i)
     copy_vertices((*coresp_e)[i].first(),(*coresp_e)[i].second(),_mesh_to_geom);
-  for (unsigned int i=0;i<coresp_f->size();++i)
+  for (std::size_t i=0;i<coresp_f->size();++i)
     copy_vertices((*coresp_f)[i].first(),(*coresp_f)[i].second(),_mesh_to_geom);
-  for (unsigned int i=0;i<coresp_r->size();++i)
+  for (std::size_t i=0;i<coresp_r->size();++i)
     copy_vertices((*coresp_r)[i].first(),(*coresp_r)[i].second(),_mesh_to_geom);
 
 }
@@ -807,26 +807,26 @@ void copy_elements (GModel *geom, GModel *mesh, std::map<MVertex*,MVertex*> &_me
 
   // copy all elements
 
-  for (unsigned int i=0;i<coresp_v->size();++i) {
+  for (std::size_t i=0;i<coresp_v->size();++i) {
     GVertex* dest = (*coresp_v)[i].first();
     GVertex* orig = (*coresp_v)[i].second();
     copy_elements<MPoint>(dest->points,orig->points,_mesh_to_geom);
   }
 
-  for (unsigned int i=0;i<coresp_e->size();++i) {
+  for (std::size_t i=0;i<coresp_e->size();++i) {
     GEdge* dest = (*coresp_e)[i].first();
     GEdge* orig = (*coresp_e)[i].second();
     copy_elements<MLine>(dest->lines,orig->lines,_mesh_to_geom);
   }
 
-  for (unsigned int i=0;i<coresp_f->size();++i){
+  for (std::size_t i=0;i<coresp_f->size();++i){
     GFace* dest = (*coresp_f)[i].first();
     GFace* orig = (*coresp_f)[i].second();
     copy_elements<MTriangle>  (dest->triangles  ,orig->triangles  ,_mesh_to_geom);
     copy_elements<MQuadrangle>(dest->quadrangles,orig->quadrangles,_mesh_to_geom);
   }
 
-  for (unsigned int i=0;i<coresp_r->size();++i){
+  for (std::size_t i=0;i<coresp_r->size();++i){
     GRegion* dest = (*coresp_r)[i].first();
     GRegion* orig = (*coresp_r)[i].second();
     copy_elements<MTetrahedron>(dest->tetrahedra,orig->tetrahedra,_mesh_to_geom);
diff --git a/Geo/Homology.cpp b/Geo/Homology.cpp
index 4c5a732fee2910c7aff2111fec57d6eb26b06370..02eb954aec8c618d625133c4ecfd3ee75970555c 100644
--- a/Geo/Homology.cpp
+++ b/Geo/Homology.cpp
@@ -37,7 +37,7 @@ Homology::Homology(GModel *model, const std::vector<int> &physicalDomain,
     _getEntities(_imdomain, _immuneEntities);
   }
 
-  for(unsigned int i = 0; i < 4; i++) {
+  for(std::size_t i = 0; i < 4; i++) {
     _homologyComputed[i] = false;
     _cohomologyComputed[i] = false;
     _betti[i] = -1;
@@ -62,12 +62,12 @@ void Homology::_getEntities(const std::vector<int> &physicalGroups,
   _model->getPhysicalGroups(groups);
   std::map<int, std::vector<GEntity *> >::iterator it;
 
-  for(unsigned int i = 0; i < physicalGroups.size(); i++) {
+  for(std::size_t i = 0; i < physicalGroups.size(); i++) {
     for(int j = 0; j < 4; j++) {
       it = groups[j].find(physicalGroups.at(i));
       if(it != groups[j].end()) {
         std::vector<GEntity *> physicalGroup = (*it).second;
-        for(unsigned int k = 0; k < physicalGroup.size(); k++) {
+        for(std::size_t k = 0; k < physicalGroup.size(); k++) {
           entities.push_back(physicalGroup.at(k));
         }
       }
@@ -79,8 +79,8 @@ void Homology::_getElements(const std::vector<GEntity *> &entities,
                             std::vector<MElement *> &elements)
 {
   elements.clear();
-  for(unsigned int j = 0; j < entities.size(); j++) {
-    for(unsigned int i = 0; i < entities.at(j)->getNumMeshElements(); i++) {
+  for(std::size_t j = 0; j < entities.size(); j++) {
+    for(std::size_t i = 0; i < entities.at(j)->getNumMeshElements(); i++) {
       MElement *element = entities.at(j)->getMeshElement(i);
       elements.push_back(element);
     }
@@ -124,10 +124,10 @@ void Homology::_createCellComplex()
 
 void Homology::_deleteChains(std::vector<int> dim)
 {
-  for(unsigned int j = 0; j < dim.size(); j++) {
+  for(std::size_t j = 0; j < dim.size(); j++) {
     int d = dim.at(j);
     if(d < 0 || d > 3) continue;
-    for(unsigned int i = 0; i < _chains[d].size(); i++) {
+    for(std::size_t i = 0; i < _chains[d].size(); i++) {
       delete _chains[d].at(i);
     }
     _chains[d].clear();
@@ -137,10 +137,10 @@ void Homology::_deleteChains(std::vector<int> dim)
 
 void Homology::_deleteCochains(std::vector<int> dim)
 {
-  for(unsigned int j = 0; j < dim.size(); j++) {
+  for(std::size_t j = 0; j < dim.size(); j++) {
     int d = dim.at(j);
     if(d < 0 || d > 3) continue;
-    for(unsigned int i = 0; i < _cochains[d].size(); i++) {
+    for(std::size_t i = 0; i < _cochains[d].size(); i++) {
       delete _cochains[d].at(i);
     }
     _cochains[d].clear();
@@ -234,7 +234,7 @@ void Homology::findHomologyBasis(std::vector<int> dim)
   Msg::StatusBar(false, "H_0: %d, H_1: %d, H_2: %d, H_3: %d", _betti[0],
                  _betti[1], _betti[2], _betti[3]);
 
-  for(unsigned int i = 0; i < dim.size(); i++) {
+  for(std::size_t i = 0; i < dim.size(); i++) {
     int d = dim.at(i);
     if(d >= 0 && d < 4) _homologyComputed[d] = true;
   }
@@ -323,7 +323,7 @@ void Homology::findCohomologyBasis(std::vector<int> dim)
   Msg::StatusBar(false, "H^0: %d, H^1: %d, H^2: %d, H^3: %d", _betti[0],
                  _betti[1], _betti[2], _betti[3]);
 
-  for(unsigned int i = 0; i < dim.size(); i++) {
+  for(std::size_t i = 0; i < dim.size(); i++) {
     int d = dim.at(i);
     if(d >= 0 && d < 4) _cohomologyComputed[d] = true;
   }
@@ -341,7 +341,7 @@ bool Homology::isBettiComputed() const
 bool Homology::isHomologyComputed(std::vector<int> dim) const
 {
   bool computed = true;
-  for(unsigned int i = 0; i < dim.size(); i++) {
+  for(std::size_t i = 0; i < dim.size(); i++) {
     int d = dim.at(i);
     if(d < 0 || d > 3) continue;
     computed = computed && _homologyComputed[d];
@@ -352,7 +352,7 @@ bool Homology::isHomologyComputed(std::vector<int> dim) const
 bool Homology::isCohomologyComputed(std::vector<int> dim) const
 {
   bool computed = true;
-  for(unsigned int i = 0; i < dim.size(); i++) {
+  for(std::size_t i = 0; i < dim.size(); i++) {
     int d = dim.at(i);
     if(d < 0 || d > 3) continue;
     computed = computed && _cohomologyComputed[d];
@@ -364,7 +364,7 @@ void Homology::findCompatibleBasisPair(int master, std::vector<int> dim)
 {
   if(!this->isHomologyComputed(dim)) this->findHomologyBasis(dim);
   if(!this->isCohomologyComputed(dim)) this->findCohomologyBasis(dim);
-  for(unsigned int idim = 0; idim < dim.size(); idim++) {
+  for(std::size_t idim = 0; idim < dim.size(); idim++) {
     int d = dim.at(idim);
     if(d < 1 || d > 2) continue;
     int n = this->betti(d);
@@ -432,7 +432,7 @@ std::vector<int> Homology::_addToModel(int dim, bool co, bool post,
   if(dim < 0 || dim > 3) return physicals;
   int pgnum = -1;
   if(!co) {
-    for(unsigned int i = 0; i < _chains[dim].size(); i++) {
+    for(std::size_t i = 0; i < _chains[dim].size(); i++) {
       if(physicalNumRequest != -1)
         pgnum = physicalNumRequest + i;
       else
@@ -442,7 +442,7 @@ std::vector<int> Homology::_addToModel(int dim, bool co, bool post,
     }
   }
   else {
-    for(unsigned int i = 0; i < _cochains[dim].size(); i++) {
+    for(std::size_t i = 0; i < _cochains[dim].size(); i++) {
       if(physicalNumRequest != -1)
         pgnum = physicalNumRequest + i;
       else
@@ -505,7 +505,7 @@ void Homology::getHomologyBasis(int dim, std::vector<Chain<int> > &hom)
   if(!_homologyComputed[dim]) findHomologyBasis();
 
   hom.resize(_chains[dim].size());
-  for(unsigned int i = 0; i < _chains[dim].size(); i++)
+  for(std::size_t i = 0; i < _chains[dim].size(); i++)
     hom[i] = *_chains[dim].at(i);
 }
 
@@ -515,7 +515,7 @@ void Homology::getCohomologyBasis(int dim, std::vector<Chain<int> > &coh)
   if(!_cohomologyComputed[dim]) findCohomologyBasis();
 
   coh.resize(_cochains[dim].size());
-  for(unsigned int i = 0; i < _cochains[dim].size(); i++)
+  for(std::size_t i = 0; i < _cochains[dim].size(); i++)
     coh[i] = *_cochains[dim].at(i);
 }
 
@@ -605,7 +605,7 @@ std::string Homology::_getDomainString(const std::vector<int> &domain,
   if(domain.empty())
     domainString += "0";
   else {
-    for(unsigned int i = 0; i < domain.size(); i++) {
+    for(std::size_t i = 0; i < domain.size(); i++) {
       std::string temp = convertInt(domain.at(i));
       domainString += temp;
       if(domain.size() - 1 > i) {
@@ -617,7 +617,7 @@ std::string Homology::_getDomainString(const std::vector<int> &domain,
 
   if(!subdomain.empty()) {
     domainString += ",{";
-    for(unsigned int i = 0; i < subdomain.size(); i++) {
+    for(std::size_t i = 0; i < subdomain.size(); i++) {
       std::string temp = convertInt(subdomain.at(i));
       domainString += temp;
       if(subdomain.size() - 1 > i) {
diff --git a/Geo/MEdge.cpp b/Geo/MEdge.cpp
index a27a2b86882577a211f5f6412304a252765a5fd1..cfda0d2b64b257de1ddec25a8708b1def610ba15 100644
--- a/Geo/MEdge.cpp
+++ b/Geo/MEdge.cpp
@@ -157,7 +157,7 @@ bool SortEdgeConsecutive(const std::vector<MEdge> &e,
 MEdgeN::MEdgeN(const std::vector<MVertex *> &v)
 {
   _v.resize(v.size());
-  for(unsigned int i = 0; i < v.size(); i++) _v[i] = v[i];
+  for(std::size_t i = 0; i < v.size(); i++) _v[i] = v[i];
 }
 
 MEdge MEdgeN::getEdge() const { return MEdge(_v[0], _v[1]); }
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index b8960c7f0459ecf2460a03972517d9e9797b6119..3a5f827bd96c634fec520b19a14665b70a34568a 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -236,7 +236,7 @@ MFaceN MElement::getHighOrderFace(int num, int sign, int rot)
   const std::vector<int> &closure = fs->getClosure(id);
 
   std::vector<MVertex *> vertices(closure.size());
-  for(unsigned int i = 0; i < closure.size(); ++i) {
+  for(std::size_t i = 0; i < closure.size(); ++i) {
     vertices[i] = getVertex(closure[i]);
   }
 
@@ -940,7 +940,7 @@ double MElement::getJacobian(const std::vector<SVector3> &gsf,
 double MElement::getJacobian(const std::vector<SVector3> &gsf,
                              double *jac) const
 {
-  for(unsigned int i = 0; i < 9; i++) {
+  for(std::size_t i = 0; i < 9; i++) {
     jac[i] = 0.;
   }
 
@@ -1446,7 +1446,7 @@ void MElement::writeMSH2(FILE *fp, double version, bool binary, int num,
       int numGhosts = ghosts->size();
       fprintf(fp, " %d %d %d %d %d", 4 + numGhosts + par + dom, abs(physical),
               elementary, 1 + numGhosts, _partition);
-      for(unsigned int i = 0; i < ghosts->size(); i++)
+      for(std::size_t i = 0; i < ghosts->size(); i++)
         fprintf(fp, " %d", -(*ghosts)[i]);
     }
     if(version >= 2.0 && par) fprintf(fp, " %d", parentNum);
@@ -1501,14 +1501,14 @@ void MElement::writeMSH4(FILE *fp, bool binary)
 
   if(binary) { // Implemented but not used in practice
     fwrite(&_num, sizeof(int), 1, fp);
-    for(unsigned int i = 0; i < verts.size(); i++) {
+    for(std::size_t i = 0; i < verts.size(); i++) {
       int vertNum = verts[i]->getNum();
       fwrite(&vertNum, sizeof(int), 1, fp);
     }
   }
   else {
     fprintf(fp, "%d ", _num);
-    for(unsigned int i = 0; i < verts.size(); i++) {
+    for(std::size_t i = 0; i < verts.size(); i++) {
       fprintf(fp, "%d ", verts[i]->getNum());
     }
     fprintf(fp, "\n");
@@ -2622,9 +2622,9 @@ MElement *MElementFactory::create(int num, int type,
 
   MElement *element = create(type, vertices, num, part, false, parent);
 
-  for(unsigned int j = 0; j < ghosts.size(); j++) {
-    // model->getGhostCells().insert(std::pair<MElement*, short>(element,
-    // ghosts[j]));
+  for(std::size_t j = 0; j < ghosts.size(); j++) {
+    // model->getGhostCells().insert(std::pair<MElement*, short>
+    //                               (element, ghosts[j]));
   }
   if(part > model->getNumPartitions()) model->setNumPartitions(part);
 
diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp
index d0aaeaf2c42b8c94f2696aa423825133747149e0..ae06c75eb9435ac2c0af9ca854bfc037dd077e70 100644
--- a/Geo/MElementCut.cpp
+++ b/Geo/MElementCut.cpp
@@ -26,7 +26,7 @@ void MPolyhedron::_init()
 {
   if(_parts.size() == 0) return;
 
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     if(_parts[i]->getVolume() * _parts[0]->getVolume() < 0.)
       _parts[i]->reverse();
     for(int j = 0; j < 4; j++) {
@@ -55,7 +55,7 @@ void MPolyhedron::_init()
   }
 
   if(_parts.size() >= 4) {
-    for(unsigned int i = 0; i < _faces.size(); i++) {
+    for(std::size_t i = 0; i < _faces.size(); i++) {
       for(int j = 0; j < 3; j++) {
         int k;
         for(k = _edges.size() - 1; k >= 0; k--)
@@ -72,7 +72,7 @@ void MPolyhedron::_init()
   }
 
   // innerVertices
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     for(int j = 0; j < 4; j++) {
       if(std::find(_vertices.begin(), _vertices.end(),
                    _parts[i]->getVertex(j)) == _vertices.end())
@@ -85,7 +85,7 @@ bool MPolyhedron::isInside(double u, double v, double w) const
 {
   if(!_orig) return false;
   double uvw[3] = {u, v, w};
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     double verts[4][3];
     for(int j = 0; j < 4; j++) {
       MVertex *vij = _parts[i]->getVertex(j);
@@ -111,7 +111,7 @@ void MPolyhedron::getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
   if(!_orig) return;
   double jac[3][3];
   _intpt = new IntPt[getNGQTetPts(pOrder) * _parts.size()];
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     int nptsi;
     IntPt *ptsi;
     _parts[i]->getIntegrationPoints(pOrder, &nptsi, &ptsi);
@@ -159,7 +159,7 @@ void MPolygon::_initVertices()
     n = _orig->getFace(0).normal();
   else
     n = _parts[0]->getFace(0).normal();
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     SVector3 ni = _parts[i]->getFace(0).normal();
     if(dot(n, ni) < 0.) _parts[i]->reverse();
   }
@@ -169,7 +169,7 @@ void MPolygon::_initVertices()
   edg.reserve(_parts[0]->getNumEdges());
   for(int j = 0; j < _parts[0]->getNumEdges(); j++)
     edg.push_back(_parts[0]->getEdge(j));
-  for(unsigned int i = 1; i < _parts.size(); i++) {
+  for(std::size_t i = 1; i < _parts.size(); i++) {
     for(int j = 0; j < _parts[i]->getNumEdges(); j++) {
       bool found = false;
       MEdge ed = _parts[i]->getEdge(j);
@@ -221,7 +221,7 @@ void MPolygon::_initVertices()
   edg.erase(edg.begin());
   while(edg.size()) {
     MVertex *v = _edges[_edges.size() - 1].getVertex(1);
-    for(unsigned int i = 0; i < edg.size(); i++) {
+    for(std::size_t i = 0; i < edg.size(); i++) {
       if(edg[i].getVertex(0) == v) {
         _edges.push_back(edg[i]);
         edg.erase(edg.begin() + i);
@@ -240,12 +240,12 @@ void MPolygon::_initVertices()
     }
   }
 
-  for(unsigned int i = 0; i < _edges.size(); i++) {
+  for(std::size_t i = 0; i < _edges.size(); i++) {
     _vertices.push_back(_edges[i].getVertex(0));
   }
 
   // innerVertices
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     for(int j = 0; j < 3; j++) {
       if(std::find(_vertices.begin(), _vertices.end(),
                    _parts[i]->getVertex(j)) == _vertices.end())
@@ -258,7 +258,7 @@ bool MPolygon::isInside(double u, double v, double w) const
 {
   if(!getParent()) return false;
   double uvw[3] = {u, v, w};
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     double v_uvw[3][3];
     for(int j = 0; j < 3; j++) {
       MVertex *vij = _parts[i]->getVertex(j);
@@ -283,7 +283,7 @@ void MPolygon::getIntegrationPoints(int pOrder, int *npts, IntPt **pts)
   if(!getParent()) return;
   double jac[3][3];
   _intpt = new IntPt[getNGQTPts(pOrder) * _parts.size()];
-  for(unsigned int i = 0; i < _parts.size(); i++) {
+  for(std::size_t i = 0; i < _parts.size(); i++) {
     int nptsi;
     IntPt *ptsi;
     _parts[i]->getIntegrationPoints(pOrder, &nptsi, &ptsi);
@@ -494,7 +494,7 @@ assignPhysicals(GModel *GM, std::vector<int> &gePhysicals, int reg, int dim,
                 std::map<int, std::map<int, std::string> > physicals[4],
                 std::map<int, int> &newPhysTags, int lsTag)
 {
-  for(unsigned int i = 0; i < gePhysicals.size(); i++) {
+  for(std::size_t i = 0; i < gePhysicals.size(); i++) {
     int phys = gePhysicals[i];
 
     if(lsTag > 0 && newPhysTags.count(phys)) {
@@ -570,7 +570,7 @@ static int getElementaryTag(int lsTag, int elementary,
 static void getPhysicalTag(int lsTag, const std::vector<int> &physicals,
                            std::map<int, int> &newPhysTags)
 {
-  for(unsigned int i = 0; i < physicals.size(); i++) {
+  for(std::size_t i = 0; i < physicals.size(); i++) {
     int phys = physicals[i];
     if(lsTag < 0) {
       if(!newPhysTags.count(-phys)) newPhysTags[-phys] = ++newPhysTags[0];
@@ -856,11 +856,11 @@ static void elementCutMesh(
   std::vector<DI_IntegrationPoint *> ipV;
   std::vector<DI_IntegrationPoint *> ipS;
   bool isCut = false;
-  unsigned int nbL = lines.size();
-  unsigned int nbTr = triangles.size();
-  unsigned int nbQ = quads.size();
-  unsigned int nbTe = tetras.size();
-  unsigned int nbH = hexas.size();
+  std::size_t nbL = lines.size();
+  std::size_t nbTr = triangles.size();
+  std::size_t nbQ = quads.size();
+  std::size_t nbTe = tetras.size();
+  std::size_t nbH = hexas.size();
 
   MElement *copy = e->copy(vertexMap, newParents, newDomains);
   MElement *parent = eParent ? copy->getParent() : copy;
@@ -983,7 +983,7 @@ static void elementCutMesh(
     if(isCut) {
       std::vector<MTetrahedron *> poly[2];
 
-      for(unsigned int i = nbTe; i < tetras.size(); i++) {
+      for(std::size_t i = nbTe; i < tetras.size(); i++) {
         MVertex *mv[4] = {NULL, NULL, NULL, NULL};
         for(int j = 0; j < 4; j++) {
           int numV = getElementVertexNum(tetras[i]->pt(j), e);
@@ -1052,7 +1052,7 @@ static void elementCutMesh(
         bords.push_back(std::pair<MElement *, MElement *>(dom, tb));
       }
       borders[1].erase(itr.first, itr.second);
-      for(unsigned int i = 0; i < bords.size(); i++)
+      for(std::size_t i = 0; i < bords.size(); i++)
         borders[1].insert(bords[i]);
       if(eParent) {
         copy->setParent(NULL, false);
@@ -1081,7 +1081,7 @@ static void elementCutMesh(
                       lsTag);
     }
 
-    for(unsigned int i = nbTr; i < triangles.size(); i++) {
+    for(std::size_t i = nbTr; i < triangles.size(); i++) {
       MVertex *mv[3] = {NULL, NULL, NULL};
       for(int j = 0; j < 3; j++) {
         int numV = getElementVertexNum(triangles[i]->pt(j), e);
@@ -1188,7 +1188,7 @@ static void elementCutMesh(
     if(isCut) {
       std::vector<MTriangle *> poly[2];
 
-      for(unsigned int i = nbTr; i < triangles.size(); i++) {
+      for(std::size_t i = nbTr; i < triangles.size(); i++) {
         MVertex *mv[3] = {NULL, NULL, NULL};
         for(int j = 0; j < 3; j++) {
           int numV = getElementVertexNum(triangles[i]->pt(j), e);
@@ -1218,7 +1218,7 @@ static void elementCutMesh(
           poly[1].push_back(mt);
       }
       // if quads
-      for(unsigned int i = nbQ; i < quads.size(); i++) {
+      for(std::size_t i = nbQ; i < quads.size(); i++) {
         MVertex *mv[4] = {NULL, NULL, NULL, NULL};
         for(int j = 0; j < 4; j++) {
           int numV = getElementVertexNum(quads[i]->pt(j), e);
@@ -1308,7 +1308,7 @@ static void elementCutMesh(
         bords.push_back(std::pair<MElement *, MElement *>(dom, lb));
       }
       borders[0].erase(itr.first, itr.second);
-      for(unsigned int i = 0; i < bords.size(); i++)
+      for(std::size_t i = 0; i < bords.size(); i++)
         borders[0].insert(bords[i]);
       if(eParent) {
         copy->setParent(NULL, false);
@@ -1337,7 +1337,7 @@ static void elementCutMesh(
             std::pair<MElement *, MElement *>(copy->getDomain(i), copy));
     }
 
-    for(unsigned int i = nbL; i < lines.size(); i++) {
+    for(std::size_t i = nbL; i < lines.size(); i++) {
       MVertex *mv[2] = {NULL, NULL};
       for(int j = 0; j < 2; j++) {
         int numV = getElementVertexNum(lines[i]->pt(j), e);
@@ -1405,7 +1405,7 @@ static void elementCutMesh(
 
     if(isCut) {
       bool own = (eParent && !e->ownsParent()) ? false : true;
-      for(unsigned int i = nbL; i < lines.size(); i++) {
+      for(std::size_t i = nbL; i < lines.size(); i++) {
         MVertex *mv[2] = {NULL, NULL};
         for(int j = 0; j < 2; j++) {
           int numV = getElementVertexNum(lines[i]->pt(j), e);
@@ -1479,8 +1479,8 @@ static void elementCutMesh(
   default: Msg::Error("This type of element cannot be cut %d.", eType); break;
   }
 
-  for(unsigned int i = 0; i < ipS.size(); i++) delete ipS[i];
-  for(unsigned int i = 0; i < ipV.size(); i++) delete ipV[i];
+  for(std::size_t i = 0; i < ipS.size(); i++) delete ipS[i];
+  for(std::size_t i = 0; i < ipV.size(); i++) delete ipV[i];
   delete[] nodeLs;
 }
 
@@ -1518,8 +1518,8 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
     }
   if(lsPoints) {
     std::vector<MVertex *> vert;
-    for(unsigned int i = 0; i < gmEntities.size(); i++) {
-      for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
+    for(std::size_t i = 0; i < gmEntities.size(); i++) {
+      for(std::size_t j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
         vert.push_back(gmEntities[i]->getMeshVertex(j));
       }
     }
@@ -1531,8 +1531,8 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
   }
 
   // compute and store levelset values + create new nodes
-  for(unsigned int i = 0; i < gmEntities.size(); i++) {
-    for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
+  for(std::size_t i = 0; i < gmEntities.size(); i++) {
+    for(std::size_t j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
       MVertex *vi = gmEntities[i]->getMeshVertex(j);
       if(vi->getIndex() < 0) continue;
       int k = 0;
@@ -1549,8 +1549,8 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
 
   // element number increment
   int numEle = gm->getNumMeshElements() + gm->getNumMeshParentElements();
-  for(unsigned int i = 0; i < gmEntities.size(); i++) {
-    for(unsigned int j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < gmEntities.size(); i++) {
+    for(std::size_t j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
       MElement *e = gmEntities[i]->getMeshElement(j);
       if(e->getNum() > numEle) numEle = e->getNum();
       if(e->getParent())
@@ -1573,8 +1573,8 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
 
   // SplitMesh
   if(!cutElem) {
-    for(unsigned int i = 0; i < gmEntities.size(); i++) {
-      for(unsigned int j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
+    for(std::size_t i = 0; i < gmEntities.size(); i++) {
+      for(std::size_t j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
         MElement *e = gmEntities[i]->getMeshElement(j);
         e->setVolumePositive();
         elementSplitMesh(e, RPN, verticesLs, gmEntities[i], gm, numEle,
@@ -1600,14 +1600,14 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
   std::vector<DI_Tetra *> tetras;
   std::vector<DI_Hexa *> hexas;
   std::vector<int> lsLineRegs;
-  for(unsigned int i = 0; i < gmEntities.size(); i++) {
+  for(std::size_t i = 0; i < gmEntities.size(); i++) {
     std::vector<int> oldLineRegs;
     for(std::map<int, std::vector<MElement *> >::iterator it =
           elements[1].begin();
         it != elements[1].end(); it++)
       oldLineRegs.push_back(it->first);
     int nbBorders = borders[0].size();
-    for(unsigned int j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
+    for(std::size_t j = 0; j < gmEntities[i]->getNumMeshElements(); j++) {
       MElement *e = gmEntities[i]->getMeshElement(j);
       e->setVolumePositive();
       elementCutMesh(e, RPN, verticesLs, gmEntities[i], gm, numEle, vertexMap,
@@ -1632,7 +1632,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
         else
           lsLineRegs.push_back(it->first);
       }
-      for(unsigned int j = 0; j < lsLineRegs.size(); j++) {
+      for(std::size_t j = 0; j < lsLineRegs.size(); j++) {
         int nLR = lsLineRegs[j];
         bool havePhys = physicals[1][nLR].size();
         while(1) {
@@ -1641,7 +1641,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
           elements[1][nLR].erase(elements[1][nLR].begin());
           MVertex *v1 = conLines[0]->getVertex(0);
           MVertex *v2 = conLines[0]->getVertex(1);
-          for(unsigned int k = 0; k < elements[1][nLR].size();) {
+          for(std::size_t k = 0; k < elements[1][nLR].size();) {
             MVertex *va = elements[1][nLR][k]->getVertex(0);
             MVertex *vb = elements[1][nLR][k]->getVertex(1);
             if(va == v1 || vb == v1 || va == v2 || vb == v2) {
@@ -1666,11 +1666,11 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
             if(newPhys)
               assignLsPhysical(gm, newReg, 1, physicals, newPhys,
                                lines[lines.size() - 1]->lsTag());
-            for(unsigned int k = 0; k < conLines.size(); k++)
+            for(std::size_t k = 0; k < conLines.size(); k++)
               elements[1][newReg].push_back(conLines[k]);
           }
           else {
-            for(unsigned int k = 0; k < conLines.size(); k++)
+            for(std::size_t k = 0; k < conLines.size(); k++)
               elements[1][nLR].push_back(conLines[k]);
             break;
           }
@@ -1680,11 +1680,11 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
 
     for(DI_Point::Container::iterator it = cp.begin(); it != cp.end(); it++)
       delete *it;
-    for(unsigned int k = 0; k < lines.size(); k++) delete lines[k];
-    for(unsigned int k = 0; k < triangles.size(); k++) delete triangles[k];
-    for(unsigned int k = 0; k < quads.size(); k++) delete quads[k];
-    for(unsigned int k = 0; k < tetras.size(); k++) delete tetras[k];
-    for(unsigned int k = 0; k < hexas.size(); k++) delete hexas[k];
+    for(std::size_t k = 0; k < lines.size(); k++) delete lines[k];
+    for(std::size_t k = 0; k < triangles.size(); k++) delete triangles[k];
+    for(std::size_t k = 0; k < quads.size(); k++) delete quads[k];
+    for(std::size_t k = 0; k < tetras.size(); k++) delete tetras[k];
+    for(std::size_t k = 0; k < hexas.size(); k++) delete hexas[k];
     cp.clear();
     lines.clear();
     triangles.clear();
@@ -1700,7 +1700,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
     for(std::map<int, std::vector<MElement*> >::iterator it = elements[i].begin();
         it != elements[i].end(); it++){
       printf(" elementary : %d\n",it->first);
-      for(unsigned int j = 0; j < it->second.size(); j++){
+      for(std::size_t j = 0; j < it->second.size(); j++){
         MElement *e = it->second[j];
         printf("element %d",e->getNum());
         if(e->getParent()) printf(" par=%d (%d)",e->getParent()->getNum(),e->ownsParent());
diff --git a/Geo/MElementCut.h b/Geo/MElementCut.h
index 7b8ca4588255566eaa97754a3c51e43f7ba82302..2ae9c1a3c72e2c81177942ead901aae2a8aed39a 100644
--- a/Geo/MElementCut.h
+++ b/Geo/MElementCut.h
@@ -39,7 +39,7 @@ public:
       Msg::Error("Got %d vertices for polyhedron", (int)v.size());
       return;
     }
-    for(unsigned int i = 0; i < v.size(); i += 4)
+    for(std::size_t i = 0; i < v.size(); i += 4)
       _parts.push_back(new MTetrahedron(v[i], v[i + 1], v[i + 2], v[i + 3]));
     _init();
   }
@@ -47,13 +47,13 @@ public:
               bool owner = false, MElement *orig = NULL)
     : MElement(num, part), _owner(owner), _orig(orig), _intpt(0)
   {
-    for(unsigned int i = 0; i < vT.size(); i++) _parts.push_back(vT[i]);
+    for(std::size_t i = 0; i < vT.size(); i++) _parts.push_back(vT[i]);
     _init();
   }
   ~MPolyhedron()
   {
     if(_owner) delete _orig;
-    for(unsigned int i = 0; i < _parts.size(); i++) delete _parts[i];
+    for(std::size_t i = 0; i < _parts.size(); i++) delete _parts[i];
     if(_intpt) delete[] _intpt;
   }
   virtual int getDim() const { return 3; }
@@ -81,7 +81,7 @@ public:
                           SVector3 *n)
   {
     MEdge e(getEdge(num));
-    for(unsigned int i = 0; i < _faces.size(); i++)
+    for(std::size_t i = 0; i < _faces.size(); i++)
       for(int j = 0; j < 3; j++)
         if(_faces[i].getEdge(j) == e)
           _getEdgeRep(e.getVertex(0), e.getVertex(1), x, y, z, n, i);
@@ -112,7 +112,7 @@ public:
   virtual int getTypeForMSH() const { return MSH_POLYH_; }
   virtual void reverse()
   {
-    for(unsigned int i = 0; i < _parts.size(); i++) _parts[i]->reverse();
+    for(std::size_t i = 0; i < _parts.size(); i++) _parts[i]->reverse();
     _vertices.clear();
     _innerVertices.clear();
     _edges.clear();
@@ -122,7 +122,7 @@ public:
   virtual double getVolume()
   {
     double vol = 0;
-    for(unsigned int i = 0; i < _parts.size(); i++)
+    for(std::size_t i = 0; i < _parts.size(); i++)
       vol += _parts[i]->getVolume();
     return vol;
   }
@@ -185,7 +185,7 @@ public:
   {
     int n = getNumVerticesForMSH();
     verts.resize(n);
-    for(unsigned int i = 0; i < _parts.size(); i++)
+    for(std::size_t i = 0; i < _parts.size(); i++)
       for(int j = 0; j < 4; j++)
         verts[i * 4 + j] = _parts[i]->getVertex(j)->getIndex();
   }
@@ -211,7 +211,7 @@ public:
            bool owner = false, MElement *orig = NULL)
     : MElement(num, part), _owner(owner), _orig(orig), _intpt(0)
   {
-    for(unsigned int i = 0; i < v.size() / 3; i++)
+    for(std::size_t i = 0; i < v.size() / 3; i++)
       _parts.push_back(new MTriangle(v[i * 3], v[i * 3 + 1], v[i * 3 + 2]));
     _initVertices();
   }
@@ -219,7 +219,7 @@ public:
            bool owner = false, MElement *orig = NULL)
     : MElement(num, part), _owner(owner), _orig(orig), _intpt(0)
   {
-    for(unsigned int i = 0; i < vT.size(); i++) {
+    for(std::size_t i = 0; i < vT.size(); i++) {
       MTriangle *t = (MTriangle *)vT[i];
       _parts.push_back(t);
     }
@@ -228,7 +228,7 @@ public:
   ~MPolygon()
   {
     if(_owner) delete _orig;
-    for(unsigned int i = 0; i < _parts.size(); i++) delete _parts[i];
+    for(std::size_t i = 0; i < _parts.size(); i++) delete _parts[i];
     if(_intpt) delete[] _intpt;
   }
   virtual int getDim() const { return 2; }
@@ -276,7 +276,7 @@ public:
   virtual void getFaceVertices(const int num, std::vector<MVertex *> &v) const
   {
     v.resize(_vertices.size() + _innerVertices.size());
-    for(unsigned int i = 0; i < _vertices.size() + _innerVertices.size(); i++)
+    for(std::size_t i = 0; i < _vertices.size() + _innerVertices.size(); i++)
       v[i] = (i < _vertices.size()) ? _vertices[i] :
                                       _innerVertices[i - _vertices.size()];
   }
@@ -284,7 +284,7 @@ public:
   virtual int getTypeForMSH() const { return MSH_POLYG_; }
   virtual void reverse()
   {
-    for(unsigned int i = 0; i < _parts.size(); i++) _parts[i]->reverse();
+    for(std::size_t i = 0; i < _parts.size(); i++) _parts[i]->reverse();
     _vertices.clear();
     _innerVertices.clear();
     _edges.clear();
@@ -349,7 +349,7 @@ public:
   {
     int n = getNumVerticesForMSH();
     verts.resize(n);
-    for(unsigned int i = 0; i < _parts.size(); i++)
+    for(std::size_t i = 0; i < _parts.size(); i++)
       for(int j = 0; j < 3; j++)
         verts[i * 3 + j] = _parts[i]->getVertex(j)->getIndex();
   }
diff --git a/Geo/MElementOctree.cpp b/Geo/MElementOctree.cpp
index 8c6c5da9397e44ae97951c3222a728ffb3ea4036..f1149c360fff3e14a48e496cac463fc2049772f9 100644
--- a/Geo/MElementOctree.cpp
+++ b/Geo/MElementOctree.cpp
@@ -104,8 +104,8 @@ MElementOctree::MElementOctree(GModel *m) : _gm(m)
   std::vector<GEntity *> entities;
   m->getEntities(entities);
   // do not add Gvertex non-associated to any GEdge
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
       if(entities[i]->dim() == 0) {
         GVertex *gv = dynamic_cast<GVertex *>(entities[i]);
         if(gv && gv->edges().size() > 0) {
@@ -142,7 +142,7 @@ MElementOctree::MElementOctree(const std::vector<MElement *> &v)
   const int maxElePerBucket = 100; // memory vs. speed trade-off
   _octree = Octree_Create(maxElePerBucket, min, size, MElementBB,
                           MElementCentroid, MElementInEle);
-  for(unsigned int i = 0; i < v.size(); i++) Octree_Insert(v[i], _octree);
+  for(std::size_t i = 0; i < v.size(); i++) Octree_Insert(v[i], _octree);
   Octree_Arrange(_octree);
 }
 
@@ -170,8 +170,8 @@ std::vector<MElement *> MElementOctree::findAll(double x, double y, double z,
       MElement::setTolerance(tol);
       std::vector<GEntity *> entities;
       _gm->getEntities(entities);
-      for(unsigned int i = 0; i < entities.size(); i++) {
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++) {
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           MElement *el = entities[i]->getMeshElement(j);
           if(dim == -1 || el->getDim() == dim) {
             if(MElementInEle(el, P)) {
@@ -193,7 +193,7 @@ std::vector<MElement *> MElementOctree::findAll(double x, double y, double z,
     while(tol < maxTol) {
       tol *= tolIncr;
       MElement::setTolerance(tol);
-      for(unsigned int i = 0; i < _elems.size(); i++) {
+      for(std::size_t i = 0; i < _elems.size(); i++) {
         MElement *el = _elems[i];
         if(dim == -1 || el->getDim() == dim) {
           if(MElementInEle(el, P)) {
@@ -236,8 +236,8 @@ MElement *MElementOctree::find(double x, double y, double z, int dim,
       MElement::setTolerance(tol);
       std::vector<GEntity *> entities;
       _gm->getEntities(entities);
-      for(unsigned int i = 0; i < entities.size(); i++) {
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+      for(std::size_t i = 0; i < entities.size(); i++) {
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
           e = entities[i]->getMeshElement(j);
           if(dim == -1 || e->getDim() == dim) {
             if(MElementInEle(e, P)) {
@@ -257,7 +257,7 @@ MElement *MElementOctree::find(double x, double y, double z, int dim,
     while(tol < 0.1) {
       tol *= 10.0;
       MElement::setTolerance(tol);
-      for(unsigned int i = 0; i < _elems.size(); i++) {
+      for(std::size_t i = 0; i < _elems.size(); i++) {
         e = _elems[i];
         if(dim == -1 || e->getDim() == dim) {
           if(MElementInEle(e, P)) {
diff --git a/Geo/MFace.cpp b/Geo/MFace.cpp
index 7c221c8ddc97718f82b0643ce1c455ec90b24df9..bbb03bb85ac183cdf75006fc2acb2a1ed3a5e04a 100644
--- a/Geo/MFace.cpp
+++ b/Geo/MFace.cpp
@@ -49,7 +49,7 @@ void sortVertices(const std::vector<MVertex *> &v, std::vector<char> &s)
   std::vector<MVertex *> sorted = v;
   std::sort(sorted.begin(), sorted.end(), compare);
   s.reserve(sorted.size());
-  for(unsigned int i = 0; i < sorted.size(); i++)
+  for(std::size_t i = 0; i < sorted.size(); i++)
     s.push_back(
       std::distance(v.begin(), std::find(v.begin(), v.end(), sorted[i])));
 }
@@ -67,7 +67,7 @@ MFace::MFace(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3)
 MFace::MFace(const std::vector<MVertex *> &v)
 {
   _v.reserve(v.size());
-  for(unsigned int i = 0; i < v.size(); i++) _v.push_back(v[i]);
+  for(std::size_t i = 0; i < v.size(); i++) _v.push_back(v[i]);
   sortVertices(_v, _si);
 }
 
@@ -114,7 +114,7 @@ MFaceN::MFaceN(int type, int order, const std::vector<MVertex *> &v)
   : _type(type), _order(order)
 {
   _v.resize(v.size());
-  for(unsigned int i = 0; i < v.size(); i++) _v[i] = v[i];
+  for(std::size_t i = 0; i < v.size(); i++) _v[i] = v[i];
 }
 
 MEdgeN MFaceN::getHighOrderEdge(int num, int sign) const
diff --git a/Geo/MHexahedron.cpp b/Geo/MHexahedron.cpp
index db0893c8ba3e678a29b05103feb03f9ddf503c40..77df6b44e5409db4c4c8e3e07f1d366d775f6e05 100644
--- a/Geo/MHexahedron.cpp
+++ b/Geo/MHexahedron.cpp
@@ -467,7 +467,7 @@ void MHexahedronN::reverse()
   for(int i = 0; i < 8; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[8 + i]];
   }
 }
diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h
index 1dca5239c8cc865ffeb7deb25be42b41effdfe80..a036a1f2a71b3f528138dec54d7972ba1416fcc0 100644
--- a/Geo/MHexahedron.h
+++ b/Geo/MHexahedron.h
@@ -596,7 +596,7 @@ public:
     : MHexahedron(v0, v1, v2, v3, v4, v5, v6, v7, num, part), _order(order),
       _vs(v)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   MHexahedronN(const std::vector<MVertex *> &v, char order, int num = 0,
@@ -604,8 +604,8 @@ public:
     : MHexahedron(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], num, part),
       _order(order)
   {
-    for(unsigned int i = 8; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 8; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   ~MHexahedronN() {}
diff --git a/Geo/MLine.h b/Geo/MLine.h
index 8978afcc7de13275c3707e0a0ddef973c13ea0f4..eeb945e7805b923131fd1f893d4e40f7d30aecf8 100644
--- a/Geo/MLine.h
+++ b/Geo/MLine.h
@@ -199,14 +199,14 @@ public:
          int num = 0, int part = 0)
     : MLine(v0, v1, num, part), _vs(vs)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_vs.size() + 1);
   }
   MLineN(const std::vector<MVertex *> &v, int num = 0, int part = 0)
     : MLine(v[0], v[1], num, part)
   {
-    for(unsigned int i = 2; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 2; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_vs.size() + 1);
   }
   ~MLineN() {}
@@ -235,7 +235,7 @@ public:
   {
     v.resize(2 + _vs.size());
     MLine::_getEdgeVertices(v);
-    for(unsigned int i = 0; i != _vs.size(); ++i) v[i + 2] = _vs[i];
+    for(std::size_t i = 0; i != _vs.size(); ++i) v[i + 2] = _vs[i];
   }
   virtual int getTypeForMSH() const
   {
diff --git a/Geo/MPrism.cpp b/Geo/MPrism.cpp
index 556704683c0e0b770ca81f5367cb29dd8eec635d..69f04b4a274caa4ccf568be26e9c18b9bfd8a4a7 100644
--- a/Geo/MPrism.cpp
+++ b/Geo/MPrism.cpp
@@ -595,7 +595,7 @@ void MPrismN::reverse()
   for(int i = 0; i < 6; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[6 + i]];
   }
 }
diff --git a/Geo/MPrism.h b/Geo/MPrism.h
index 7642c53e91033b0f9443935c261be9b171c22fdf..e0f3d2f08ef5ddb134341f34264c3f32cc654209 100644
--- a/Geo/MPrism.h
+++ b/Geo/MPrism.h
@@ -503,15 +503,15 @@ public:
           int part = 0)
     : MPrism(v0, v1, v2, v3, v4, v5, num, part), _vs(v), _order(order)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   MPrismN(const std::vector<MVertex *> &v, char order, int num = 0,
           int part = 0)
     : MPrism(v, num, part), _order(order)
   {
-    for(unsigned int i = 6; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(2);
+    for(std::size_t i = 6; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(2);
   }
   ~MPrismN() {}
   virtual int getPolynomialOrder() const { return _order; }
diff --git a/Geo/MPyramid.cpp b/Geo/MPyramid.cpp
index 20eb435b407710a25081ddf364f28de40228ad10..d8b91ff990541556dfe352080f6f9fe43931feca 100644
--- a/Geo/MPyramid.cpp
+++ b/Geo/MPyramid.cpp
@@ -433,7 +433,7 @@ void MPyramidN::reverse()
   for(int i = 0; i < 5; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[5 + i]];
   }
 }
diff --git a/Geo/MPyramid.h b/Geo/MPyramid.h
index 46625530defed09435b3132b7efd6cf72a27f5f4..cdb42bce6582d198ab2c3309fe831c4b3844087b 100644
--- a/Geo/MPyramid.h
+++ b/Geo/MPyramid.h
@@ -258,7 +258,7 @@ public:
             int part = 0)
     : MPyramid(v0, v1, v2, v3, v4, num, part), _vs(v), _order(order)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
     getFunctionSpace(order);
   }
@@ -266,8 +266,8 @@ public:
             int part = 0)
     : MPyramid(v[0], v[1], v[2], v[3], v[4], num, part), _order(order)
   {
-    for(unsigned int i = 5; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 5; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
     getFunctionSpace(order);
   }
diff --git a/Geo/MQuadrangle.cpp b/Geo/MQuadrangle.cpp
index 3c06af183da16ea49c4705bf8202587749dc7668..02332696188ff702dc1db5139ece67aa1189bc1a 100644
--- a/Geo/MQuadrangle.cpp
+++ b/Geo/MQuadrangle.cpp
@@ -568,7 +568,7 @@ void MQuadrangleN::reorient(int rot, bool swap)
   for(int i = 0; i < 4; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[4 + i]];
   }
 }
diff --git a/Geo/MQuadrangle.h b/Geo/MQuadrangle.h
index ea1d01a7ed37cfc0a67b59919b72dc3cbe8e9139..27a1db49e1b9a361f887c251ae71d12feb9f4edd 100644
--- a/Geo/MQuadrangle.h
+++ b/Geo/MQuadrangle.h
@@ -447,15 +447,15 @@ public:
                int part = 0)
     : MQuadrangle(v0, v1, v2, v3, num, part), _vs(v), _order(order)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   MQuadrangleN(const std::vector<MVertex *> &v, char order, int num = 0,
                int part = 0)
     : MQuadrangle(v[0], v[1], v[2], v[3], num, part), _order(order)
   {
-    for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 4; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   ~MQuadrangleN() {}
@@ -496,7 +496,7 @@ public:
   {
     v.resize(4 + _vs.size());
     MQuadrangle::_getFaceVertices(v);
-    for(unsigned int i = 0; i != _vs.size(); ++i) v[i + 4] = _vs[i];
+    for(std::size_t i = 0; i != _vs.size(); ++i) v[i + 4] = _vs[i];
   }
   virtual const char *getStringForPOS() const
   {
diff --git a/Geo/MTetrahedron.cpp b/Geo/MTetrahedron.cpp
index 7121a25df1bd05df638f303c4870f804d4b5f188..c4c73699d1b4b79bfa0405140c0579cd1cd6de9d 100644
--- a/Geo/MTetrahedron.cpp
+++ b/Geo/MTetrahedron.cpp
@@ -385,7 +385,7 @@ void MTetrahedronN::reverse()
   for(int i = 0; i < 4; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[4 + i]];
   }
 }
diff --git a/Geo/MTetrahedron.h b/Geo/MTetrahedron.h
index b94acea6b3498154bd3431579613f7c2a20e86eb..df5382c8caf04812ebd112277acef2d55b674600 100644
--- a/Geo/MTetrahedron.h
+++ b/Geo/MTetrahedron.h
@@ -367,15 +367,15 @@ public:
                 int part = 0)
     : MTetrahedron(v0, v1, v2, v3, num, part), _vs(v), _order(order)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   MTetrahedronN(const std::vector<MVertex *> &v, char order, int num = 0,
                 int part = 0)
     : MTetrahedron(v[0], v[1], v[2], v[3], num, part), _order(order)
   {
-    for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 4; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   ~MTetrahedronN() {}
diff --git a/Geo/MTriangle.cpp b/Geo/MTriangle.cpp
index a53beec2cd7adb326fd31314c3ff25ce496e2669..9cfaf3911e2ad75dbbdf56ad04e7985b02b88094 100644
--- a/Geo/MTriangle.cpp
+++ b/Geo/MTriangle.cpp
@@ -471,7 +471,7 @@ void MTriangleN::reorient(int rot, bool swap)
   for(int i = 0; i < 3; ++i) {
     _v[i] = oldv[indices[i]];
   }
-  for(unsigned int i = 0; i < _vs.size(); ++i) {
+  for(std::size_t i = 0; i < _vs.size(); ++i) {
     _vs[i] = oldv[indices[3 + i]];
   }
 }
diff --git a/Geo/MTriangle.h b/Geo/MTriangle.h
index 6b121f6d0f394e6dd8258b786805c0cba5e85d45..a76dc71649fce8271523b2a27d0ebad2ba802ce6 100644
--- a/Geo/MTriangle.h
+++ b/Geo/MTriangle.h
@@ -319,15 +319,15 @@ public:
              int part = 0)
     : MTriangle(v0, v1, v2, num, part), _vs(v), _order(order)
   {
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   MTriangleN(const std::vector<MVertex *> &v, char order, int num = 0,
              int part = 0)
     : MTriangle(v[0], v[1], v[2], num, part), _order(order)
   {
-    for(unsigned int i = 3; i < v.size(); i++) _vs.push_back(v[i]);
-    for(unsigned int i = 0; i < _vs.size(); i++)
+    for(std::size_t i = 3; i < v.size(); i++) _vs.push_back(v[i]);
+    for(std::size_t i = 0; i < _vs.size(); i++)
       _vs[i]->setPolynomialOrder(_order);
   }
   ~MTriangleN() {}
@@ -379,7 +379,7 @@ public:
   {
     v.resize(3 + _vs.size());
     MTriangle::_getFaceVertices(v);
-    for(unsigned int i = 0; i != _vs.size(); ++i) v[i + 3] = _vs[i];
+    for(std::size_t i = 0; i != _vs.size(); ++i) v[i + 3] = _vs[i];
   }
   virtual int getTypeForMSH() const
   {
diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 87f07ade4e1a4f7e529621009f8b4b7ca23d3024..b8a1cb72df3e0c2324076493410166da958e052f 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -273,7 +273,7 @@ void MVertex::writeUNV(FILE *fp, bool officialExponentFormat, double scalingFact
     char tmp[128];
     sprintf(tmp, "%25.16E%25.16E%25.16E\n", x() * scalingFactor,
             y() * scalingFactor, z() * scalingFactor);
-    for(unsigned int i = 0; i < strlen(tmp); i++)
+    for(std::size_t i = 0; i < strlen(tmp); i++)
       if(tmp[i] == 'E') tmp[i] = 'D';
     fprintf(fp, "%s", tmp);
   }
@@ -534,7 +534,7 @@ bool reparamMeshEdgeOnFace(MVertex *v1, MVertex *v2, GFace *gf, SPoint2 &param1,
     {
       double d = (p2[0].x() - p1[0].x()) * (p2[0].x() - p1[0].x()) +
                  (p2[0].y() - p1[0].y()) * (p2[0].y() - p1[0].y());
-      for(unsigned int i = 0; i < p2.size(); i++) {
+      for(std::size_t i = 0; i < p2.size(); i++) {
         double d1 = (p2[i].x() - p1[0].x()) * (p2[i].x() - p1[0].x()) +
                     (p2[i].y() - p1[0].y()) * (p2[i].y() - p1[0].y());
         if(d1 < d) {
@@ -546,7 +546,7 @@ bool reparamMeshEdgeOnFace(MVertex *v1, MVertex *v2, GFace *gf, SPoint2 &param1,
     {
       double d = (p2[0].x() - p1[0].x()) * (p2[0].x() - p1[0].x()) +
                  (p2[0].y() - p1[0].y()) * (p2[0].y() - p1[0].y());
-      for(unsigned int i = 0; i < p1.size(); i++) {
+      for(std::size_t i = 0; i < p1.size(); i++) {
         double d1 = (p2[0].x() - p1[i].x()) * (p2[0].x() - p1[i].x()) +
                     (p2[0].y() - p1[i].y()) * (p2[0].y() - p1[i].y());
         if(d1 < d) {
diff --git a/Geo/MVertexRTree.h b/Geo/MVertexRTree.h
index 4bd15a665670bd10a3846b0a6c0a9c7937c8a3bd..500656f56078515a0a74983fb34215dd0e89f987 100644
--- a/Geo/MVertexRTree.h
+++ b/Geo/MVertexRTree.h
@@ -63,7 +63,7 @@ public:
              std::set<MVertex *> *duplicates = 0)
   {
     int num = 0;
-    for(unsigned int i = 0; i < v.size(); i++)
+    for(std::size_t i = 0; i < v.size(); i++)
       num += (insert(v[i], warnIfExists, duplicates) ? 1 : 0);
     return num; // number of vertices not inserted
   }
@@ -75,7 +75,7 @@ public:
     if(_rtree->Search(_min, _max, rtree_callback, &out)) return out;
     return 0;
   }
-  unsigned int size() { return _rtree->Count(); }
+  std::size_t size() { return _rtree->Count(); }
 };
 
 #endif
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 5cad6d605992ea2abaedef481f861c844b19fceb..a2677ca806d2a76cbec0baa60edfbf8f2fb14eab 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -442,7 +442,7 @@ bool OCCFace::containsParam(const SPoint2 &pt)
     return GFace::containsParam(pt);
   }
   SPoint2 mine = pt;
-  for(unsigned int i = 0; i < stl_triangles.size(); i += 3){
+  for(std::size_t i = 0; i < stl_triangles.size(); i += 3){
     SPoint2 gp1 = stl_vertices_uv[stl_triangles[i]];
     SPoint2 gp2 = stl_vertices_uv[stl_triangles[i + 1]];
     SPoint2 gp3 = stl_vertices_uv[stl_triangles[i + 2]];
diff --git a/Geo/OCCMeshAttributes.h b/Geo/OCCMeshAttributes.h
index 148d942d5e1802ad2d9b29c7506fe309b64069b1..c6b99522aaed96db1c64a99b69b58618b9423e52 100644
--- a/Geo/OCCMeshAttributes.h
+++ b/Geo/OCCMeshAttributes.h
@@ -87,7 +87,7 @@ public:
   void clear()
   {
     for(int dim = 0; dim < 4; dim++) _rtree[dim]->RemoveAll();
-    for(unsigned int i = 0; i < _all.size(); i++) delete _all[i];
+    for(std::size_t i = 0; i < _all.size(); i++) delete _all[i];
     _all.clear();
   }
   void print(const std::string &fileName = "")
@@ -101,7 +101,7 @@ public:
       }
     }
     fprintf(fp, "View(\"rtree mesh sizes\"){\n");
-    for(unsigned int i = 0; i < _all.size(); i++) {
+    for(std::size_t i = 0; i < _all.size(); i++) {
       if(_all[i]->getDim() != 0) continue;
       if(_all[i]->getMeshSize() == MAX_LC) continue;
       gp_Pnt pnt = BRep_Tool::Pnt(TopoDS::Vertex(_all[i]->getShape()));
@@ -193,7 +193,7 @@ public:
       return;
     }
     if(!excludeSame) {
-      for(unsigned int i = 0; i < tmp.size(); i++) {
+      for(std::size_t i = 0; i < tmp.size(); i++) {
         if(requireMeshSize && tmp[i]->getMeshSize() == MAX_LC) continue;
         if(requireExtrudeParams && !tmp[i]->getExtrudeParams()) continue;
         if(shape.IsSame(tmp[i]->getShape())) { // exact match: same shape
@@ -204,7 +204,7 @@ public:
       }
     }
     // potential matches based on bounding box
-    for(unsigned int i = 0; i < tmp.size(); i++) {
+    for(std::size_t i = 0; i < tmp.size(); i++) {
       if(requireMeshSize && tmp[i]->getMeshSize() == MAX_LC) continue;
       if(requireExtrudeParams && !tmp[i]->getExtrudeParams()) continue;
       Bnd_Box box2;
@@ -220,7 +220,7 @@ public:
   {
     std::vector<OCCMeshAttributes *> attr;
     find(dim, shape, attr, true, false, false);
-    for(unsigned int i = 0; i < attr.size(); i++) {
+    for(std::size_t i = 0; i < attr.size(); i++) {
       if(attr[i]->getMeshSize() < MAX_LC) return attr[i]->getMeshSize();
     }
     return MAX_LC;
@@ -230,7 +230,7 @@ public:
   {
     std::vector<OCCMeshAttributes *> attr;
     find(dim, shape, attr, false, true, false);
-    for(unsigned int i = 0; i < attr.size(); i++) {
+    for(std::size_t i = 0; i < attr.size(); i++) {
       if(attr[i]->getExtrudeParams()) {
         sourceDim = attr[i]->getSourceDim();
         sourceShape = attr[i]->getSourceShape();
@@ -244,7 +244,7 @@ public:
   {
     std::vector<OCCMeshAttributes *> attr;
     find(dim, shape, attr, false, false, true);
-    for(unsigned int i = 0; i < attr.size(); i++) {
+    for(std::size_t i = 0; i < attr.size(); i++) {
       TopoDS_Shape s = attr[i]->getShape();
       if(!s.IsNull()) other.push_back(s);
     }
diff --git a/Geo/SOrientedBoundingBox.cpp b/Geo/SOrientedBoundingBox.cpp
index 2db55add66d91a2bf8e051103f94ca875566979d..51a848d813aabcee3401342f68dac674539cfba7 100644
--- a/Geo/SOrientedBoundingBox.cpp
+++ b/Geo/SOrientedBoundingBox.cpp
@@ -151,16 +151,16 @@ bool SOrientedBoundingBox::intersects(SOrientedBoundingBox &obb)
   sizes[0] = getSize();
   sizes[1] = obb.getSize();
 
-  for(unsigned int i = 0; i < 3; i++) {
-    for(unsigned int j = 3; j < 6; j++) {
+  for(std::size_t i = 0; i < 3; i++) {
+    for(std::size_t j = 3; j < 6; j++) {
       collide_axes[3 * i + j + 3] = crossprod(collide_axes[i], collide_axes[j]);
     }
   }
   SVector3 T = obb.getCenter() - getCenter();
 
-  for(unsigned int i = 0; i < 15; i++) {
+  for(std::size_t i = 0; i < 15; i++) {
     double val = 0.0;
-    for(unsigned int j = 0; j < 6; j++) {
+    for(std::size_t j = 0; j < 6; j++) {
       val += 0.5 * (sizes[j < 3 ? 0 : 1])(j % 3) *
              fabs(dot(collide_axes[j], collide_axes[i]));
     }
@@ -324,7 +324,7 @@ SOrientedBoundingBox::buildOBB(std::vector<SPoint3> &vertices)
   DocRecord record(points.size());
   record.numPoints = points.size();
   srand((unsigned)time(0));
-  for(unsigned int i = 0; i < points.size(); i++) {
+  for(std::size_t i = 0; i < points.size(); i++) {
     record.points[i].where.h =
       points[i]->x() + (10e-6) * sizes[smallest_comp == 0 ? 1 : 0] *
                          (-0.5 + ((double)rand()) / RAND_MAX);
diff --git a/Geo/boundaryLayersData.cpp b/Geo/boundaryLayersData.cpp
index 1e8ef8d6ef027f1cf142007b4afb6a43ebc39a54..71411090ccaedeff198dc9ec6f1af77b236437eb 100644
--- a/Geo/boundaryLayersData.cpp
+++ b/Geo/boundaryLayersData.cpp
@@ -167,7 +167,7 @@ static void treat2Connections(GFace *gf, MVertex *_myVert, MEdge &e1, MEdge &e2,
       itm != _columns->_normals.upper_bound(e2); ++itm)
     N2.push_back(itm->second);
   if(N1.size() == N2.size()) {
-    for(unsigned int SIDE = 0; SIDE < N1.size(); SIDE++) {
+    for(std::size_t SIDE = 0; SIDE < N1.size(); SIDE++) {
       if(!fan) {
         SVector3 x = N1[SIDE] * 1.01 + N2[SIDE];
         x.normalize();
@@ -304,7 +304,7 @@ static void getEdgesData(GFace *gf, BoundaryLayerField *blf,
   while(ite != edges.end()) {
     // check if this edge generates a boundary layer
     if(isEdgeOfFaceBL(gf, *ite, blf)) {
-      for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
         MVertex *v1 = (*ite)->lines[i]->getVertex(0);
         MVertex *v2 = (*ite)->lines[i]->getVertex(1);
         allEdges.insert(MEdge(v1, v2));
@@ -332,7 +332,7 @@ static void getNormals(GFace *gf, BoundaryLayerField *blf,
 {
   // assume that the initial mesh has been created i.e. that there exist
   // triangles inside the domain. Triangles are used to define exterior normals
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     SPoint2 p0, p1, p2;
     MVertex *v0 = gf->triangles[i]->getVertex(0);
     MVertex *v1 = gf->triangles[i]->getVertex(1);
@@ -366,7 +366,7 @@ static void addColumnAtTheEndOfTheBL(GEdge *ge, GVertex *gv,
 {
   if(!blf->isEdgeBL(ge->tag())) {
     std::vector<MVertex *> invert;
-    for(unsigned int i = 0; i < ge->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < ge->mesh_vertices.size(); i++)
       invert.push_back(ge->mesh_vertices[ge->mesh_vertices.size() - i - 1]);
     GVertex *g0 = ge->getBeginVertex();
     GVertex *g1 = ge->getEndVertex();
@@ -546,7 +546,7 @@ bool buildAdditionalPoints2D(GFace *gf)
       // if(_dirs.size() > 1)printf("%d directions\n",_dirs.size());
 
       // now create the BL points
-      for(unsigned int DIR = 0; DIR < _dirs.size(); DIR++) {
+      for(std::size_t DIR = 0; DIR < _dirs.size(); DIR++) {
         SVector3 n = _dirs[DIR];
 
         // < ------------------------------- > //
@@ -599,7 +599,7 @@ bool buildAdditionalPoints2D(GFace *gf)
       MVertex *v = *it;
       for(int i=0;i<_columns->getNbColumns(v);i++){
         const BoundaryLayerData &data = _columns->getColumn(v,i);
-        for(unsigned int j = 0; j < data._column.size(); j++){
+        for(std::size_t j = 0; j < data._column.size(); j++){
           MVertex *blv = data._column[j];
           fprintf(f,"SP(%g,%g,%g){%d};\n",blv->x(),blv->y(),blv->z(),v->getNum());
         }
diff --git a/Geo/closestPoint.cpp b/Geo/closestPoint.cpp
index fae6beeaf3e1ad981efbe58ec77f6e6e19c25c91..b65b3bb01ae27940d9e5ae6fff9a41b847221a5e 100644
--- a/Geo/closestPoint.cpp
+++ b/Geo/closestPoint.cpp
@@ -13,7 +13,7 @@
 static void oversample(std::vector<SPoint3> &s, double tol)
 {
   std::vector<SPoint3> t;
-  for(unsigned int i = 1; i < s.size(); i++) {
+  for(std::size_t i = 1; i < s.size(); i++) {
     SPoint3 p0 = s[i - 1];
     SPoint3 p1 = s[i];
     double d = p0.distance(p1);
@@ -47,7 +47,7 @@ closestPointFinder::closestPointFinder(GEntity *ge, double e) : _tolerance(e)
   index = new ANNidx[1];
   dist = new ANNdist[1];
   zeronodes = annAllocPts(pts.size(), 3);
-  for(unsigned int k = 0; k < pts.size(); k++) {
+  for(std::size_t k = 0; k < pts.size(); k++) {
     zeronodes[k][0] = pts[k].x();
     zeronodes[k][1] = pts[k].y();
     zeronodes[k][2] = pts[k].z();
diff --git a/Geo/discreteEdge.cpp b/Geo/discreteEdge.cpp
index b5a0b1b5c47288457b0ceb771aa48626da25f7f9..2af705589464e1e4b45daa66e6fae6f61f523677 100644
--- a/Geo/discreteEdge.cpp
+++ b/Geo/discreteEdge.cpp
@@ -36,9 +36,9 @@ discreteEdge::discreteEdge(GModel *model, int num) : GEdge(model, num)
 
 discreteEdge::~discreteEdge()
 {
-  for(unsigned int i = 0; i < discrete_lines.size(); i++)
+  for(std::size_t i = 0; i < discrete_lines.size(); i++)
     delete discrete_lines[i];
-  for(unsigned int i = 0; i < discrete_vertices.size(); i++)
+  for(std::size_t i = 0; i < discrete_vertices.size(); i++)
     delete discrete_vertices[i];
   discrete_lines.clear();
   discrete_vertices.clear();
@@ -52,7 +52,7 @@ void discreteEdge::orderMLines()
 
   std::vector<MEdge> ed;
   std::vector<std::vector<MVertex *> > vs;
-  for(unsigned int i = 0; i < lines.size(); i++) {
+  for(std::size_t i = 0; i < lines.size(); i++) {
     ed.push_back(MEdge(lines[i]->getVertex(0), lines[i]->getVertex(1)));
     delete lines[i];
   }
@@ -64,14 +64,14 @@ void discreteEdge::orderMLines()
   if(vs.size() != 1)
     Msg::Warning("Discrete curve %d is mutiply connected", tag());
 
-  unsigned int START = 0;
+  std::size_t START = 0;
   for(; START < vs[0].size(); START++)
     if(vs[0][START]->onWhat()->dim() == 0) break;
 
   if(START == vs[0].size())
     Msg::Warning("Discrete curve %d topology is wrong", tag());
 
-  unsigned int i = START;
+  std::size_t i = START;
   while(lines.size() != ss) {
     if(vs[0][i % vs[0].size()] != vs[0][(i + 1) % vs[0].size()])
       lines.push_back(
@@ -80,7 +80,7 @@ void discreteEdge::orderMLines()
   }
 
   mesh_vertices.clear();
-  for(unsigned int i = 0; i < lines.size() - 1; ++i) {
+  for(std::size_t i = 0; i < lines.size() - 1; ++i) {
     MVertex *v11 = lines[i]->getVertex(1);
     mesh_vertices.push_back(v11);
   }
@@ -174,8 +174,8 @@ void discreteEdge::createGeometry()
 
     std::map<MVertex *, MVertex *> old2new;
 
-    for(unsigned int i = 0; i < lines.size(); i++) {
-      for(unsigned int j = 0; j < 2; j++) {
+    for(std::size_t i = 0; i < lines.size(); i++) {
+      for(std::size_t j = 0; j < 2; j++) {
         MVertex *v = lines[i]->getVertex(j);
         if(old2new.find(v) == old2new.end()) {
           MVertex *vnew = new MVertex(v->x(), v->y(), v->z(), this);
@@ -186,7 +186,7 @@ void discreteEdge::createGeometry()
 
     std::vector<MLine *> _temp;
     discrete_lines.resize(lines.size());
-    for(unsigned int i = 0; i < lines.size(); i++) {
+    for(std::size_t i = 0; i < lines.size(); i++) {
       MVertex *v0 = lines[i]->getVertex(0);
       MVertex *v1 = lines[i]->getVertex(1);
       MVertex *v00 = old2new[v0];
@@ -198,7 +198,7 @@ void discreteEdge::createGeometry()
     }
     // compute parameters and recompute the vertices
     _pars.push_back(0.0);
-    for(unsigned int i = 1; i < discrete_lines.size(); i++) {
+    for(std::size_t i = 1; i < discrete_lines.size(); i++) {
       _pars.push_back((double)i);
       MVertex *newv = discrete_lines[i]->getVertex(0);
       discrete_vertices.push_back(newv);
diff --git a/Geo/discreteFace.cpp b/Geo/discreteFace.cpp
index 305b6b53e32c8a8fda9a8f3504eed00cf87859c1..595613807275059b2bfdd3b8b2f008dde91ae406 100644
--- a/Geo/discreteFace.cpp
+++ b/Geo/discreteFace.cpp
@@ -23,7 +23,7 @@ discreteFace::discreteFace(GModel *model, int num) : GFace(model, num)
 
 void discreteFace::setBoundEdges(const std::vector<int> &tagEdges)
 {
-  for(unsigned int i = 0; i != tagEdges.size(); i++) {
+  for(std::size_t i = 0; i != tagEdges.size(); i++) {
     GEdge *ge = model()->getEdgeByTag(tagEdges[i]);
     if(ge) {
       l_edges.push_back(ge);
@@ -416,7 +416,7 @@ bool discreteFace::_checkAndFixOrientation()
   // edge to 1 or 2 triangle(s)
   std::map<MEdge, std::vector<MElement *>, Less_Edge> ed2tri;
 
-  for(unsigned int i = 0; i < triangles.size(); ++i) {
+  for(std::size_t i = 0; i < triangles.size(); ++i) {
     MElement *e = triangles[i];
     for(int j = 0; j < e->getNumEdges(); j++) {
       MEdge ed = e->getEdge(j);
@@ -426,7 +426,7 @@ bool discreteFace::_checkAndFixOrientation()
 
   // element to its neighbors
   std::map<MElement *, std::vector<MElement *> > neighbors;
-  for(unsigned int i = 0; i < triangles.size(); ++i) {
+  for(std::size_t i = 0; i < triangles.size(); ++i) {
     MElement *e = triangles[i];
     for(int j = 0; j < e->getNumEdges(); j++) {
       // #improveme: efficiency could be improved by setting neighbors mutually
@@ -459,7 +459,7 @@ bool discreteFace::_checkAndFixOrientation()
 
     checkList.push(myMT);
 
-    for(unsigned int i = 0; i < myV.size(); ++i) {
+    for(std::size_t i = 0; i < myV.size(); ++i) {
       if(check_todo.find(myV[i]) == check_todo.end()) {
         myInsertion.push_back(myV[i]);
         check_todo[myV[i]] = true;
@@ -474,10 +474,10 @@ bool discreteFace::_checkAndFixOrientation()
     checkList.pop();
     std::vector<MElement *> neigs = checkLists.front();
     checkLists.pop();
-    for(unsigned int i = 0; i < neigs.size(); i++) {
+    for(std::size_t i = 0; i < neigs.size(); i++) {
       bool myCond = false;
-      for(unsigned int k = 0; k < 3; k++) {
-        for(unsigned int j = 0; j < 3; j++) {
+      for(std::size_t k = 0; k < 3; k++) {
+        for(std::size_t j = 0; j < 3; j++) {
           if(current->getVertex(k) == neigs[i]->getVertex(j)) {
             myCond = true;
             if(!(current->getVertex(k != 2 ? k + 1 : 0) ==
diff --git a/Geo/discreteRegion.cpp b/Geo/discreteRegion.cpp
index d999a6a92b0dfba103c9e5fe00013c5fb03c390b..a2525c82eb57edaf137e876962602c448c65bbc4 100644
--- a/Geo/discreteRegion.cpp
+++ b/Geo/discreteRegion.cpp
@@ -45,7 +45,7 @@ void discreteRegion::setBoundFaces(const std::vector<int> &tagFaces,
     tags.insert(tagFaces.begin(), tagFaces.end());
     setBoundFaces(tags);
   }
-  for(unsigned int i = 0; i != tagFaces.size(); i++) {
+  for(std::size_t i = 0; i != tagFaces.size(); i++) {
     GFace *face = model()->getFaceByTag(tagFaces[i]);
     if(face) {
       l_faces.push_back(face);
@@ -62,7 +62,7 @@ void discreteRegion::findFaces(
   std::map<MFace, std::vector<int>, Less_Face> &map_faces)
 {
   std::set<MFace, Less_Face> bound_faces;
-  for(unsigned int elem = 0; elem < getNumMeshElements(); elem++) {
+  for(std::size_t elem = 0; elem < getNumMeshElements(); elem++) {
     MElement *e = getMeshElement(elem);
     for(int iFace = 0; iFace < e->getNumFaces(); iFace++) {
       MFace tmp_face = e->getFace(iFace);
diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp
index c252f5c2f07a9f9daaa5aa4be312ace791e6de2a..313ca9712e51e66f5752f5da08d673ad2904d507 100644
--- a/Geo/gmshFace.cpp
+++ b/Geo/gmshFace.cpp
@@ -82,7 +82,7 @@ void gmshFace::resetNativePtr(Surface *face)
   l_wire.reserve(eds.size());
 
   GVertex *first = 0;
-  for(unsigned int i = 0; i < eds.size(); i++) {
+  for(std::size_t i = 0; i < eds.size(); i++) {
     GEdge *e = eds[i];
     int num = nums[i];
     GVertex *start = (num > 0) ? e->getBeginVertex() : e->getEndVertex();
@@ -380,7 +380,7 @@ bool gmshFace::buildSTLTriangulation(bool force)
 
   std::map<MVertex *, int> _v;
   int COUNT = 0;
-  for(unsigned int j = 0; j < triangles.size(); j++) {
+  for(std::size_t j = 0; j < triangles.size(); j++) {
     for(int i = 0; i < 3; i++) {
       MVertex *v = triangles[j]->getVertex(i);
       std::map<MVertex *, int>::iterator it = _v.find(v);
diff --git a/Geo/gmshLevelset.cpp b/Geo/gmshLevelset.cpp
index 2bae9ab6e9585d94d9b4db4679649cb844578103..0cff53fe902edfeef79af5f20a24aa663aa2acd7 100644
--- a/Geo/gmshLevelset.cpp
+++ b/Geo/gmshLevelset.cpp
@@ -154,7 +154,7 @@ void computeLevelset(GModel *gm, cartesianBox<double> &box)
   std::vector<SPoint3> dummy;
   for(GModel::fiter fit = gm->firstFace(); fit != gm->lastFace(); fit++) {
     if((*fit)->geomType() == GEntity::DiscreteSurface) {
-      for(unsigned int k = 0; k < (*fit)->getNumMeshElements(); k++) {
+      for(std::size_t k = 0; k < (*fit)->getNumMeshElements(); k++) {
         std::vector<double> iDistances;
         std::vector<SPoint3> iClosePts;
         std::vector<double> iDistancesE;
@@ -172,7 +172,7 @@ void computeLevelset(GModel *gm, cartesianBox<double> &box)
         if(dist.empty())
           dist = localdist;
         else {
-          for(unsigned int j = 0; j < localdist.size(); j++) {
+          for(std::size_t j = 0; j < localdist.size(); j++) {
             dist[j] =
               (fabs(dist[j]) < fabs(localdist[j])) ? dist[j] : localdist[j];
           }
@@ -185,7 +185,7 @@ void computeLevelset(GModel *gm, cartesianBox<double> &box)
     }
   }
 
-  for(unsigned int j = 0; j < dist.size(); j++)
+  for(std::size_t j = 0; j < dist.size(); j++)
     box.setNodalValue(indices[j], dist[j]);
 
   if(box.getChildBox()) computeLevelset(gm, *box.getChildBox());
@@ -587,13 +587,13 @@ double gLevelsetPoints::operator()(double x, double y, double z) const
 void gLevelsetPoints::computeLS(std::vector<MVertex *> &vert)
 {
   fullMatrix<double> xyz_eval(vert.size(), 3), surf_eval(vert.size(), 1);
-  for(unsigned int i = 0; i < vert.size(); i++) {
+  for(std::size_t i = 0; i < vert.size(); i++) {
     xyz_eval(i, 0) = vert[i]->x();
     xyz_eval(i, 1) = vert[i]->y();
     xyz_eval(i, 2) = vert[i]->z();
   }
   evalRbfDer(0, 1, points, xyz_eval, surf, surf_eval);
-  for(unsigned int i = 0; i < vert.size(); i++) {
+  for(std::size_t i = 0; i < vert.size(); i++) {
     mapP[SPoint3(vert[i]->x(), vert[i]->y(), vert[i]->z())] = surf_eval(i, 0);
   }
 }
@@ -956,8 +956,8 @@ gLevelsetDistMesh::gLevelsetDistMesh(GModel *gm, const std::string &physical,
 
   // setup
   std::set<MVertex *> _all;
-  for(unsigned int i = 0; i < _entities.size(); i++) {
-    for(unsigned int k = 0; k < _entities[i]->getNumMeshElements(); k++) {
+  for(std::size_t i = 0; i < _entities.size(); i++) {
+    for(std::size_t k = 0; k < _entities[i]->getNumMeshElements(); k++) {
       MElement *e = _entities[i]->getMeshElement(k);
       for(std::size_t j = 0; j < e->getNumVertices(); j++) {
         MVertex *v = _entities[i]->getMeshElement(k)->getVertex(j);
@@ -1060,7 +1060,7 @@ double gLevelsetDistMesh::operator()(double x, double y, double z) const
                  closestElements[1]->getFace(0).normal();
     }
     else { // closestPoint on vertex
-      for(unsigned int i = 0; i < closestElements.size(); i++) {
+      for(std::size_t i = 0; i < closestElements.size(); i++) {
         double alpha = 0.;
         SPoint3 p1;
         bool found = false;
@@ -1222,9 +1222,9 @@ gLevelsetYarn::gLevelsetYarn(int dim, int phys, double minA, double majA,
 double gLevelsetYarn::operator()(double x, double y, double z) const
 {
   double dist = 0.0;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *g = entities[i];
-    for(unsigned int j = 0; j < g->getNumMeshElements(); j++) {
+    for(std::size_t j = 0; j < g->getNumMeshElements(); j++) {
       MElement *e = g->getMeshElement(j);
       MVertex *v1 = e->getVertex(0);
       MVertex *v2 = e->getVertex(1);
diff --git a/Graphics/drawAxes.cpp b/Graphics/drawAxes.cpp
index a0983589b552d4bbef1100a6444f6586ae859a5c..0170eadfece9c55440523537d37bbf4917487a10 100644
--- a/Graphics/drawAxes.cpp
+++ b/Graphics/drawAxes.cpp
@@ -295,7 +295,7 @@ void drawContext::drawAxes(int mode, double tics[3], std::string format[3],
 void drawContext::drawAxes()
 {
   bool geometryExists = false;
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     if(!GModel::list[i]->empty()) {
       geometryExists = true;
       break;
diff --git a/Graphics/drawContext.cpp b/Graphics/drawContext.cpp
index 25d23a0534a1a2487c538274e79382e0fc3e9904..93befb8716d648ca8cb4ee5cea7bb711545b5895 100644
--- a/Graphics/drawContext.cpp
+++ b/Graphics/drawContext.cpp
@@ -265,7 +265,7 @@ static int needPolygonOffset()
   if(m->getMeshStatus() == 3 && (CTX::instance()->mesh.surfacesEdges ||
                                  CTX::instance()->mesh.volumesEdges))
     return 1;
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewOptions *opt = PView::list[i]->getOptions();
     if(opt->visible && opt->showElement) return 1;
   }
@@ -299,7 +299,7 @@ void drawContext::draw3d()
 
     // speedup drawing of textured fonts on cocoa mac version
 #if defined(HAVE_FLTK) && defined(__APPLE__)
-  int numStrings = GModel::current()->getNumVertices();
+  std::size_t numStrings = GModel::current()->getNumVertices();
   if(CTX::instance()->mesh.pointsNum)
     numStrings = std::max(numStrings, GModel::current()->getNumMeshVertices());
   if(CTX::instance()->mesh.linesNum || CTX::instance()->mesh.surfacesNum ||
@@ -1034,10 +1034,10 @@ bool drawContext::select(int type, bool multiple, bool mesh, bool post, int x,
   // dimension" (point < line < surface < volume). Otherwise, return the closest
   // entity of type "type"
   GLuint typmin = 10;
-  for(unsigned int i = 0; i < hits.size(); i++)
+  for(std::size_t i = 0; i < hits.size(); i++)
     typmin = std::min(typmin, hits[i].type);
 
-  for(unsigned int i = 0; i < hits.size(); i++) {
+  for(std::size_t i = 0; i < hits.size(); i++) {
     if((type == ENT_ALL) || (type == ENT_NONE && hits[i].type == typmin) ||
        (type == ENT_POINT && hits[i].type == 0) ||
        (type == ENT_CURVE && hits[i].type == 1) ||
diff --git a/Graphics/drawGeom.cpp b/Graphics/drawGeom.cpp
index e04967033b446d6e445a443aefd530c6f4f15d2d..9d9bfbceaf1c043583db4ded2f437ebccd1e8490 100644
--- a/Graphics/drawGeom.cpp
+++ b/Graphics/drawGeom.cpp
@@ -34,7 +34,7 @@ static void drawEntityLabel(drawContext *ctx, GEntity *e, double x, double y,
   }
   else {
     strcpy(str, "");
-    for(unsigned int i = 0; i < e->physicals.size(); i++) {
+    for(std::size_t i = 0; i < e->physicals.size(); i++) {
       char tmp[32];
       if(i) strcat(str, ", ");
       sprintf(tmp, "%d", e->physicals[i]);
@@ -340,9 +340,9 @@ public:
         glLineStipple(1, 0x0F0F);
         gl2psEnable(GL2PS_LINE_STIPPLE);
         for(int dim = 0; dim < 2; dim++) {
-          for(unsigned int i = 0; i < f->cross[dim].size(); i++) {
+          for(std::size_t i = 0; i < f->cross[dim].size(); i++) {
             glBegin(GL_LINE_STRIP);
-            for(unsigned int j = 0; j < f->cross[dim][i].size(); j++) {
+            for(std::size_t j = 0; j < f->cross[dim][i].size(); j++) {
               double x = f->cross[dim][i][j].x();
               double y = f->cross[dim][i][j].y();
               double z = f->cross[dim][i][j].z();
@@ -464,7 +464,7 @@ void drawContext::drawGeom()
     else
       glDisable((GLenum)(GL_CLIP_PLANE0 + i));
 
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     GModel *m = GModel::list[i];
     if(m->getVisibility() && isVisible(m)) {
       std::for_each(m->firstVertex(), m->lastVertex(), drawGVertex(this));
diff --git a/Graphics/drawGraph2d.cpp b/Graphics/drawGraph2d.cpp
index efd4c8463fb9319109943563648682ce8287d65d..a88d9884ff133459673b26a0691d24eff262ca77 100644
--- a/Graphics/drawGraph2d.cpp
+++ b/Graphics/drawGraph2d.cpp
@@ -33,7 +33,7 @@ int drawContext::fix2dCoordinates(double *x, double *y)
 
 void drawContext::drawText2d()
 {
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewData *data = PView::list[i]->getData();
     PViewOptions *opt = PView::list[i]->getOptions();
     if(opt->visible && opt->drawStrings && isVisible(PView::list[i])) {
@@ -165,10 +165,10 @@ static bool getGraphData(PView *p, std::vector<double> &x, double &xmin,
   if(opt->abscissaRangeType == PViewOptions::Custom) {
     std::vector<double> x2;
     std::vector<std::vector<double> > y2(y.size());
-    for(unsigned int i = 0; i < x.size(); i++) {
+    for(std::size_t i = 0; i < x.size(); i++) {
       if(x[i] >= opt->customAbscissaMin && x[i] <= opt->customAbscissaMax) {
         x2.push_back(x[i]);
-        for(unsigned int j = 0; j < y2.size(); j++) y2[j].push_back(y[j][i]);
+        for(std::size_t j = 0; j < y2.size(); j++) y2[j].push_back(y[j][i]);
       }
     }
     x = x2;
@@ -177,7 +177,7 @@ static bool getGraphData(PView *p, std::vector<double> &x, double &xmin,
 
   if(space) {
     xmin = xmax = x[0];
-    for(unsigned int i = 1; i < x.size(); i++) {
+    for(std::size_t i = 1; i < x.size(); i++) {
       xmin = std::min(xmin, x[i]);
       xmax = std::max(xmax, x[i]);
     }
@@ -188,13 +188,13 @@ static bool getGraphData(PView *p, std::vector<double> &x, double &xmin,
   }
 
   if(opt->scaleType == PViewOptions::Logarithmic)
-    for(unsigned int i = 0; i < y.size(); i++)
-      for(unsigned int j = 0; j < y[i].size(); j++) y[i][j] = log10(y[i][j]);
+    for(std::size_t i = 0; i < y.size(); i++)
+      for(std::size_t j = 0; j < y[i].size(); j++) y[i][j] = log10(y[i][j]);
 
   ymin = VAL_INF;
   ymax = -VAL_INF;
-  for(unsigned int i = 0; i < y.size(); i++) {
-    for(unsigned int j = 0; j < y[i].size(); j++) {
+  for(std::size_t i = 0; i < y.size(); i++) {
+    for(std::size_t j = 0; j < y[i].size(); j++) {
       ymin = std::min(ymin, y[i][j]);
       ymax = std::max(ymax, y[i][j]);
     }
@@ -498,14 +498,14 @@ static void drawGraphCurves(drawContext *ctx, PView *p, double xleft,
 
   if(opt->intervalsType == PViewOptions::Discrete ||
      opt->intervalsType == PViewOptions::Continuous) {
-    for(unsigned int i = 0; i < y.size(); i++) {
+    for(std::size_t i = 0; i < y.size(); i++) {
       if(opt->useStipple) {
         glEnable(GL_LINE_STIPPLE);
         glLineStipple(opt->stipple[i % 10][0], opt->stipple[i % 10][1]);
         gl2psEnable(GL2PS_LINE_STIPPLE);
       }
       glBegin(GL_LINE_STRIP);
-      for(unsigned int j = 0; j < x.size(); j++)
+      for(std::size_t j = 0; j < x.size(); j++)
         addGraphPoint(ctx, p, xleft, ytop, width, height, x[j], y[i][j], xmin,
                       xmax, opt->tmpMin, opt->tmpMax, false, false,
                       inModelCoordinates);
@@ -520,16 +520,16 @@ static void drawGraphCurves(drawContext *ctx, PView *p, double xleft,
   if(opt->intervalsType == PViewOptions::Iso ||
      opt->intervalsType == PViewOptions::Discrete ||
      opt->intervalsType == PViewOptions::Numeric) {
-    for(unsigned int i = 0; i < y.size(); i++)
-      for(unsigned int j = 0; j < x.size(); j++)
+    for(std::size_t i = 0; i < y.size(); i++)
+      for(std::size_t j = 0; j < x.size(); j++)
         addGraphPoint(ctx, p, xleft, ytop, width, height, x[j], y[i][j], xmin,
                       xmax, opt->tmpMin, opt->tmpMax, false, true,
                       inModelCoordinates);
   }
 
   if(opt->intervalsType == PViewOptions::Numeric) {
-    for(unsigned int i = 0; i < y.size(); i++)
-      for(unsigned int j = 0; j < x.size(); j++)
+    for(std::size_t i = 0; i < y.size(); i++)
+      for(std::size_t j = 0; j < x.size(); j++)
         addGraphPoint(ctx, p, xleft, ytop, width, height, x[j], y[i][j], xmin,
                       xmax, opt->tmpMin, opt->tmpMax, true, true,
                       inModelCoordinates);
@@ -580,7 +580,7 @@ static void drawGraph(drawContext *ctx, PView *p, double xleft, double ytop,
 void drawContext::drawGraph2d(bool inModelCoordinates)
 {
   std::vector<PView *> graphs;
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewData *data = PView::list[i]->getData();
     PViewOptions *opt = PView::list[i]->getOptions();
     if(!data->getDirty() && opt->visible && opt->type != PViewOptions::Plot3D &&
@@ -595,7 +595,7 @@ void drawContext::drawGraph2d(bool inModelCoordinates)
   double mx = 25, my = 5; // x- and y-margin
   double xsep = 0., ysep = drawContext::global()->getStringHeight() + tic;
   char label[1024];
-  for(unsigned int i = 0; i < graphs.size(); i++) {
+  for(std::size_t i = 0; i < graphs.size(); i++) {
     PViewOptions *opt = graphs[i]->getOptions();
     sprintf(label, opt->format.c_str(), -M_PI * 1.e4);
     xsep = std::max(xsep, drawContext::global()->getStringWidth(label));
@@ -630,7 +630,7 @@ void drawContext::drawGraph2d(bool inModelCoordinates)
   int overlay[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   double winw = viewport[2] - viewport[0];
   double winh = viewport[3] - viewport[1];
-  for(unsigned int i = 0; i < graphs.size(); i++) {
+  for(std::size_t i = 0; i < graphs.size(); i++) {
     double x = viewport[0] + mx + xsep;
     double y = viewport[1] + my + 3 * ysep;
     PView *p = graphs[i];
diff --git a/Graphics/drawMesh.cpp b/Graphics/drawMesh.cpp
index 21c944ac80f309bf634201efadcce8f431bdca9b..00585de33e658754850da5c98d41812c31ead706 100644
--- a/Graphics/drawMesh.cpp
+++ b/Graphics/drawMesh.cpp
@@ -45,7 +45,7 @@ static void drawElementLabels(drawContext *ctx, GEntity *e,
   int labelStep = CTX::instance()->mesh.labelSampling;
   if(labelStep <= 0) labelStep = 1;
 
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     if(!isElementVisible(ele)) continue;
     if(i % labelStep == 0) {
@@ -73,7 +73,7 @@ template <class T>
 static void drawNormals(drawContext *ctx, std::vector<T *> &elements)
 {
   glColor4ubv((GLubyte *)&CTX::instance()->color.mesh.normals);
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     if(!isElementVisible(ele)) continue;
     SVector3 n = ele->getFace(0).normal();
@@ -89,7 +89,7 @@ template <class T>
 static void drawTangents(drawContext *ctx, std::vector<T *> &elements)
 {
   glColor4ubv((GLubyte *)&CTX::instance()->color.mesh.tangents);
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     if(!isElementVisible(ele)) continue;
     SVector3 t = ele->getEdge(0).tangent();
@@ -147,7 +147,7 @@ static void drawVerticesPerEntity(drawContext *ctx, GEntity *e)
 {
   if(CTX::instance()->mesh.points) {
     if(CTX::instance()->mesh.pointType) {
-      for(unsigned int i = 0; i < e->mesh_vertices.size(); i++) {
+      for(std::size_t i = 0; i < e->mesh_vertices.size(); i++) {
         MVertex *v = e->mesh_vertices[i];
         if(!v->getVisibility()) continue;
         if(CTX::instance()->mesh.colorCarousel == 0 ||
@@ -168,7 +168,7 @@ static void drawVerticesPerEntity(drawContext *ctx, GEntity *e)
     }
     else {
       glBegin(GL_POINTS);
-      for(unsigned int i = 0; i < e->mesh_vertices.size(); i++) {
+      for(std::size_t i = 0; i < e->mesh_vertices.size(); i++) {
         MVertex *v = e->mesh_vertices[i];
         if(!v->getVisibility()) continue;
         if(CTX::instance()->mesh.colorCarousel == 0 ||
@@ -191,7 +191,7 @@ static void drawVerticesPerEntity(drawContext *ctx, GEntity *e)
   if(CTX::instance()->mesh.pointsNum) {
     int labelStep = CTX::instance()->mesh.labelSampling;
     if(labelStep <= 0) labelStep = 1;
-    for(unsigned int i = 0; i < e->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < e->mesh_vertices.size(); i++)
       if(i % labelStep == 0) drawVertexLabel(ctx, e, e->mesh_vertices[i]);
   }
 }
@@ -200,7 +200,7 @@ template <class T>
 static void drawVerticesPerElement(drawContext *ctx, GEntity *e,
                                    std::vector<T *> &elements)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     for(std::size_t j = 0; j < ele->getNumVertices(); j++) {
       MVertex *v = ele->getVertex(j);
@@ -243,7 +243,7 @@ template <class T> static void drawBarycentricDual(std::vector<T *> &elements)
   glLineStipple(1, 0x0F0F);
   gl2psEnable(GL2PS_LINE_STIPPLE);
   glBegin(GL_LINES);
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *ele = elements[i];
     if(!isElementVisible(ele)) continue;
     SPoint3 pc = ele->barycenter();
@@ -284,7 +284,7 @@ template <class T> static void drawVoronoiDual(std::vector<T *> &elements)
   glLineStipple(1, 0x0F0F);
   gl2psEnable(GL2PS_LINE_STIPPLE);
   glBegin(GL_LINES);
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     T *ele = elements[i];
     if(!isElementVisible(ele)) continue;
     SPoint3 pc = ele->circumcenter();
@@ -685,8 +685,8 @@ void drawContext::drawMesh()
   // changed if the underlying mesh has, before resetting the changed
   // flag
   if(CTX::instance()->mesh.changed) {
-    for(unsigned int i = 0; i < GModel::list.size(); i++)
-      for(unsigned int j = 0; j < PView::list.size(); j++)
+    for(std::size_t i = 0; i < GModel::list.size(); i++)
+      for(std::size_t j = 0; j < PView::list.size(); j++)
         if(PView::list[j]->getData()->hasModel(GModel::list[i]))
           PView::list[j]->setChanged(true);
   }
@@ -707,7 +707,7 @@ void drawContext::drawMesh()
         glDisable((GLenum)(GL_CLIP_PLANE0 + i));
   }
 
-  for(unsigned int i = 0; i < GModel::list.size(); i++) {
+  for(std::size_t i = 0; i < GModel::list.size(); i++) {
     GModel *m = GModel::list[i];
     bool changed = m->fillVertexArrays();
     if(changed) Msg::Debug("mesh vertex arrays have changed");
diff --git a/Graphics/drawPost.cpp b/Graphics/drawPost.cpp
index 2f59387aa5824547550871b6ec09eb6138986631..3578651cc51ab93c425ee7a155a6512a3f2c5077 100644
--- a/Graphics/drawPost.cpp
+++ b/Graphics/drawPost.cpp
@@ -614,7 +614,7 @@ void drawContext::drawPost()
 
   if(!CTX::instance()->post.draw) return;
 
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     bool changed = PView::list[i]->fillVertexArrays();
     if(changed) Msg::Debug("post-pro vertex arrays have changed");
 #if defined(HAVE_FLTK) && defined(__APPLE__)
diff --git a/Graphics/drawScales.cpp b/Graphics/drawScales.cpp
index 9efefb93f47e29cd09c3abf005632cb296df6304..e9d5908589f3e8152b08b0f69919f2c230720438 100644
--- a/Graphics/drawScales.cpp
+++ b/Graphics/drawScales.cpp
@@ -272,7 +272,7 @@ static void drawScale(drawContext *ctx, PView *p, double xmin, double ymin,
 void drawContext::drawScales()
 {
   std::vector<PView *> scales;
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewData *data = PView::list[i]->getData();
     PViewOptions *opt = PView::list[i]->getOptions();
     if(!data->getDirty() && opt->visible && opt->showScale &&
@@ -286,7 +286,7 @@ void drawContext::drawScales()
                                  CTX::instance()->glFontSize);
   char label[1024];
   double maxw = 0.;
-  for(unsigned int i = 0; i < scales.size(); i++) {
+  for(std::size_t i = 0; i < scales.size(); i++) {
     PViewOptions *opt = scales[i]->getOptions();
     sprintf(label, opt->format.c_str(), -M_PI * 1.e-4);
     maxw = std::max(maxw, drawContext::global()->getStringWidth(label));
@@ -295,7 +295,7 @@ void drawContext::drawScales()
   const double tic = 10., bar_size = 16.;
   double width = 0., width_prev = 0., width_total = 0.;
 
-  for(unsigned int i = 0; i < scales.size(); i++) {
+  for(std::size_t i = 0; i < scales.size(); i++) {
     PView *p = scales[i];
     PViewData *data = p->getData();
     PViewOptions *opt = p->getOptions();
diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp
index 3b52bd0d6809a2cd32ed12eb54f973fa647c94db..0c240c8a8f6404bc06ac290b011adc0a0c220550 100644
--- a/Mesh/BDS.cpp
+++ b/Mesh/BDS.cpp
@@ -1164,7 +1164,7 @@ int BDS_Edge::numTriangles() const
 {
   // TODO C++11 use std::count_if
   int NT = 0;
-  for(unsigned int i = 0; i < _faces.size(); i++)
+  for(std::size_t i = 0; i < _faces.size(); i++)
     if(faces(i)->numEdges() == 3) NT++;
   return NT;
 }
diff --git a/Mesh/BackgroundMesh.cpp b/Mesh/BackgroundMesh.cpp
index 885165e18582923031330d307ab6f325504834c8..835c004c384f4a56961b162fc9aa997915435e73 100644
--- a/Mesh/BackgroundMesh.cpp
+++ b/Mesh/BackgroundMesh.cpp
@@ -89,7 +89,7 @@ backgroundMesh::backgroundMesh(GFace *_gf, bool cfd)
   // they do not depend on the actual mesh that can be deleted
 
   std::set<SPoint2> myBCNodes;
-  for(unsigned int i = 0; i < _gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < _gf->triangles.size(); i++) {
     MTriangle *e = _gf->triangles[i];
     MVertex *news[3];
     for(int j = 0; j < 3; j++) {
@@ -155,8 +155,8 @@ backgroundMesh::backgroundMesh(GFace *_gf, bool cfd)
 
 backgroundMesh::~backgroundMesh()
 {
-  for(unsigned int i = 0; i < _vertices.size(); i++) delete _vertices[i];
-  for(unsigned int i = 0; i < _triangles.size(); i++) delete _triangles[i];
+  for(std::size_t i = 0; i < _vertices.size(); i++) delete _vertices[i];
+  for(std::size_t i = 0; i < _triangles.size(); i++) delete _triangles[i];
   if(_octree) delete _octree;
 #if defined(HAVE_ANN)
   if(uv_kdtree) delete uv_kdtree;
@@ -195,9 +195,9 @@ static void propagateValuesOnFace(GFace *_gf,
 
   // Number vertices
   std::set<MVertex *> vs;
-  for(unsigned int k = 0; k < _gf->triangles.size(); k++)
+  for(std::size_t k = 0; k < _gf->triangles.size(); k++)
     for(int j = 0; j < 3; j++) vs.insert(_gf->triangles[k]->getVertex(j));
-  for(unsigned int k = 0; k < _gf->quadrangles.size(); k++)
+  for(std::size_t k = 0; k < _gf->quadrangles.size(); k++)
     for(int j = 0; j < 4; j++) vs.insert(_gf->quadrangles[k]->getVertex(j));
 
   std::map<MVertex *, SPoint3> theMap;
@@ -215,7 +215,7 @@ static void propagateValuesOnFace(GFace *_gf,
 
   // Assemble
   laplaceTerm l(0, 1, ONE);
-  for(unsigned int k = 0; k < _gf->triangles.size(); k++) {
+  for(std::size_t k = 0; k < _gf->triangles.size(); k++) {
     MTriangle *t = _gf->triangles[k];
     SElement se(t);
     l.addToMatrix(myAssembler, &se);
@@ -249,7 +249,7 @@ void backgroundMesh::propagate1dMesh(GFace *_gf)
 
   for(; it != e.end(); ++it) {
     if(!(*it)->isSeam(_gf)) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
         MVertex *v1 = (*it)->lines[i]->getVertex(0);
         MVertex *v2 = (*it)->lines[i]->getVertex(1);
         if(v1 != v2) {
@@ -304,7 +304,7 @@ void backgroundMesh::propagateCrossFieldByDistance(GFace *_gf)
 
   for(; it != e.end(); ++it) {
     if(!(*it)->isSeam(_gf)) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
         MVertex *v[2];
         v[0] = (*it)->lines[i]->getVertex(0);
         v[1] = (*it)->lines[i]->getVertex(1);
@@ -424,7 +424,7 @@ void backgroundMesh::propagateCrossField(GFace *_gf)
   //  int NSMOOTH = _gf->triangles.size();
   while(0) {
     // int NSMOOTH_NOW = 0;
-    for(unsigned int i = 0; i < _gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < _gf->triangles.size(); i++) {
       double smoothness = getSmoothness(_gf->triangles[i]);
       double val = smoothness < .5 ? 1.0 : 1.e-3; // exp(-absf/10);
       C.set(_gf->triangles[i], val);
@@ -460,7 +460,7 @@ void backgroundMesh::propagateCrossField(GFace *_gf,
   std::vector<GEdge *>::const_iterator it = e.begin();
   for(; it != e.end(); ++it) {
     if(!(*it)->isSeam(_gf)) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
         MVertex *v[2];
         v[0] = (*it)->lines[i]->getVertex(0);
         v[1] = (*it)->lines[i]->getVertex(1);
@@ -536,7 +536,7 @@ void backgroundMesh::updateSizes(GFace *_gf)
   // (Int. J. Numer. Meth. Engng. 43, 1143-1165 (1998) MESH GRADATION
   // CONTROL, BOROUCHAKI, HECHT, FREY)
   std::set<MEdge, Less_Edge> edges;
-  for(unsigned int i = 0; i < _triangles.size(); i++) {
+  for(std::size_t i = 0; i < _triangles.size(); i++) {
     for(int j = 0; j < _triangles[i]->getNumEdges(); j++) {
       edges.insert(_triangles[i]->getEdge(j));
     }
@@ -692,7 +692,7 @@ void backgroundMesh::print(const std::string &filename, GFace *gf,
   }
   fprintf(f, "View \"Background Mesh\"{\n");
   if(smooth) {
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MVertex *v1 = gf->triangles[i]->getVertex(0);
       MVertex *v2 = gf->triangles[i]->getVertex(1);
       MVertex *v3 = gf->triangles[i]->getVertex(2);
@@ -703,7 +703,7 @@ void backgroundMesh::print(const std::string &filename, GFace *gf,
     }
   }
   else {
-    for(unsigned int i = 0; i < _triangles.size(); i++) {
+    for(std::size_t i = 0; i < _triangles.size(); i++) {
       MVertex *v1 = _triangles[i]->getVertex(0);
       MVertex *v2 = _triangles[i]->getVertex(1);
       MVertex *v3 = _triangles[i]->getVertex(2);
diff --git a/Mesh/BoundaryLayers.cpp b/Mesh/BoundaryLayers.cpp
index a31666675b7c5f8d557a4c9e8426d3a2a76c97bb..3ed6f3ed572a3c9b832fb503d04519005fff766d 100644
--- a/Mesh/BoundaryLayers.cpp
+++ b/Mesh/BoundaryLayers.cpp
@@ -48,7 +48,7 @@ static void addExtrudeNormals(std::vector<T *> &elements, int invert,
 
   if(octree && !gouraud) { // get extrusion direction from post-processing view
     std::set<MVertex *> verts;
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       if(!ExtrudeParams::calcLayerScaleFactor[index]) {
         for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++)
           verts.insert(elements[i]->getVertex(j));
@@ -59,7 +59,7 @@ static void addExtrudeNormals(std::vector<T *> &elements, int invert,
 
         double aveLength = skipScaleCalc ? 1.0 : GetAveEdgeLength(elem_verts);
 
-        for(unsigned int j = 0; j < elem_verts.size(); j++) {
+        for(std::size_t j = 0; j < elem_verts.size(); j++) {
           verts.insert(elem_verts[j]);
           // if scaleLastLayer selection, but not doing gouraud, then still
           // scale the last layer...  This might create weird behavior for the
@@ -82,7 +82,7 @@ static void addExtrudeNormals(std::vector<T *> &elements, int invert,
     }
   }
   else { // get extrusion direction from Gouraud-shaded element normals
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       MElement *ele = elements[i];
       SVector3 n(0, 0, 0);
       if(ele->getDim() == 2)
@@ -105,7 +105,7 @@ static void addExtrudeNormals(std::vector<T *> &elements, int invert,
           aveLength = 1.0;
         else
           aveLength = GetAveEdgeLength(elem_verts);
-        for(unsigned int j = 0; j < elem_verts.size(); j++) {
+        for(std::size_t j = 0; j < elem_verts.size(); j++) {
           ExtrudeParams::normals[index]->add(
             elem_verts[j]->x(), elem_verts[j]->y(), elem_verts[j]->z(), 3, nn);
           if(aveLength != 0.0)
@@ -182,7 +182,7 @@ static void addExtrudeNormals(std::set<T *> &entities,
   }
 
   // enforce coherent normals at some points if necessary
-  for(unsigned int i = 0; i < ExtrudeParams::normalsCoherence.size(); i++) {
+  for(std::size_t i = 0; i < ExtrudeParams::normalsCoherence.size(); i++) {
     SPoint3 &p(ExtrudeParams::normalsCoherence[i]);
     double n0[3], n1[3];
     ExtrudeParams::normals[0]->get(p.x(), p.y(), p.z(), 3, n0);
@@ -225,7 +225,7 @@ static void addExtrudeNormals(std::set<T *> &entities,
       if(octrees.size()) { // scale normals by scalar views
         for(smooth_data::iter it = ExtrudeParams::normals[i]->begin();
             it != ExtrudeParams::normals[i]->end(); it++) {
-          for(unsigned int j = 0; j < octrees.size(); j++) {
+          for(std::size_t j = 0; j < octrees.size(); j++) {
             double d;
             if(octrees[j]->searchScalarWithTol(it->x, it->y, it->z, &d, 0)) {
               for(int k = 0; k < 3; k++) it->vals[k] *= d;
@@ -238,7 +238,7 @@ static void addExtrudeNormals(std::set<T *> &entities,
     }
   }
 
-  for(unsigned int i = 0; i < octrees.size(); i++) delete octrees[i];
+  for(std::size_t i = 0; i < octrees.size(); i++) delete octrees[i];
 }
 
 static void checkDepends(GModel *m, GFace *f, std::set<GFace *> &dep)
diff --git a/Mesh/DivideAndConquer.cpp b/Mesh/DivideAndConquer.cpp
index 6c53342d8cea7e9aa558963d5380974535e924aa..25c36823735fed5d484f80974a1891ede33dfe80 100644
--- a/Mesh/DivideAndConquer.cpp
+++ b/Mesh/DivideAndConquer.cpp
@@ -586,7 +586,7 @@ void DocRecord::makePosView(const std::string &fileName, GFace *gf)
         // if (gf) p0 = gf->point(pc[0], pc[1]);
         fprintf(f, "SP(%g,%g,%g){%g};\n", p0.x(), p0.y(), p0.z(), (double)i);
         voronoiCell(i, pts);
-        for(unsigned int j = 0; j < pts.size(); j++) {
+        for(std::size_t j = 0; j < pts.size(); j++) {
           SPoint2 pp1 = pts[j];
           SPoint2 pp2 = pts[(j + 1) % pts.size()];
           GPoint p1(pp1.x(), pp1.y(), 0.0);
@@ -656,7 +656,7 @@ void DocRecord::printMedialAxis(Octree *_octree, const std::string &fileName,
         if(gf) p0 = gf->point(pc[0], pc[1]);
         fprintf(f, "SP(%g,%g,%g){%g};\n", p0.x(), p0.y(), p0.z(), (double)i);
         voronoiCell(i, pts);
-        for(unsigned int j = 0; j < pts.size(); j++) {
+        for(std::size_t j = 0; j < pts.size(); j++) {
           SVector3 pp1(pts[j].x(), pts[j].y(), 0.0);
           SVector3 pp2(pts[(j + 1) % pts.size()].x(),
                        pts[(j + 1) % pts.size()].y(), 0.0);
@@ -723,7 +723,7 @@ void centroidOfPolygon(SPoint2 &pc, std::vector<SPoint2> &pts, double &xc,
   double area_tot = 0;
   areaCell = 0.0;
   SPoint2 center(0, 0);
-  for(unsigned int j = 0; j < pts.size(); j++) {
+  for(std::size_t j = 0; j < pts.size(); j++) {
     SPoint2 &pa = pts[j];
     SPoint2 &pb = pts[(j + 1) % pts.size()];
     const double area = triangle_area2d(pa, pb, pc);
@@ -737,7 +737,7 @@ void centroidOfPolygon(SPoint2 &pc, std::vector<SPoint2> &pts, double &xc,
   }
   SPoint2 x = center * (1.0 / area_tot);
   inertia = 0;
-  for(unsigned int j = 0; j < pts.size(); j++) {
+  for(std::size_t j = 0; j < pts.size(); j++) {
     SPoint2 &pa = pts[j];
     SPoint2 &pb = pts[(j + 1) % pts.size()];
     const double area = triangle_area2d(pa, pb, pc);
@@ -971,7 +971,7 @@ void DocRecord::concave(double x, double y, GFace *gf)
 
   for(it1 = list.begin(); it1 != list.end(); it1++) {
     edge = *it1;
-    for(unsigned int i = 0; i < edge->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < edge->getNumMeshElements(); i++) {
       element = edge->getMeshElement(i);
       vertex1 = element->getVertex(0);
       vertex2 = element->getVertex(1);
@@ -1009,7 +1009,7 @@ bool DocRecord::contain(int index1, int index2, int index3)
   void *dataB;
   dataA = points[index2].data;
   dataB = points[index3].data;
-  for(unsigned int i = 0; i < points[index1].vicinity.size() - 1; i = i + 2) {
+  for(std::size_t i = 0; i < points[index1].vicinity.size() - 1; i = i + 2) {
     if(points[index1].vicinity[i] == dataA &&
        points[index1].vicinity[i + 1] == dataB) {
       return 1;
@@ -1103,7 +1103,7 @@ bool DocRecord::delaunay_conformity(GFace *gf)
   for(std::vector<GEdge *>::const_iterator it = list.begin(); it != list.end();
       it++) {
     GEdge *edge = *it;
-    for(unsigned int i = 0; i < edge->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < edge->getNumMeshElements(); i++) {
       MElement *element = edge->getMeshElement(i);
       MVertex *vertex1 = element->getVertex(0);
       MVertex *vertex2 = element->getVertex(1);
diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp
index 6928ed8b5117d0b6ef8578cd5aad439c845f5b34..ccf0dba3adbb3e0987cfad555ab30c26e0600585 100644
--- a/Mesh/Field.cpp
+++ b/Mesh/Field.cpp
@@ -2045,7 +2045,7 @@ public:
         GFace *f = GModel::current()->getFaceByTag(*it);
         if(f) {
           if(f->mesh_vertices.size()) {
-            for(unsigned int i = 0; i < f->mesh_vertices.size(); i++) {
+            for(std::size_t i = 0; i < f->mesh_vertices.size(); i++) {
               MVertex *v = f->mesh_vertices[i];
               double uu, vv;
               v->getParameter(0, uu);
@@ -2083,7 +2083,7 @@ public:
         GEdge *e = GModel::current()->getEdgeByTag(*it);
         if(e) {
           if(e->mesh_vertices.size()) {
-            for(unsigned int i = 0; i < e->mesh_vertices.size(); i++) {
+            for(std::size_t i = 0; i < e->mesh_vertices.size(); i++) {
               double u;
               e->mesh_vertices[i]->getParameter(0, u);
               GPoint gp = e->point(u);
@@ -2492,7 +2492,7 @@ public:
         GFace *f = GModel::current()->getFaceByTag(*it);
         if(f) {
           if(f->mesh_vertices.size()) {
-            for(unsigned int i = 0; i < f->mesh_vertices.size(); i++) {
+            for(std::size_t i = 0; i < f->mesh_vertices.size(); i++) {
               MVertex *v = f->mesh_vertices[i];
               points.push_back(SPoint3(v->x(), v->y(), v->z()));
               double uu = 0., vv = 0.;
@@ -2528,7 +2528,7 @@ public:
         GEdge *e = GModel::current()->getEdgeByTag(*it);
         if(e) {
           if(e->mesh_vertices.size()) {
-            for(unsigned int i = 0; i < e->mesh_vertices.size(); i++){
+            for(std::size_t i = 0; i < e->mesh_vertices.size(); i++){
               points.push_back(SPoint3(e->mesh_vertices[i]->x(),
                                        e->mesh_vertices[i]->y(),
                                        e->mesh_vertices[i]->z()));
@@ -2918,7 +2918,7 @@ void BoundaryLayerField::operator()(double x, double y, double z,
     }
   }
   if(iIntersect)
-    for(unsigned int i = 0; i < hop.size(); i++)
+    for(std::size_t i = 0; i < hop.size(); i++)
       v = intersection_conserveM1(v, hop[i]);
   metr = v;
 }
@@ -2991,8 +2991,8 @@ void Field::putOnNewView()
   std::map<int, std::vector<double> > d;
   std::vector<GEntity *> entities;
   GModel::current()->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int 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];
       d[v->getNum()].push_back((*this)(v->x(), v->y(), v->z(), entities[i]));
     }
diff --git a/Mesh/Field.h b/Mesh/Field.h
index 1aeee768fb3b964df9cc9378259a552e91b5fd76..0b6823af6868c4f02cba84701a28904f946386f2 100644
--- a/Mesh/Field.h
+++ b/Mesh/Field.h
@@ -152,14 +152,14 @@ public:
   inline void setBackgroundFieldId(int id) { _background_field = id; };
   inline void addBoundaryLayerFieldId(int id)
   {
-    for(unsigned int i = 0; i < _boundaryLayer_fields.size(); ++i) {
+    for(std::size_t i = 0; i < _boundaryLayer_fields.size(); ++i) {
       if(_boundaryLayer_fields[i] == id) return;
     }
     _boundaryLayer_fields.push_back(id);
   }
   inline void addBoundaryLayerFieldId(std::vector<int> &tags)
   {
-    for(unsigned int i = 0; i < tags.size(); ++i)
+    for(std::size_t i = 0; i < tags.size(); ++i)
       addBoundaryLayerFieldId(tags[i]);
   }
   inline int getBackgroundField() { return _background_field; }
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 210c36f96c54335072a978a00fe4618fd909dd71..3e994f7792f081010de55794490135bbb572a434 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -67,7 +67,7 @@ public:
     std::vector<GEdge *>::const_iterator it = e.begin();
     std::vector<GFace *>::const_iterator itf = f.begin();
     for(; it != e.end(); ++it) {
-      for(unsigned int i = 0; i < (*it)->lines.size(); ++i) {
+      for(std::size_t i = 0; i < (*it)->lines.size(); ++i) {
         if(distance((*it)->lines[i]->getVertex(0),
                     (*it)->lines[i]->getVertex(1)) > 1.e-12)
           edges.insert(std::make_pair(
@@ -76,7 +76,7 @@ public:
       }
     }
     for(; itf != f.end(); ++itf) {
-      for(unsigned int i = 0; i < (*itf)->triangles.size(); ++i) {
+      for(std::size_t i = 0; i < (*itf)->triangles.size(); ++i) {
         faces.insert(std::make_pair(MFace((*itf)->triangles[i]->getVertex(0),
                                           (*itf)->triangles[i]->getVertex(1),
                                           (*itf)->triangles[i]->getVertex(2)),
@@ -86,7 +86,7 @@ public:
     Msg::Info("Searching for %d embedded mesh edges and %d embedded mesh faces "
               "in region %d",
               edges.size(), faces.size(), gr->tag());
-    for(unsigned int k = 0; k < gr->getNumMeshElements(); k++) {
+    for(std::size_t k = 0; k < gr->getNumMeshElements(); k++) {
       for(int j = 0; j < gr->getMeshElement(k)->getNumEdges(); j++) {
         edges.erase(gr->getMeshElement(k)->getEdge(j));
       }
@@ -149,7 +149,7 @@ GetQualityMeasure(std::vector<T *> &ele, double &gamma, double &gammaMin,
                   double &minSICNMax, double &minSIGE, double &minSIGEMin,
                   double &minSIGEMax, double quality[3][100])
 {
-  for(unsigned int i = 0; i < ele.size(); i++) {
+  for(std::size_t i = 0; i < ele.size(); i++) {
     double g = ele[i]->gammaShapeMeasure();
     gamma += g;
     gammaMin = std::min(gammaMin, g);
@@ -267,7 +267,7 @@ void GetStatistics(double stat[50], double quality[3][100])
 
 #if defined(HAVE_POST)
   stat[27] = PView::list.size();
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     PViewData *data = PView::list[i]->getData(true);
     stat[28] += data->getNumPoints();
     stat[29] += data->getNumLines();
@@ -551,7 +551,7 @@ FindConnectedRegions(const std::vector<GRegion *> &del,
   std::vector<GRegion *> delaunay = del;
   // test: connected.resize(1); connected[0] = delaunay; return;
 
-  const unsigned int nbVolumes = delaunay.size();
+  const std::size_t nbVolumes = delaunay.size();
   if(!nbVolumes) return;
   while(delaunay.size()) {
     std::set<GRegion *> oneDomain;
@@ -573,7 +573,7 @@ FindConnectedRegions(const std::vector<GRegion *> &del,
       }
     }
     std::vector<GRegion *> temp1, temp2;
-    for(unsigned int i = 0; i < delaunay.size(); i++) {
+    for(std::size_t i = 0; i < delaunay.size(); i++) {
       r = delaunay[i];
       if(oneDomain.find(r) == oneDomain.end())
         temp1.push_back(r);
@@ -604,7 +604,7 @@ FindConnectedRegions(const std::vector<GRegion *> &del,
 
 void buildUniqueFaces(GRegion *gr, std::set<MFace, Less_Face> &bnd)
 {
-  for(unsigned int i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *e = gr->getMeshElement(i);
     for(int j = 0; j < e->getNumFaces(); j++) {
       MFace f = e->getFace(j);
@@ -672,7 +672,7 @@ bool MakeMeshConformal(GModel *gm, int howto)
   for(GModel::riter rit = gm->firstRegion(); rit != gm->lastRegion(); ++rit) {
     GRegion *gr = *rit;
     std::vector<MHexahedron *> remainingHexes;
-    for(unsigned int i = 0; i < gr->hexahedra.size(); i++) {
+    for(std::size_t i = 0; i < gr->hexahedra.size(); i++) {
       MHexahedron *e = gr->hexahedra[i];
       std::vector<MFace> faces;
       for(int j = 0; j < e->getNumFaces(); j++) {
@@ -696,7 +696,7 @@ bool MakeMeshConformal(GModel *gm, int howto)
         SPoint3 pp = e->barycenter();
         MVertex *newv = new MVertex(pp.x(), pp.y(), pp.z(), gr);
         gr->mesh_vertices.push_back(newv);
-        for(unsigned int j = 0; j < faces.size(); j++) {
+        for(std::size_t j = 0; j < faces.size(); j++) {
           MFace &f = faces[j];
           if(f.getNumVertices() == 4) {
             gr->pyramids.push_back(new MPyramid(f.getVertex(0), f.getVertex(1),
@@ -713,7 +713,7 @@ bool MakeMeshConformal(GModel *gm, int howto)
     gr->hexahedra = remainingHexes;
     remainingHexes.clear();
     std::vector<MPrism *> remainingPrisms;
-    for(unsigned int i = 0; i < gr->prisms.size(); i++) {
+    for(std::size_t i = 0; i < gr->prisms.size(); i++) {
       MPrism *e = gr->prisms[i];
       std::vector<MFace> faces;
       for(int j = 0; j < e->getNumFaces(); j++) {
@@ -737,7 +737,7 @@ bool MakeMeshConformal(GModel *gm, int howto)
         SPoint3 pp = e->barycenter();
         MVertex *newv = new MVertex(pp.x(), pp.y(), pp.z(), gr);
         gr->mesh_vertices.push_back(newv);
-        for(unsigned int j = 0; j < faces.size(); j++) {
+        for(std::size_t j = 0; j < faces.size(); j++) {
           MFace &f = faces[j];
           if(f.getNumVertices() == 4) {
             gr->pyramids.push_back(new MPyramid(f.getVertex(0), f.getVertex(1),
@@ -767,7 +767,7 @@ static void TestConformity(GModel *gm)
     GRegion *gr = *rit;
     std::set<MFace, Less_Face> bnd;
     double vol = 0.0;
-    for(unsigned int i = 0; i < gr->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
       MElement *e = gr->getMeshElement(i);
       vol += fabs(e->getVolume());
       for(int j = 0; j < e->getNumFaces(); j++) {
@@ -836,8 +836,8 @@ static void Mesh3D(GModel *m)
   FindConnectedRegions(delaunay, connected);
 
   // remove quads elements for volumes that are recombined
-  for(unsigned int i = 0; i < connected.size(); i++) {
-    for(unsigned j = 0; j < connected[i].size(); j++) {
+  for(std::size_t i = 0; i < connected.size(); i++) {
+    for(std::size_t j = 0; j < connected[i].size(); j++) {
       GRegion *gr = connected[i][j];
       if(CTX::instance()->mesh.recombine3DAll ||
          gr->meshAttributes.recombine3D) {
@@ -854,13 +854,13 @@ static void Mesh3D(GModel *m)
   int nb_elements_recombination = 0, nb_hexa_recombination = 0;
 #endif
 
-  for(unsigned int i = 0; i < connected.size(); i++) {
+  for(std::size_t i = 0; i < connected.size(); i++) {
     MeshDelaunayVolume(connected[i]);
 
 #if defined(HAVE_DOMHEX)
     // additional code for experimental hex mesh - will eventually be replaced
     // by new HXT-based code
-    for(unsigned j = 0; j < connected[i].size(); j++) {
+    for(std::size_t j = 0; j < connected[i].size(); j++) {
       GRegion *gr = connected[i][j];
       bool treat_region_ok = false;
       if(CTX::instance()->mesh.algo3d == ALGO_3D_RTREE) {
diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp
index ac7e590051f905fd373a87ad71b93f02c66e50cb..ac539522f0f7f0003fd86eb5a2b050d8b9086cf3 100644
--- a/Mesh/HighOrder.cpp
+++ b/Mesh/HighOrder.cpp
@@ -687,7 +687,7 @@ static void getFaceVerticesOnGeo(GFace *gf,
 {
   SPoint2 pts[1000];
   bool reparamOK = true;
-  for(unsigned int k = 0; k < vertices.size(); ++k)
+  for(std::size_t k = 0; k < vertices.size(); ++k)
     reparamOK &= reparamMeshVertexOnFace(vertices[k], gf, pts[k]);
   for(int k = 0; k < coefficients.size1(); k++) {
     double X(0), Y(0), Z(0), GUESS[2] = {0, 0};
@@ -932,7 +932,7 @@ static void setHighOrder(GEdge *ge, std::vector<MVertex *> &newHOVert,
                          int nbPts = 1)
 {
   std::vector<MLine *> lines2;
-  for(unsigned int i = 0; i < ge->lines.size(); i++) {
+  for(std::size_t i = 0; i < ge->lines.size(); i++) {
     MLine *l = ge->lines[i];
     std::vector<MVertex *> ve;
     getEdgeVertices(ge, l, ve, newHOVert, edgeVertices, linear, nbPts);
@@ -1009,7 +1009,7 @@ static void setHighOrder(GFace *gf, std::vector<MVertex *> &newHOVert,
                          bool incomplete, int nPts = 1)
 {
   std::vector<MTriangle *> triangles2;
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     MTriangle *t = gf->triangles[i];
     MTriangle *tNew = setHighOrder(t, gf, newHOVert, edgeVertices, faceVertices,
                                    linear, incomplete, nPts);
@@ -1019,7 +1019,7 @@ static void setHighOrder(GFace *gf, std::vector<MVertex *> &newHOVert,
   gf->triangles = triangles2;
 
   std::vector<MQuadrangle *> quadrangles2;
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     MQuadrangle *q = gf->quadrangles[i];
     MQuadrangle *qNew = setHighOrder(q, gf, newHOVert, edgeVertices,
                                      faceVertices, linear, incomplete, nPts);
@@ -1160,7 +1160,7 @@ static void setHighOrder(GRegion *gr, std::vector<MVertex *> &newHOVert,
                          int nPts = 1)
 {
   std::vector<MTetrahedron *> tetrahedra2;
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
     MTetrahedron *t = gr->tetrahedra[i];
     MTetrahedron *tNew = setHighOrder(t, gr, newHOVert, edgeVertices,
                                       faceVertices, incomplete, nPts);
@@ -1170,7 +1170,7 @@ static void setHighOrder(GRegion *gr, std::vector<MVertex *> &newHOVert,
   gr->tetrahedra = tetrahedra2;
 
   std::vector<MHexahedron *> hexahedra2;
-  for(unsigned int i = 0; i < gr->hexahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->hexahedra.size(); i++) {
     MHexahedron *h = gr->hexahedra[i];
     MHexahedron *hNew = setHighOrder(h, gr, newHOVert, edgeVertices,
                                      faceVertices, incomplete, nPts);
@@ -1180,7 +1180,7 @@ static void setHighOrder(GRegion *gr, std::vector<MVertex *> &newHOVert,
   gr->hexahedra = hexahedra2;
 
   std::vector<MPrism *> prisms2;
-  for(unsigned int i = 0; i < gr->prisms.size(); i++) {
+  for(std::size_t i = 0; i < gr->prisms.size(); i++) {
     MPrism *p = gr->prisms[i];
     MPrism *pNew = setHighOrder(p, gr, newHOVert, edgeVertices, faceVertices,
                                 incomplete, nPts);
@@ -1190,7 +1190,7 @@ static void setHighOrder(GRegion *gr, std::vector<MVertex *> &newHOVert,
   gr->prisms = prisms2;
 
   std::vector<MPyramid *> pyramids2;
-  for(unsigned int i = 0; i < gr->pyramids.size(); i++) {
+  for(std::size_t i = 0; i < gr->pyramids.size(); i++) {
     MPyramid *p = gr->pyramids[i];
     MPyramid *pNew = setHighOrder(p, gr, newHOVert, edgeVertices, faceVertices,
                                   incomplete, nPts);
@@ -1210,7 +1210,7 @@ static void setFirstOrder(GEntity *e, std::vector<T *> &elements,
 {
   if(onlyVisible && !e->getVisibility()) return;
   std::vector<T *> elements1;
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     T *ele = elements[i];
     int n = ele->getNumPrimaryVertices();
     std::vector<MVertex *> v1;
@@ -1229,7 +1229,7 @@ static void updateHighOrderVertices(GEntity *e,
 {
   if(onlyVisible && !e->getVisibility()) return;
   std::vector<MVertex *> v1;
-  for(unsigned int i = 0; i < e->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < e->mesh_vertices.size(); i++) {
     if(e->mesh_vertices[i]->getPolynomialOrder() > 1)
       delete e->mesh_vertices[i];
     else
@@ -1258,7 +1258,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
         tgt->tag(), src->tag());
 
       std::map<MEdge, MLine *, Less_Edge> srcEdges;
-      for(unsigned int i = 0; i < src->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < src->getNumMeshElements(); i++) {
         MLine *srcLine = dynamic_cast<MLine *>(src->getMeshElement(i));
         if(!srcLine) {
           Msg::Error("Master element %d is not an edge",
@@ -1268,7 +1268,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
         srcEdges[MEdge(srcLine->getVertex(0), srcLine->getVertex(1))] = srcLine;
       }
 
-      for(unsigned int i = 0; i < tgt->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < tgt->getNumMeshElements(); ++i) {
         MLine *tgtLine = dynamic_cast<MLine *>(tgt->getMeshElement(i));
         MVertex *vtcs[2];
         if(!tgtLine) {
@@ -1302,7 +1302,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
         else {
           MLine *srcLine = srcIter->second;
           if(tgtLine->getNumVertices() != srcLine->getNumVertices()) throw;
-          for(unsigned int i = 2; i < tgtLine->getNumVertices(); i++)
+          for(std::size_t i = 2; i < tgtLine->getNumVertices(); i++)
             p2p[tgtLine->getVertex(i)] = srcLine->getVertex(i);
         }
       }
@@ -1334,7 +1334,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
 
       std::map<MFace, MElement *, Less_Face> srcFaces;
 
-      for(unsigned int i = 0; i < src->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < src->getNumMeshElements(); ++i) {
         MElement *srcElmt = src->getMeshElement(i);
         int nbVtcs = 0;
         if(dynamic_cast<MTriangle *>(srcElmt)) nbVtcs = 3;
@@ -1347,7 +1347,7 @@ static void updatePeriodicEdgesAndFaces(GModel *m)
         srcFaces[MFace(vtcs)] = srcElmt;
       }
 
-      for(unsigned int i = 0; i < tgt->getNumMeshElements(); ++i) {
+      for(std::size_t i = 0; i < tgt->getNumMeshElements(); ++i) {
         MElement *tgtElmt = tgt->getMeshElement(i);
         int nbVtcs = 0;
         if(dynamic_cast<MTriangle *>(tgtElmt)) nbVtcs = 3;
@@ -1442,7 +1442,7 @@ void checkHighOrderTriangles(const char *cc, GModel *m,
   double avg = 0.0;
   int count = 0, nbfair = 0;
   for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       double disto_ = t->distoShapeMeasure();
       double gamma_ = t->gammaShapeMeasure();
@@ -1457,7 +1457,7 @@ void checkHighOrderTriangles(const char *cc, GModel *m,
         nbfair++;
     }
     /*
-    for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++){
+    for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++){
       MQuadrangle *t = (*it)->quadrangles[i];
       double disto_ = t->distoShapeMeasure();
       double gamma_ = t->gammaShapeMeasure();
@@ -1490,7 +1490,7 @@ void checkHighOrderTetrahedron(const char *cc, GModel *m,
   double avg = 0.0;
   int count = 0, nbfair = 0;
   for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) {
-    for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->tetrahedra.size(); i++) {
       MTetrahedron *t = (*it)->tetrahedra[i];
       double disto_ = t->distoShapeMeasure();
       minJGlob = std::min(minJGlob, disto_);
@@ -1666,7 +1666,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
     if(onlyVisible && !(*it)->getVisibility()) continue;
     std::vector<MVertex *> dumNewHOVert;
     std::vector<MTriangle *> newT;
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       std::vector<MVertex *> vv;
       for(std::size_t j = 3; j < t->getNumVertices() - t->getNumFaceVertices();
@@ -1682,7 +1682,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
     (*it)->triangles = newT;
 
     std::vector<MQuadrangle *> newQ;
-    for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++) {
       MQuadrangle *t = (*it)->quadrangles[i];
 
       std::vector<MVertex *> vv;
@@ -1702,7 +1702,7 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible)
     (*it)->quadrangles = newQ;
 
     std::set<MVertex *> newV;
-    for(unsigned int i = 0; i < (*it)->getNumMeshElements(); ++i) {
+    for(std::size_t i = 0; i < (*it)->getNumMeshElements(); ++i) {
       MElement *e = (*it)->getMeshElement(i);
       for(std::size_t j = 0; j < e->getNumVertices(); j++)
         newV.insert(e->getVertex(j));
@@ -1722,7 +1722,7 @@ void SetHighOrderIncomplete(GModel *m, bool onlyVisible)
     if(onlyVisible && !(*it)->getVisibility()) continue;
     std::vector<MTriangle *> newT;
 
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       std::vector<MVertex *> vt;
       int order = t->getPolynomialOrder();
@@ -1740,7 +1740,7 @@ void SetHighOrderIncomplete(GModel *m, bool onlyVisible)
     (*it)->triangles = newT;
 
     std::vector<MQuadrangle *> newQ;
-    for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->quadrangles.size(); i++) {
       MQuadrangle *q = (*it)->quadrangles[i];
       std::vector<MVertex *> vt;
       int nPts = q->getPolynomialOrder() - 1;
@@ -1759,7 +1759,7 @@ void SetHighOrderIncomplete(GModel *m, bool onlyVisible)
 
     std::vector<MVertex *> newV;
     int numd = 0;
-    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); ++i) {
       if(toDelete.find((*it)->mesh_vertices[i]) == toDelete.end())
         newV.push_back((*it)->mesh_vertices[i]);
       else {
diff --git a/Mesh/delaunay3d.cpp b/Mesh/delaunay3d.cpp
index c02efc46781ef08f592801f6c9d82bfbc636a2fd..8c71d26b993e45176b3bd59bf7ef3f668d6ba8b1 100644
--- a/Mesh/delaunay3d.cpp
+++ b/Mesh/delaunay3d.cpp
@@ -37,14 +37,14 @@ struct Vert {
 private:
   double _x[3];
   double _lc;
-  unsigned int _num;
+  std::size_t _num;
   Tet *_t;
 
 public:
   inline void setT(Tet *t) { _t = t; }
   inline Tet *getT() const { return _t; }
-  inline unsigned int getNum() const { return _num; }
-  inline void setNum(unsigned int n) { _num = n; }
+  inline std::size_t getNum() const { return _num; }
+  inline void setNum(std::size_t n) { _num = n; }
   unsigned char _thread;
   inline double x() const { return _x[0]; }
   inline double y() const { return _x[1]; }
@@ -270,24 +270,24 @@ struct conn {
 template <class T> class aBunchOfStuff {
 public:
   std::vector<T *> _all;
-  unsigned int _current;
-  unsigned int _nbAlloc;
-  unsigned int size() { return _current + (_all.size() - 1) * _nbAlloc; }
+  std::size_t _current;
+  std::size_t _nbAlloc;
+  std::size_t size() { return _current + (_all.size() - 1) * _nbAlloc; }
 
 public:
-  T *operator()(unsigned int i)
+  T *operator()(std::size_t i)
   {
-    const unsigned int _array = i / _nbAlloc;
-    const unsigned int _offset = i % _nbAlloc;
+    const std::size_t _array = i / _nbAlloc;
+    const std::size_t _offset = i % _nbAlloc;
     return _all[_array] + _offset;
   }
-  aBunchOfStuff(unsigned int s) : _current(0), _nbAlloc(s)
+  aBunchOfStuff(std::size_t s) : _current(0), _nbAlloc(s)
   {
     _all.push_back(new T[_nbAlloc]);
   }
   ~aBunchOfStuff()
   {
-    for(unsigned int i = 0; i < _all.size(); i++) {
+    for(std::size_t i = 0; i < _all.size(); i++) {
       delete[] _all[i];
     }
   }
@@ -307,7 +307,7 @@ class tetContainer {
   std::vector<aBunchOfStuff<Tet> *> _perThread;
 
 public:
-  unsigned int size(int thread) const
+  std::size_t size(int thread) const
   {
     if((int)_perThread.size() <= thread) return 0;
     return _perThread[thread]->size();
@@ -319,7 +319,7 @@ public:
   tetContainer(int nbThreads, int preallocSizePerThread)
   {
     _perThread.resize(nbThreads);
-    for(unsigned int i = 0; i < _perThread.size(); i++){
+    for(std::size_t i = 0; i < _perThread.size(); i++){
       _perThread[i] = new aBunchOfStuff<Tet>(preallocSizePerThread);
     }
   }
@@ -329,7 +329,7 @@ public:
   }
   ~tetContainer()
   {
-    for(unsigned int i = 0; i < _perThread.size(); i++)
+    for(std::size_t i = 0; i < _perThread.size(); i++)
       delete _perThread[i];
   }
 };
@@ -645,10 +645,10 @@ static void printtet(const char *c, Tet *t)
 // 297-317
 
 static void starShapeness(Vert *v, connContainer &bndK,
-                          std::vector<unsigned int> &_negatives)
+                          std::vector<std::size_t> &_negatives)
 {
   _negatives.clear();
-  for(unsigned int i = 0; i < bndK.size(); i++) {
+  for(std::size_t i = 0; i < bndK.size(); i++) {
     // no symbolic perturbation
     const double val = robustPredicates::orient3d(
       (double *)bndK[i].f.V[0], (double *)bndK[i].f.V[1],
@@ -661,9 +661,9 @@ static void starShapeness(Vert *v, connContainer &bndK,
 
 static Tet *tetContainsV(Vert *v, cavityContainer &cavity)
 {
-  for(unsigned int i = 0; i < cavity.size(); i++) {
-    unsigned int count = 0;
-    for(unsigned int j = 0; j < 4; j++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
+    std::size_t count = 0;
+    for(std::size_t j = 0; j < 4; j++) {
       Face f = cavity[i]->getFace(j);
       const double val = robustPredicates::orient3d(
         (double *)f.V[0], (double *)f.V[1], (double *)f.V[2], (double *)v);
@@ -679,9 +679,9 @@ static Tet *tetContainsV(Vert *v, cavityContainer &cavity)
 static void buildDelaunayBall(cavityContainer &cavity, connContainer &faceToTet)
 {
   faceToTet.clear();
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     Tet *t = cavity[i];
-    for(unsigned int iFace = 0; iFace < 4; iFace++) {
+    for(std::size_t iFace = 0; iFace < 4; iFace++) {
       Tet *neigh = t->T[iFace];
       conn c(t->getFace(iFace), iFace, neigh);
       connContainer::iterator it =
@@ -726,9 +726,9 @@ static bool removeIsolatedTets(Tet *containsV, cavityContainer &cavity,
 static Tet *tetInsideCavityWithFAce(Face &f, cavityContainer &cavity)
 {
   // printf("size of cavity %ld\n",cavity.size());
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     Tet *t = cavity[i];
-    for(unsigned int iFace = 0; iFace < 4; iFace++) {
+    for(std::size_t iFace = 0; iFace < 4; iFace++) {
       if(t->getFace(iFace) == f) {
         return t;
       }
@@ -739,15 +739,15 @@ static Tet *tetInsideCavityWithFAce(Face &f, cavityContainer &cavity)
 
 static bool fixDelaunayCavity(Vert *v, cavityContainer &cavity,
                               connContainer &bndK, int myThread, int K,
-                              std::vector<unsigned int> &_negatives)
+                              std::vector<std::size_t> &_negatives)
 {
   starShapeness(v, bndK, _negatives);
 
   if(_negatives.empty()) return false;
 
   // unset all tets of the cavity
-  for(unsigned int i = 0; i < cavity.size(); i++) cavity[i]->unset(myThread, K);
-  for(unsigned int i = 0; i < bndK.size(); i++)
+  for(std::size_t i = 0; i < cavity.size(); i++) cavity[i]->unset(myThread, K);
+  for(std::size_t i = 0; i < bndK.size(); i++)
     if(bndK[i].t) bndK[i].t->unset(myThread, K);
 
   // return true;
@@ -760,7 +760,7 @@ static bool fixDelaunayCavity(Vert *v, cavityContainer &cavity,
   if(!containsV) return true;
 
   while(!_negatives.empty()) {
-    for(unsigned int i = 0; i < _negatives.size(); i++) {
+    for(std::size_t i = 0; i < _negatives.size(); i++) {
       conn &c = bndK[_negatives[i]];
       Tet *toRemove = tetInsideCavityWithFAce(c.f, cavity);
       if(toRemove) {
@@ -779,8 +779,8 @@ static bool fixDelaunayCavity(Vert *v, cavityContainer &cavity,
     buildDelaunayBall(cavity, bndK);
     starShapeness(v, bndK, _negatives);
   }
-  for(unsigned int i = 0; i < cavity.size(); i++) cavity[i]->set(myThread, K);
-  for(unsigned int i = 0; i < bndK.size(); i++)
+  for(std::size_t i = 0; i < cavity.size(); i++) cavity[i]->set(myThread, K);
+  for(std::size_t i = 0; i < bndK.size(); i++)
     if(bndK[i].t) bndK[i].t->set(myThread, K);
   return false;
 }
@@ -896,7 +896,7 @@ static void print(const char *name, connContainer &conn, Vert *v)
 
   if(v) fprintf(f, "SP(%g,%g,%g){%d};\n", v->x(), v->y(), v->z(), v->getNum());
 
-  for(unsigned int i = 0; i < conn.size(); i++) {
+  for(std::size_t i = 0; i < conn.size(); i++) {
     fprintf(f, "ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n",
             conn[i].f.V[0]->x(), conn[i].f.V[0]->y(), conn[i].f.V[0]->z(),
             conn[i].f.V[1]->x(), conn[i].f.V[1]->y(), conn[i].f.V[1]->z(),
@@ -915,7 +915,7 @@ static void print(const char *name, int thread, tetContainer &T, Vert *v)
   fprintf(f, "View \"\"{\n");
   if(v) fprintf(f, "SP(%g,%g,%g){%d};\n", v->x(), v->y(), v->z(), v->getNum());
 
-  for(unsigned int i = 0; i < T.size(thread); i++) {
+  for(std::size_t i = 0; i < T.size(thread); i++) {
     Tet *tt = T(thread, i);
     if(tt->V[0]) {
       // double val = robustPredicates::orient3d
@@ -944,13 +944,13 @@ static void print(const char *name, int thread, tetContainer &T, Vert *v)
 
 // xx10000 ok if all bits on my right are 0
 
-static bool canWeProcessCavity(cavityContainer &cavity, unsigned int myThread,
-                               unsigned int iPt)
+static bool canWeProcessCavity(cavityContainer &cavity, std::size_t myThread,
+                               std::size_t iPt)
 {
-  unsigned int cSize = cavity.size();
-  for(unsigned int j = 0; j < cSize; j++) {
+  std::size_t cSize = cavity.size();
+  for(std::size_t j = 0; j < cSize; j++) {
     Tet *f = cavity[j];
-    for(unsigned int index = 0; index < myThread; index++) {
+    for(std::size_t index = 0; index < myThread; index++) {
       if(f->_bitset[index]) return false;
     }
     if(iPt) {
@@ -977,7 +977,7 @@ static bool checkLocalDelaunayness(Tet *t)
 static int checkLocalDelaunayness(tetContainer &c, int thread, char *msg)
 {
   int nLoc = 0;
-  for(unsigned int i = 0; i < c.size(thread); i++) {
+  for(std::size_t i = 0; i < c.size(thread); i++) {
     if(!checkLocalDelaunayness(c(thread, i))) nLoc++;
   }
   if(nLoc != 0) Msg::Info("%s --> %d tets are not locally delaunay", msg, nLoc);
@@ -987,7 +987,7 @@ static int checkLocalDelaunayness(tetContainer &c, int thread, char *msg)
 
 static Tet *randomTet(int thread, tetContainer &allocator)
 {
-  unsigned int N = allocator.size(thread);
+  std::size_t N = allocator.size(thread);
   //  printf("coucou random TET %d %d\n",thread,N);
   while(1) {
     Tet *t = allocator(thread, rand() % N);
@@ -997,8 +997,8 @@ static Tet *randomTet(int thread, tetContainer &allocator)
 
 //#define _VERBOSE
 
-void delaunayTrgl(const unsigned int numThreads,
-                  const unsigned int NPTS_AT_ONCE, unsigned int Npts,
+void delaunayTrgl(const std::size_t numThreads,
+                  const std::size_t NPTS_AT_ONCE, std::size_t Npts,
                   std::vector<Vert *> assignTo[], tetContainer &allocator)
 {
 #if defined(_VERBOSE)
@@ -1012,9 +1012,9 @@ void delaunayTrgl(const unsigned int numThreads,
   std::vector<int> invalidCavities(numThreads);
   std::vector<int> cacheMisses(numThreads, 0);
 
-  unsigned int maxLocSizeK = 0;
-  for(unsigned int i = 0; i < numThreads * NPTS_AT_ONCE; i++) {
-    unsigned int s = assignTo[i].size();
+  std::size_t maxLocSizeK = 0;
+  for(std::size_t i = 0; i < numThreads * NPTS_AT_ONCE; i++) {
+    std::size_t s = assignTo[i].size();
     maxLocSizeK = std::max(maxLocSizeK, s);
   }
 
@@ -1030,18 +1030,18 @@ void delaunayTrgl(const unsigned int numThreads,
 
     double totSearch = 0;
     double totCavity = 0;
-    std::vector<unsigned int> _negatives;
+    std::vector<std::size_t> _negatives;
     std::vector<cavityContainer> cavity(NPTS_AT_ONCE);
     std::vector<connContainer> bnd(NPTS_AT_ONCE);
     std::vector<bool> ok(NPTS_AT_ONCE);
     connContainer faceToTet;
     std::vector<Tet *> Choice(NPTS_AT_ONCE);
-    for(unsigned int K = 0; K < NPTS_AT_ONCE; K++)
+    for(std::size_t K = 0; K < NPTS_AT_ONCE; K++)
       Choice[K] = randomTet(0, allocator);
 
     invalidCavities[myThread] = 0;
-    for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
-      for(unsigned int iP = 0; iP < assignTo[K + myThread * NPTS_AT_ONCE].size(); iP++) {
+    for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t iP = 0; iP < assignTo[K + myThread * NPTS_AT_ONCE].size(); iP++) {
 	if(numThreads != 1)
 	  assignTo[K + myThread * NPTS_AT_ONCE][iP]->_thread = myThread;
       }
@@ -1054,7 +1054,7 @@ void delaunayTrgl(const unsigned int numThreads,
 #endif
 
     // Main loop
-    for(unsigned int iPGlob = 0; iPGlob < maxLocSizeK; iPGlob++) {
+    for(std::size_t iPGlob = 0; iPGlob < maxLocSizeK; iPGlob++) {
 
 #if defined(_OPENMP)
 #pragma omp barrier
@@ -1062,7 +1062,7 @@ void delaunayTrgl(const unsigned int numThreads,
       std::vector<Tet *> t(NPTS_AT_ONCE);
 
       // FIND SEEDS
-      for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
 	vToAdd[K] = (iPGlob < assignTo[K + myThread * NPTS_AT_ONCE].size()) ?
 	  assignTo[K + myThread * NPTS_AT_ONCE][iPGlob] : NULL;
 
@@ -1080,13 +1080,13 @@ void delaunayTrgl(const unsigned int numThreads,
       }
 
       // BUILD CAVITIES
-      for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
         if(vToAdd[K]) {
           cavityContainer &cavityK = cavity[K];
           connContainer &bndK = bnd[K];
-          for(unsigned int i = 0; i < cavityK.size(); i++)
+          for(std::size_t i = 0; i < cavityK.size(); i++)
             cavityK[i]->unset(myThread, K);
-          for(unsigned int i = 0; i < bndK.size(); i++)
+          for(std::size_t i = 0; i < bndK.size(); i++)
             if(bndK[i].t) bndK[i].t->unset(myThread, K);
           cavityK.clear();
           bndK.clear();
@@ -1103,23 +1103,23 @@ void delaunayTrgl(const unsigned int numThreads,
 #if defined(_OPENMP)
 #pragma omp barrier
 #endif
-      for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
         if(!vToAdd[K])
           ok[K] = false;
         else
           ok[K] = canWeProcessCavity(cavity[K], myThread, K);
       }
 
-      for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
         if(ok[K]) {
           cavityContainer &cavityK = cavity[K];
           connContainer &bndK = bnd[K];
           faceToTet.clear();
-          const unsigned int cSize = cavityK.size();
-          const unsigned int bSize = bndK.size();
+          const std::size_t cSize = cavityK.size();
+          const std::size_t bSize = bndK.size();
           totCavity += cSize;
           Choice[K] = cavityK[0];
-          for(unsigned int i = 0; i < bSize; i++) {
+          for(std::size_t i = 0; i < bSize; i++) {
             // reuse memory slots of invalid elements
             Tet *t = (i < cSize) ? cavityK[i] : allocator.newTet(myThread);
             if(i < cSize && t->V[0]->_thread != myThread)
@@ -1147,7 +1147,7 @@ void delaunayTrgl(const unsigned int numThreads,
             computeAdjacencies(t, 2, faceToTet);
             computeAdjacencies(t, 3, faceToTet);
           }
-          for(unsigned int i = bSize; i < cSize; i++) {
+          for(std::size_t i = bSize; i < cSize; i++) {
             cavityK[i]->V[0] = NULL;
           }
         }
@@ -1166,10 +1166,10 @@ void delaunayTrgl(const unsigned int numThreads,
 #pragma omp barrier
 #endif
     // clear last cavity
-    for(unsigned int K = 0; K < NPTS_AT_ONCE; K++) {
-      for(unsigned int i = 0; i < cavity[K].size(); i++)
+    for(std::size_t K = 0; K < NPTS_AT_ONCE; K++) {
+      for(std::size_t i = 0; i < cavity[K].size(); i++)
         cavity[K][i]->unset(myThread, K);
-      for(unsigned int i = 0; i < bnd[K].size(); i++)
+      for(std::size_t i = 0; i < bnd[K].size(); i++)
         if(bnd[K][i].t) bnd[K][i].t->unset(myThread, K);
     }
 
@@ -1181,14 +1181,14 @@ void delaunayTrgl(const unsigned int numThreads,
   printf("average searches per point  %12.5E\n", totSearchGlob / Npts);
   printf("average size for del cavity %12.5E\n", totCavityGlob / Npts);
   printf("cache misses: ");
-  for(unsigned int i = 0; i < numThreads; i++) {
+  for(std::size_t i = 0; i < numThreads; i++) {
     printf("%4ud ", (int)cacheMisses[i]);
   }
   printf("\n");
 #endif
 
-  for(unsigned int myThread = 0; myThread < numThreads; myThread++)
-    for(unsigned int i = 0; i < allocator.size(myThread); i++)
+  for(std::size_t myThread = 0; myThread < numThreads; myThread++)
+    for(std::size_t i = 0; i < allocator.size(myThread); i++)
       allocator(myThread, i)->setAllDeleted();
 }
 
@@ -1250,7 +1250,7 @@ static void delaunayTriangulation(const int numThreads, const int nptsatonce,
 
   std::vector<std::vector<Vert *> > assignTo(nbBlocks);
 
-  for(unsigned int i = 1; i < indices.size(); i++) {
+  for(std::size_t i = 1; i < indices.size(); i++) {
     int start = indices[i - 1];
     int end = indices[i];
     int sizePerBlock = (nbBlocks * ((end - start) / nbBlocks)) / nbBlocks;
@@ -1275,10 +1275,10 @@ void delaunayTriangulation(const int numThreads, const int nptsatonce,
 {
   std::vector<MVertex *> _temp;
   std::vector<Vert *> _vertices;
-  unsigned int N = S.size();
+  std::size_t N = S.size();
   _temp.resize(N + 1 + 8);
   double maxx = 0, maxy = 0, maxz = 0;
-  for(unsigned int i = 0; i < N; i++) {
+  for(std::size_t i = 0; i < N; i++) {
     MVertex *mv = S[i];
     maxx = std::max(maxx, fabs(mv->x()));
     maxy = std::max(maxy, fabs(mv->y()));
@@ -1288,7 +1288,7 @@ void delaunayTriangulation(const int numThreads, const int nptsatonce,
 
   tetContainer allocator(numThreads, S.size() * 10);
 
-  for(unsigned int i = 0; i < N; i++) {
+  for(std::size_t i = 0; i < N; i++) {
     MVertex *mv = S[i];
     double dx = d * CTX::instance()->mesh.randFactor3d * (double)rand() / RAND_MAX;
     double dy = d * CTX::instance()->mesh.randFactor3d * (double)rand() / RAND_MAX;
@@ -1316,7 +1316,7 @@ void delaunayTriangulation(const int numThreads, const int nptsatonce,
   }
 
   for(int myThread = 0; myThread < numThreads; myThread++) {
-    for(unsigned int i = 0; i < allocator.size(myThread); i++) {
+    for(std::size_t i = 0; i < allocator.size(myThread); i++) {
       Tet *t = allocator(myThread, i);
       if(t->V[0]) {
         if(t->V[0]->getNum() && t->V[1]->getNum() && t->V[2]->getNum() &&
@@ -1336,5 +1336,5 @@ void delaunayTriangulation(const int numThreads, const int nptsatonce,
   }
 
   for(int i = 0; i < 8; i++) delete box[i];
-  for(unsigned int i = 0; i < _vertices.size(); i++) delete _vertices[i];
+  for(std::size_t i = 0; i < _vertices.size(); i++) delete _vertices[i];
 }
diff --git a/Mesh/filterElements.cpp b/Mesh/filterElements.cpp
index 8ec97329f68804b6a990a4540c6888a79c6a94ba..3179ff3f6a5ed63e029ed740806d1a73a24dabb3 100644
--- a/Mesh/filterElements.cpp
+++ b/Mesh/filterElements.cpp
@@ -189,9 +189,9 @@ void filterColumns(std::vector<MElement *> &elem,
         _elemColumns.begin();
       it != _elemColumns.end(); ++it) {
     const std::vector<MElement *> &c = it->second;
-    unsigned int MAX = c.size();
+    std::size_t MAX = c.size();
     //    printf("size of column %d\n",c.size());
-    for(unsigned int i = 0; i < c.size(); i++) {
+    for(std::size_t i = 0; i < c.size(); i++) {
       if(!std::binary_search(elem.begin(), elem.end(), c[i])) {
         MAX = i;
         break;
@@ -199,13 +199,13 @@ void filterColumns(std::vector<MElement *> &elem,
     }
     if(!MAX) MAX = 1;
     //    if (MAX != c.size())    printf("MAX = %d c = %d\n",MAX,c.size());
-    for(unsigned int i = 0; i < MAX; i++) {
+    for(std::size_t i = 0; i < MAX; i++) {
       if(orientationTest(c[i]->getVertex(0), c[i]->getVertex(1),
                          c[i]->getVertex(2)) < 0)
         c[i]->reverse();
       toKeep.push_back(c[i]);
     }
-    // for (unsigned int i=MAX;i<c.size();i++){
+    // for (std::size_t i=MAX;i<c.size();i++){
     // FIXME !!!
     //   delete c[i];
     // }
@@ -222,14 +222,14 @@ static void filterOverlappingElements(
   std::vector<MElement *> newEls;
   RTree<MElement *, double, 3, double> rtree;
 
-  for(unsigned int i = 0; i < lines.size(); i++) {
+  for(std::size_t i = 0; i < lines.size(); i++) {
     MElement *e = lines[i];
     double _min[3], _max[3];
     MElementBB(e, _min, _max);
     rtree.Insert(_min, _max, e);
   }
 
-  for(unsigned int i = 0; i < els.size(); i++) {
+  for(std::size_t i = 0; i < els.size(); i++) {
     MElement *e = els[i];
     double _min[3], _max[3];
     MElementBB(e, _min, _max);
@@ -265,7 +265,7 @@ void filterOverlappingElements(
   filterColumns(vvv, _elemColumns);
   blTris.clear();
   blQuads.clear();
-  for(unsigned int i = 0; i < vvv.size(); i++) {
+  for(std::size_t i = 0; i < vvv.size(); i++) {
     if(vvv[i]->getType() == TYPE_TRI)
       blTris.push_back((MTriangle *)vvv[i]);
     else if(vvv[i]->getType() == TYPE_QUA)
diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp
index f07e3495566026dbe39a5225ed2913f6aa1e166a..b1b66a937186569c250da1b00c45ce0604cb4716 100644
--- a/Mesh/meshGEdge.cpp
+++ b/Mesh/meshGEdge.cpp
@@ -37,7 +37,7 @@ static double smoothPrimitive(GEdge *ge, double alpha,
 
     // use a gauss-seidel iteration; iterate forward and then backward;
     // convergence is usually very fast
-    for(unsigned int i = 1; i < Points.size(); i++) {
+    for(std::size_t i = 1; i < Points.size(); i++) {
       double dh =
         (Points[i].xp / Points[i].lc - Points[i - 1].xp / Points[i - 1].lc);
       double dt = Points[i].t - Points[i - 1].t;
@@ -299,7 +299,7 @@ void copyMesh(GEdge *from, GEdge *to, int direction)
   to->correspondingVertices[vt0] = direction > 0 ? vs0 : vs1;
   to->correspondingVertices[vt1] = direction > 0 ? vs1 : vs0;
 
-  for(unsigned int i = 0; i < from->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < from->mesh_vertices.size(); i++) {
     int index = (direction < 0) ? (from->mesh_vertices.size() - 1 - i) : i;
     MVertex *v = from->mesh_vertices[index];
     double u;
@@ -311,7 +311,7 @@ void copyMesh(GEdge *from, GEdge *to, int direction)
     to->mesh_vertices.push_back(vv);
     to->correspondingVertices[vv] = v;
   }
-  for(unsigned int i = 0; i < to->mesh_vertices.size() + 1; i++) {
+  for(std::size_t i = 0; i < to->mesh_vertices.size() + 1; i++) {
     MVertex *v0 = (i == 0) ? to->getBeginVertex()->mesh_vertices[0] :
                              to->mesh_vertices[i - 1];
     MVertex *v1 = (i == to->mesh_vertices.size()) ?
@@ -341,7 +341,7 @@ static void printFandPrimitive(int tag, std::vector<IntPoint> &Points)
   FILE *f = Fopen(name, "w");
   if(!f) return;
   double l = 0;
-  for (unsigned int i = 0; i < Points.size(); i++){
+  for (std::size_t i = 0; i < Points.size(); i++){
     const IntPoint &P = Points[i];
     if(i) l += (P.t - Points[i-1].t) * P.xp;
     fprintf(f, "%g %g %g %g %g\n", P.t, P.xp/P.lc, P.p, P.lc, l);
@@ -377,7 +377,7 @@ static void filterPoints(GEdge *ge, int nMinimumPoints)
 
   MVertex *v0 = ge->getBeginVertex()->mesh_vertices[0];
   std::vector<std::pair<double, MVertex *> > lengths;
-  for(unsigned int i = 0; i < ge->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < ge->mesh_vertices.size(); i++) {
     MEdgeVertex *v = dynamic_cast<MEdgeVertex *>(ge->mesh_vertices[i]);
     if(!v) {
       Msg::Error("in 1D mesh filterPoints");
@@ -743,7 +743,7 @@ void meshGEdge::operator()(GEdge *ge)
     std::vector<MVertex *> vv;
     vv.insert(vv.end(), _addBegin.begin(), _addBegin.end());
     vv.insert(vv.end(), mesh_vertices.begin(), mesh_vertices.end());
-    for(unsigned int i = 0; i < _addEnd.size(); i++)
+    for(std::size_t i = 0; i < _addEnd.size(); i++)
       vv.push_back(_addEnd[_addEnd.size() - 1 - i]);
     //    vv.insert(vv.end(), _addEnd.rend(), _addEnd.rbegin());
     mesh_vertices = vv;
@@ -779,6 +779,6 @@ void orientMeshGEdge::operator()(GEdge *ge)
 {
   // apply user-specified mesh orientation constraints
   if(ge->meshAttributes.reverseMesh)
-    for(unsigned int k = 0; k < ge->getNumMeshElements(); k++)
+    for(std::size_t k = 0; k < ge->getNumMeshElements(); k++)
       ge->getMeshElement(k)->reverse();
 }
diff --git a/Mesh/meshGEdgeExtruded.cpp b/Mesh/meshGEdgeExtruded.cpp
index d5a5d65a7dc60f2d36b61bc018cc8c4e16561113..45226521d58092716a1ca1aa2b3f19eabe9a845e 100644
--- a/Mesh/meshGEdgeExtruded.cpp
+++ b/Mesh/meshGEdgeExtruded.cpp
@@ -37,7 +37,7 @@ static void copyMesh(GEdge *from, GEdge *to)
   double u_min = u_bounds.low();
   double u_max = u_bounds.high();
 
-  for(unsigned int i = 0; i < from->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < from->mesh_vertices.size(); i++) {
     int index = (direction < 0) ? (from->mesh_vertices.size() - 1 - i) : i;
     MVertex *v = from->mesh_vertices[index];
     double x = v->x(), y = v->y(), z = v->z();
@@ -83,7 +83,7 @@ int MeshExtrudedCurve(GEdge *ge)
   }
 
   // create elements
-  for(unsigned int i = 0; i < ge->mesh_vertices.size() + 1; i++) {
+  for(std::size_t i = 0; i < ge->mesh_vertices.size() + 1; i++) {
     MVertex *v0 = (i == 0) ?
       ge->getBeginVertex()->mesh_vertices[0] :
       ge->mesh_vertices[i - 1];
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index e1249ec80d8b9d18ab1f1b62751a53ce886ac878..5b4889b7a2d56e690cf04d75263e8254db1f8c1b 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -110,7 +110,7 @@ static void computeElementShapes(GFace *gf, double &worst, double &avg,
   best = 0.0;
   nT = 0;
   greaterThan = 0;
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     double q = qmTriangle::gamma(gf->triangles[i]);
     if(q > .9) greaterThan++;
     avg += q;
@@ -130,7 +130,7 @@ private:
   {
     std::vector<MQuadrangle *> qnew;
     std::map<MEdge, MVertex *, Less_Edge> eds;
-    for(unsigned int i = 0; i < _gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < _gf->triangles.size(); i++) {
       MVertex *v[3];
       SPoint2 m[3];
       for(int j = 0; j < 3; j++) {
@@ -184,7 +184,7 @@ private:
       delete _gf->triangles[i];
     }
     _gf->triangles.clear();
-    for(unsigned int i = 0; i < _gf->quadrangles.size(); i++) {
+    for(std::size_t i = 0; i < _gf->quadrangles.size(); i++) {
       MVertex *v[4];
       SPoint2 m[4];
       for(int j = 0; j < 4; j++) {
@@ -248,7 +248,7 @@ private:
     std::vector<GEdge *> const &edges = _gf->edges();
     std::vector<GEdge *>::const_iterator ite = edges.begin();
     while(ite != edges.end()) {
-      for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
         delete(*ite)->lines[i];
       }
       (*ite)->lines = _backup[*ite];
@@ -274,7 +274,7 @@ public:
       if(!(*ite)->isMeshDegenerated()) {
         std::vector<MLine *> temp;
         (*ite)->mesh_vertices.clear();
-        for(unsigned int i = 0; i < (*ite)->lines.size(); i += 2) {
+        for(std::size_t i = 0; i < (*ite)->lines.size(); i += 2) {
           if(i + 1 >= (*ite)->lines.size()) {
             Msg::Error("1D mesh cannot be divided by 2");
             break;
@@ -415,7 +415,7 @@ static void copyMesh(GFace *source, GFace *target)
   // now transform
   std::vector<double> &tfo = target->affineTransform;
 
-  for(unsigned int i = 0; i < source->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < source->mesh_vertices.size(); i++) {
     MVertex *vs = source->mesh_vertices[i];
     SPoint2 XXX;
 
@@ -736,7 +736,7 @@ static bool recoverEdge(BDS_Mesh *m, GEdge *ge,
 
   bool _fatallyFailed;
 
-  for(unsigned int i = 0; i < ge->lines.size(); i++) {
+  for(std::size_t i = 0; i < ge->lines.size(); i++) {
     MVertex *vstart = ge->lines[i]->getVertex(0);
     MVertex *vend = ge->lines[i]->getVertex(1);
     std::map<MVertex *, BDS_Point *>::iterator itpstart =
@@ -833,13 +833,13 @@ static void modifyInitialMeshForBoundaryLayers(
   std::vector<MLine *> _lines;
 
   while(ite != edges.end()) {
-    for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
       _lines.push_back((*ite)->lines[i]);
       MVertex *v1 = (*ite)->lines[i]->getVertex(0);
       MVertex *v2 = (*ite)->lines[i]->getVertex(1);
       MEdge dv(v1, v2);
       addOrRemove(v1, v2, bedges, removed);
-      for(unsigned int SIDE = 0; SIDE < _columns->_normals.count(dv); SIDE++) {
+      for(std::size_t SIDE = 0; SIDE < _columns->_normals.count(dv); SIDE++) {
         std::vector<MElement *> myCol;
         edgeColumn ec = _columns->getColumns(v1, v2, SIDE);
         const BoundaryLayerData &c1 = ec._c1;
@@ -885,7 +885,7 @@ static void modifyInitialMeshForBoundaryLayers(
                     v->x(), v->y(), v->z(), N + 1, N + 1, N + 1);
         }
         // int M = std::max(c1._column.size(),c2._column.size());
-        for(unsigned int l = 0; l < myCol.size(); l++)
+        for(std::size_t l = 0; l < myCol.size(); l++)
           _columns->_toFirst[myCol[l]] = myCol[0];
         _columns->_elemColumns[myCol[0]] = myCol;
       }
@@ -938,7 +938,7 @@ static void modifyInitialMeshForBoundaryLayers(
                     v21->y(), v21->z(), l + 1, l + 1, l + 1);
         }
       }
-      for(unsigned int l = 0; l < myCol.size(); l++)
+      for(std::size_t l = 0; l < myCol.size(); l++)
         _columns->_toFirst[myCol[l]] = myCol[0];
       _columns->_elemColumns[myCol[0]] = myCol;
     }
@@ -952,7 +952,7 @@ static void modifyInitialMeshForBoundaryLayers(
   filterOverlappingElements(_lines, blTris, blQuads, _columns->_elemColumns,
                             _columns->_toFirst);
 
-  for(unsigned int i = 0; i < blQuads.size(); i++) {
+  for(std::size_t i = 0; i < blQuads.size(); i++) {
     addOrRemove(blQuads[i]->getVertex(0), blQuads[i]->getVertex(1), bedges,
                 removed);
     addOrRemove(blQuads[i]->getVertex(1), blQuads[i]->getVertex(2), bedges,
@@ -965,7 +965,7 @@ static void modifyInitialMeshForBoundaryLayers(
       if(blQuads[i]->getVertex(j)->onWhat() == gf)
         verts.insert(blQuads[i]->getVertex(j));
   }
-  for(unsigned int i = 0; i < blTris.size(); i++) {
+  for(std::size_t i = 0; i < blTris.size(); i++) {
     addOrRemove(blTris[i]->getVertex(0), blTris[i]->getVertex(1), bedges,
                 removed);
     addOrRemove(blTris[i]->getVertex(1), blTris[i]->getVertex(2), bedges,
@@ -1040,7 +1040,7 @@ static bool improved_translate(GFace *gf, MVertex *vertex, SVector3 &v1,
 static void directions_storage(GFace *gf)
 {
   std::set<MVertex *> vertices;
-  for(unsigned int i = 0; i < gf->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gf->getNumMeshElements(); i++) {
     MElement *element = gf->getMeshElement(i);
     for(std::size_t j = 0; j < element->getNumVertices(); j++) {
       MVertex *vertex = element->getVertex(j);
@@ -1173,7 +1173,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, bool repairSelfIntersecting1dMesh,
       return false;
     }
     if(!(*ite)->isMeshDegenerated()) {
-      for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
         MVertex *v1 = (*ite)->lines[i]->getVertex(0);
         MVertex *v2 = (*ite)->lines[i]->getVertex(1);
 
@@ -1296,7 +1296,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, bool repairSelfIntersecting1dMesh,
     SVector3 dd(bbox.max(), bbox.min());
     double LC2D = norm(dd);
     DocRecord doc(points.size() + 4);
-    for(unsigned int i = 0; i < points.size(); i++) {
+    for(std::size_t i = 0; i < points.size(); i++) {
       double XX = CTX::instance()->mesh.randFactor * LC2D * (double)rand() /
                   (double)RAND_MAX;
       double YY = CTX::instance()->mesh.randFactor * LC2D * (double)rand() /
@@ -1362,7 +1362,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, bool repairSelfIntersecting1dMesh,
     v.insert(v.end(), all_vertices.begin(), all_vertices.end());
 
     std::map<MVertex *, SPoint3> pos;
-    for(unsigned int i = 0; i < v.size(); i++) {
+    for(std::size_t i = 0; i < v.size(); i++) {
       MVertex *v0 = v[i];
       BDS_Point *p0 = recoverMapInv[v0];
       pos[v0] = SPoint3(v0->x(), v0->y(), v0->z());
@@ -1370,7 +1370,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, bool repairSelfIntersecting1dMesh,
     }
     delaunayMeshIn2D(v, result, 0);
 
-    for(unsigned int i = 0; i < v.size() - 4; i++) {
+    for(std::size_t i = 0; i < v.size() - 4; i++) {
       MVertex *v0 = v[i];
       SPoint3 pp = pos[v0];
       v0->setXYZ(pp.x(), pp.y(), pp.z());
@@ -1386,7 +1386,7 @@ bool meshGenerator(GFace *gf, int RECUR_ITER, bool repairSelfIntersecting1dMesh,
       pp->g = g;
     }
     // add the triangles
-    for(unsigned int i = 0; i < result.size(); i++) {
+    for(std::size_t i = 0; i < result.size(); i++) {
       MVertex *v0 = result[i]->getVertex(0);
       MVertex *v1 = result[i]->getVertex(1);
       MVertex *v2 = result[i]->getVertex(2);
@@ -1792,7 +1792,7 @@ static inline double dist2(const SPoint2 &p1, const SPoint2 &p2)
 static void printMesh1d(int iEdge, int seam, std::vector<SPoint2> &m)
 {
   printf("Mesh1D for edge %d seam %d\n", iEdge, seam);
-  for(unsigned int i = 0; i < m.size(); i++){
+  for(std::size_t i = 0; i < m.size(); i++){
     printf("%12.5E %12.5E\n", m[i].x(), m[i].y());
   }
 }
@@ -1834,7 +1834,7 @@ static bool buildConsecutiveListOfVertices(
 
     mesh1d.push_back(ges.ge->reparamOnFace(gf, range.low(), 1));
     if(seam) mesh1d_seam.push_back(ges.ge->reparamOnFace(gf, range.low(), -1));
-    for(unsigned int i = 0; i < ges.ge->mesh_vertices.size(); i++) {
+    for(std::size_t i = 0; i < ges.ge->mesh_vertices.size(); i++) {
       MVertex *here = ges.ge->mesh_vertices[i];
       double u;
       here->getParameter(0, u);
@@ -1964,7 +1964,7 @@ static bool buildConsecutiveListOfVertices(
     if(found._sign == 1) {
       if(found.ge->getBeginVertex()) {
         edgeLoop.push_back(found.ge->getBeginVertex()->mesh_vertices[0]);
-        for(unsigned int i = 0; i < found.ge->mesh_vertices.size(); i++)
+        for(std::size_t i = 0; i < found.ge->mesh_vertices.size(); i++)
           edgeLoop.push_back(found.ge->mesh_vertices[i]);
       }
     }
@@ -1981,7 +1981,7 @@ static bool buildConsecutiveListOfVertices(
              (int)coords.size());
 
     std::vector<BDS_Point *> edgeLoop_BDS;
-    for(unsigned int i = 0; i < edgeLoop.size(); i++) {
+    for(std::size_t i = 0; i < edgeLoop.size(); i++) {
       MVertex *here = edgeLoop[i];
       GEntity *ge = here->onWhat();
 
@@ -2189,8 +2189,8 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
       std::vector<GEdge *>::const_iterator ite = emb_edges.begin();
       std::set<MVertex *> vs;
       while(ite != emb_edges.end()) {
-        for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
-          for(unsigned int j = 0; j < 2; j++) {
+        for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
+          for(std::size_t j = 0; j < 2; j++) {
             MVertex *v = (*ite)->lines[i]->getVertex(j);
             if(invertedRecoverMap.find(v) == invertedRecoverMap.end() &&
                vs.find(v) == vs.end()) {
@@ -2232,8 +2232,8 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
     std::map<MVertex *, BDS_Point *> facile;
     while(ite != emb_edges.end()) {
       m->add_geom(-(*ite)->tag(), 1);
-      for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
-        for(unsigned int j = 0; j < 2; j++) {
+      for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
+        for(std::size_t j = 0; j < 2; j++) {
           MVertex *v = (*ite)->lines[i]->getVertex(j);
           BDS_Point *pp = 0;
           const std::map<MVertex *, std::set<BDS_Point *> >::iterator it =
@@ -2309,7 +2309,7 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
           }
         }
       }
-      for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+      for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
         BDS_Point *p0 = facile[(*ite)->lines[i]->getVertex(0)];
         BDS_Point *p1 = facile[(*ite)->lines[i]->getVertex(1)];
         edgesEmbedded.push_back(p0->iD);
@@ -2318,9 +2318,9 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
       ++ite;
     }
 
-    for(unsigned int i = 0; i < edgeLoops_BDS.size(); i++) {
+    for(std::size_t i = 0; i < edgeLoops_BDS.size(); i++) {
       std::vector<BDS_Point *> &edgeLoop_BDS = edgeLoops_BDS[i];
-      for(unsigned int j = 0; j < edgeLoop_BDS.size(); j++) {
+      for(std::size_t j = 0; j < edgeLoop_BDS.size(); j++) {
         BDS_Point *pp = edgeLoop_BDS[j];
         double XX = CTX::instance()->mesh.randFactor * LC2D * (double)rand() /
                     (double)RAND_MAX;
@@ -2406,7 +2406,7 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
 
   bool _fatallyFailed;
 
-  for(unsigned int i = 0; i < edgesEmbedded.size() / 2; i++) {
+  for(std::size_t i = 0; i < edgesEmbedded.size() / 2; i++) {
     BDS_Edge *e = m->recover_edge(edgesEmbedded[2 * i],
                                   edgesEmbedded[2 * i + 1], _fatallyFailed);
     if(!e) {
@@ -2423,9 +2423,9 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
   std::set<EdgeToRecover> edgesNotRecovered;
 
   bool doItAgain = gf->meshStatistics.refineAllEdges;
-  for(unsigned int i = 0; i < edgeLoops_BDS.size(); i++) {
+  for(std::size_t i = 0; i < edgeLoops_BDS.size(); i++) {
     std::vector<BDS_Point *> &edgeLoop_BDS = edgeLoops_BDS[i];
-    for(unsigned int j = 0; j < edgeLoop_BDS.size(); j++) {
+    for(std::size_t j = 0; j < edgeLoop_BDS.size(); j++) {
       int num1 = edgeLoop_BDS[j]->iD;
       int num2 = edgeLoop_BDS[(j + 1) % edgeLoop_BDS.size()]->iD;
       BDS_Edge *e = m->find_edge(num1, num2);
@@ -2491,7 +2491,7 @@ static bool meshGeneratorPeriodic(GFace *gf, int RECUR_ITER,
         std::vector<GEdge *> eds = gf->edges();
         edgesNotRecovered.clear();
         for(size_t i = 0; i < eds.size(); i++) {
-          const unsigned int NN = eds[i]->lines.size() ? 1 : 0;
+          const std::size_t NN = eds[i]->lines.size() ? 1 : 0;
           for(size_t j = 0; j < NN; j++) {
             MVertex *v1 = eds[i]->lines[j]->getVertex(0);
             MVertex *v2 = eds[i]->lines[j]->getVertex(1);
@@ -3019,7 +3019,7 @@ static void getGFaceOrientation(GFace *gf, BoundaryLayerColumns *blc,
                                 bool existBL, bool fromVert, int &orientNonBL,
                                 int &orientBL)
 {
-  for(unsigned int iEl = 0; iEl < gf->getNumMeshElements(); iEl++) {
+  for(std::size_t iEl = 0; iEl < gf->getNumMeshElements(); iEl++) {
     MElement *e = gf->getMeshElement(iEl);
     const bool isBLEl =
       existBL && (blc->_toFirst.find(e) != blc->_toFirst.end());
@@ -3087,7 +3087,7 @@ void orientMeshGFace::operator()(GFace *gf)
     // Reverse BL and non-BL elements if needed
     if(existBL) { // If there is a BL, test BL/non-BL elements
       if((orientNonBL == -1) || (orientBL == -1)) {
-        for(unsigned int iEl = 0; iEl < gf->getNumMeshElements(); iEl++) {
+        for(std::size_t iEl = 0; iEl < gf->getNumMeshElements(); iEl++) {
           MElement *e = gf->getMeshElement(iEl);
           // If el. outside of BL...
           if(blc->_toFirst.find(e) == blc->_toFirst.end()) {
@@ -3102,7 +3102,7 @@ void orientMeshGFace::operator()(GFace *gf)
     }
     else { // If no BL, reverse all elements if needed
       if(orientNonBL == -1) {
-        for(unsigned int iEl = 0; iEl < gf->getNumMeshElements(); iEl++)
+        for(std::size_t iEl = 0; iEl < gf->getNumMeshElements(); iEl++)
           gf->getMeshElement(iEl)->reverse();
       }
     }
@@ -3110,7 +3110,7 @@ void orientMeshGFace::operator()(GFace *gf)
 
   // Apply user-specified mesh orientation constraints
   if(gf->meshAttributes.reverseMesh) {
-    for(unsigned int k = 0; k < gf->getNumMeshElements(); k++)
+    for(std::size_t k = 0; k < gf->getNumMeshElements(); k++)
       gf->getMeshElement(k)->reverse();
   }
 }
diff --git a/Mesh/meshGFaceBDS.cpp b/Mesh/meshGFaceBDS.cpp
index b92f5953cc634bb1eb9cdf56b26edf6ded5abab5..608b4c8b44bc8cb5a19c04b3168df68bc6b11fab 100644
--- a/Mesh/meshGFaceBDS.cpp
+++ b/Mesh/meshGFaceBDS.cpp
@@ -359,7 +359,7 @@ static void splitEdgePass(GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split,
 
   bool faceDiscrete = gf->geomType() == GEntity::DiscreteSurface;
 
-  for(unsigned int i = 0; i < edges.size(); ++i) {
+  for(std::size_t i = 0; i < edges.size(); ++i) {
     BDS_Edge *e = edges[i].second;
     BDS_Point *mid = NULL;
     if(!e->deleted) {
@@ -398,7 +398,7 @@ static void splitEdgePass(GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split,
     mids[i] = mid;
   }
 
-  for(unsigned int i = 0; i < edges.size(); ++i) {
+  for(std::size_t i = 0; i < edges.size(); ++i) {
     BDS_Edge *e = edges[i].second;
     if(!e->deleted) {
       BDS_Point *mid = mids[i];
@@ -488,7 +488,7 @@ void collapseEdgePass(GFace *gf, BDS_Mesh &m, double MINE_, int MAXNP,
 
   std::sort(edges.begin(), edges.end(), edges_sort);
 
-  for(unsigned int i = 0; i < edges.size(); i++) {
+  for(std::size_t i = 0; i < edges.size(); i++) {
     BDS_Edge *e = edges[i].second;
     if(!e->deleted) {
       double lone1 = 0.;
@@ -1084,7 +1084,7 @@ BDS_Mesh *gmsh2BDS(std::list<GFace *> &l)
     GFace *gf = *it;
     m->add_geom(gf->tag(), 2);
     BDS_GeomEntity *g2 = m->get_geom(gf->tag(), 2);
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *e = gf->triangles[i];
       BDS_Point *p[3];
       for(int j = 0; j < 3; j++) {
diff --git a/Mesh/meshGFaceBamg.cpp b/Mesh/meshGFaceBamg.cpp
index 7c20bf1c274d7a028a8a1e361eee8df30faa7851..94e1dc6013ae47c9e505497454d45071cfcf3c2b 100644
--- a/Mesh/meshGFaceBamg.cpp
+++ b/Mesh/meshGFaceBamg.cpp
@@ -72,7 +72,7 @@ void meshGFaceBamg(GFace *gf)
   std::set<MVertex *> bcVertex;
   for(std::vector<GEdge *>::const_iterator it = edges.begin();
       it != edges.end(); it++) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       bcVertex.insert((*it)->lines[i]->getVertex(0));
       bcVertex.insert((*it)->lines[i]->getVertex(1));
     }
@@ -81,8 +81,8 @@ void meshGFaceBamg(GFace *gf)
   // fill mesh data fo bamg (bamgVertices, bamgTriangles, bamgBoundary)
   std::set<MVertex *> all;
   std::map<int, MVertex *> recover;
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
-    for(unsigned int j = 0; j < 3; j++)
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t j = 0; j < 3; j++)
       all.insert(gf->triangles[i]->getVertex(j));
   }
 
@@ -118,7 +118,7 @@ void meshGFaceBamg(GFace *gf)
   std::vector<MElement *> myParamElems;
   std::vector<MVertex *> newVert;
   Triangle2 *bamgTriangles = new Triangle2[gf->triangles.size()];
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     int nodes[3] = {gf->triangles[i]->getVertex(0)->getIndex(),
                     gf->triangles[i]->getVertex(1)->getIndex(),
                     gf->triangles[i]->getVertex(2)->getIndex()};
@@ -148,7 +148,7 @@ void meshGFaceBamg(GFace *gf)
   int count = 0;
   for(std::vector<GEdge *>::const_iterator it = edges.begin();
       it != edges.end(); ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); ++i) {
       int nodes[2] = {(*it)->lines[i]->getVertex(0)->getIndex(),
                       (*it)->lines[i]->getVertex(1)->getIndex()};
       bamgBoundary[count].init(bamgVertices, nodes, (*it)->tag());
@@ -218,7 +218,7 @@ void meshGFaceBamg(GFace *gf)
     }
   }
 
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     delete gf->triangles[i];
   }
   gf->triangles.clear();
diff --git a/Mesh/meshGFaceExtruded.cpp b/Mesh/meshGFaceExtruded.cpp
index 90aa56fcb36fc1382bbf683704a45b236714eedb..0ad97dd514d666bdee7e38bb553bc4adf8f4781e 100644
--- a/Mesh/meshGFaceExtruded.cpp
+++ b/Mesh/meshGFaceExtruded.cpp
@@ -90,7 +90,7 @@ extrudeMesh(GEdge *from, GFace *to, MVertexRTree &pos,
 
   // create vertices (if the edges are constrained, they already exist)
   if(!constrainedEdges) {
-    for(unsigned int i = 0; i < from->mesh_vertices.size(); i++) {
+    for(std::size_t i = 0; i < from->mesh_vertices.size(); i++) {
       std::vector<MVertex *> extruded_vertices;
       MVertex *v = from->mesh_vertices[i];
       MEdgeVertex *mv = (MEdgeVertex *)v;
@@ -141,7 +141,7 @@ extrudeMesh(GEdge *from, GFace *to, MVertexRTree &pos,
   // create elements (note that it would be faster to access the *interior*
   // nodes by direct indexing, but it's just simpler to query everything by
   // position)
-  for(unsigned int i = 0; i < from->lines.size(); i++) {
+  for(std::size_t i = 0; i < from->lines.size(); i++) {
     MVertex *v0 = from->lines[i]->getVertex(0);
     MVertex *v1 = from->lines[i]->getVertex(1);
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
@@ -183,7 +183,7 @@ static void copyMesh(GFace *from, GFace *to, MVertexRTree &pos)
   mesh_vertices.insert(mesh_vertices.end(), embedded.begin(), embedded.end());
 
   // create extruded vertices
-  for(unsigned int i = 0; i < mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < mesh_vertices.size(); i++) {
     MVertex *v = mesh_vertices[i];
     double x = v->x(), y = v->y(), z = v->z();
     ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
@@ -235,7 +235,7 @@ static void copyMesh(GFace *from, GFace *to, MVertexRTree &pos)
 #endif
 
   // create triangle elements
-  for(unsigned int i = 0; i < from->triangles.size(); i++) {
+  for(std::size_t i = 0; i < from->triangles.size(); i++) {
     std::vector<MVertex *> verts;
     for(int j = 0; j < 3; j++) {
       MVertex *v = from->triangles[i]->getVertex(j);
@@ -267,7 +267,7 @@ static void copyMesh(GFace *from, GFace *to, MVertexRTree &pos)
 #endif
 
   // create quadrangle elements if NOT QuadToTri and NOT toroidal
-  for(unsigned int i = 0; i < from->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < from->quadrangles.size(); i++) {
     std::vector<MVertex *> verts;
     for(int j = 0; j < 4; j++) {
       MVertex *v = from->quadrangles[i]->getVertex(j);
diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp
index 126d4eb5def699d76f41ca7695d00e487f97c72a..871578b722204b88af09f23cad70002016bc7373 100644
--- a/Mesh/meshGFaceOptimize.cpp
+++ b/Mesh/meshGFaceOptimize.cpp
@@ -111,7 +111,7 @@ bool buildMeshGenerationDataStructures(
 {
   std::map<MVertex *, double> vSizesMap;
 
-  for(unsigned int i = 0; i < gf->triangles.size(); i++)
+  for(std::size_t i = 0; i < gf->triangles.size(); i++)
     setLcsInit(gf->triangles[i], vSizesMap);
 
   std::map<MVertex *, double>::iterator itfind = vSizesMap.find(NULL);
@@ -120,7 +120,7 @@ bool buildMeshGenerationDataStructures(
     return false;
   }
 
-  for(unsigned int i = 0; i < gf->triangles.size(); i++)
+  for(std::size_t i = 0; i < gf->triangles.size(); i++)
     setLcs(gf->triangles[i], vSizesMap, data);
 
   // take care of embedded vertices
@@ -145,7 +145,7 @@ bool buildMeshGenerationDataStructures(
     std::vector<GEdge *>::const_iterator ite = embedded_edges.begin();
     while(ite != embedded_edges.end()) {
       if(!(*ite)->isMeshDegenerated()) {
-        for(unsigned int i = 0; i < (*ite)->lines.size(); i++)
+        for(std::size_t i = 0; i < (*ite)->lines.size(); i++)
           data.internalEdges.insert(MEdge((*ite)->lines[i]->getVertex(0),
                                           (*ite)->lines[i]->getVertex(1)));
       }
@@ -159,7 +159,7 @@ bool buildMeshGenerationDataStructures(
     std::vector<GEdge *>::const_iterator ite = _edges.begin();
     while(ite != _edges.end()) {
       if(!(*ite)->isMeshDegenerated()) {
-        for(unsigned int i = 0; i < (*ite)->lines.size(); i++) {
+        for(std::size_t i = 0; i < (*ite)->lines.size(); i++) {
           double d = distance((*ite)->lines[i]->getVertex(0),
                               (*ite)->lines[i]->getVertex(1));
           double d0 = vSizesMap[(*ite)->lines[i]->getVertex(0)];
@@ -183,7 +183,7 @@ bool buildMeshGenerationDataStructures(
                    it->first->z()) : it->second;
     data.addVertex (it->first, param[0], param[1], it->second, lcBGM);
   }
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     double lc = 0.3333333333 *
                 (data.vSizes[data.getIndex(gf->triangles[i]->getVertex(0))] +
                  data.vSizes[data.getIndex(gf->triangles[i]->getVertex(1))] +
@@ -206,7 +206,7 @@ void computeEquivalences(GFace *gf, bidimMeshData &data)
 {
   if(data.equivalence) {
     std::vector<MTriangle *> newT;
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       MVertex *v[3];
       for(int j = 0; j < 3; j++) {
@@ -258,7 +258,7 @@ bool computeEquivalentTriangles(GFace *gf,
   std::vector<MTriangle *> WTF;
   if(!equivalence) return false;
   std::set<equivalentTriangle> eqTs;
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     equivalentTriangle et(gf->triangles[i], equivalence);
     std::set<equivalentTriangle>::iterator iteq = eqTs.find(et);
     if(iteq == eqTs.end())
@@ -271,7 +271,7 @@ bool computeEquivalentTriangles(GFace *gf,
 
   if(WTF.size()) {
     Msg::Info("%d triangles are equivalent", WTF.size());
-    for(unsigned int i = 0; i < WTF.size(); i++) {
+    for(std::size_t i = 0; i < WTF.size(); i++) {
     }
     return true;
   }
@@ -325,7 +325,7 @@ void transferDataStructure(GFace *gf,
       normal3points(v0->x(), v0->y(), v0->z(), v1->x(), v1->y(), v1->z(),
                     v2->x(), v2->y(), v2->z(), n1);
     }
-    for(unsigned int j = 1; j < gf->triangles.size(); j++) {
+    for(std::size_t j = 1; j < gf->triangles.size(); j++) {
       t = gf->triangles[j];
       v0 = t->getVertex(0);
       v1 = t->getVertex(1);
@@ -360,7 +360,7 @@ void buildVertexToTriangle(std::vector<MTriangle *> &eles, v2t_cont &adj)
 template <class T>
 void buildEdgeToElement(std::vector<T *> &elements, e2t_cont &adj)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     T *t = elements[i];
     for(int j = 0; j < t->getNumEdges(); j++) {
       MEdge e = t->getEdge(j);
@@ -501,7 +501,7 @@ static int _removeTwoQuadsNodes(GFace *gf)
   }
   std::vector<MQuadrangle *> quadrangles2;
   quadrangles2.reserve(gf->quadrangles.size() - touched.size());
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     if(touched.find(gf->quadrangles[i]) == touched.end()) {
       quadrangles2.push_back(gf->quadrangles[i]);
     }
@@ -513,7 +513,7 @@ static int _removeTwoQuadsNodes(GFace *gf)
 
   std::vector<MVertex *> mesh_vertices2;
   mesh_vertices2.reserve(gf->mesh_vertices.size() - vtouched.size());
-  for(unsigned int i = 0; i < gf->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < gf->mesh_vertices.size(); i++) {
     if(vtouched.find(gf->mesh_vertices[i]) == vtouched.end()) {
       mesh_vertices2.push_back(gf->mesh_vertices[i]);
     }
@@ -562,7 +562,7 @@ static bool _tryToCollapseThatVertex2(GFace *gf, std::vector<MElement *> &e1,
   double worst_quality_new = 1.0;
 
   int count = 0;
-  for(unsigned int j = 0; j < e.size(); ++j) {
+  for(std::size_t j = 0; j < e.size(); ++j) {
     if(e[j] != q) {
       count++;
       worst_quality_old = std::min(worst_quality_old, e[j]->etaShapeMeasure());
@@ -586,7 +586,7 @@ static bool _tryToCollapseThatVertex2(GFace *gf, std::vector<MElement *> &e1,
     v1->x() = pp.x();
     v1->y() = pp.y();
     v1->z() = pp.z();
-    for(unsigned int j = 0; j < e.size(); ++j) {
+    for(std::size_t j = 0; j < e.size(); ++j) {
       if(e[j] != q) {
         for(int k = 0; k < 4; k++) {
           if(e[j]->getVertex(k) == v2) {
@@ -629,7 +629,7 @@ static bool _tryToCollapseThatVertex(GFace *gf, std::vector<MElement *> &e1,
   double worst_quality_old = 1.0;
   double worst_quality_new = 1.0;
   int count = 0;
-  for(unsigned int j = 0; j < e.size(); ++j) {
+  for(std::size_t j = 0; j < e.size(); ++j) {
     if(e[j] != q) {
       count++;
       worst_quality_old = std::min(worst_quality_old, e[j]->etaShapeMeasure());
@@ -663,7 +663,7 @@ static bool _tryToCollapseThatVertex(GFace *gf, std::vector<MElement *> &e1,
     v1->z() = pp.z();
     v1->setParameter(0, pp.u());
     v1->setParameter(1, pp.v());
-    for(unsigned int j = 0; j < e.size(); ++j) {
+    for(std::size_t j = 0; j < e.size(); ++j) {
       if(e[j] != q) {
         for(int k = 0; k < 4; k++) {
           if(e[j]->getVertex(k) == v2) {
@@ -691,7 +691,7 @@ static bool _isItAGoodIdeaToMoveThatVertex(GFace *gf,
   SPoint3 pbefore(v1->x(), v1->y(), v1->z());
 
   double minq = 1.0;
-  for(unsigned int j = 0; j < e1.size(); ++j) {
+  for(std::size_t j = 0; j < e1.size(); ++j) {
     surface_old += surfaceFaceUV(e1[j], gf, false);
     minq = std::min(e1[j]->etaShapeMeasure(), minq);
   }
@@ -701,7 +701,7 @@ static bool _isItAGoodIdeaToMoveThatVertex(GFace *gf,
   v1->setXYZ(pafter.x(), pafter.y(), pafter.z());
 
   double minq_new = 1.0;
-  for(unsigned int j = 0; j < e1.size(); ++j) {
+  for(std::size_t j = 0; j < e1.size(); ++j) {
     surface_new += surfaceFaceUV(e1[j], gf, false);
     minq_new = std::min(e1[j]->etaShapeMeasure(), minq_new);
   }
@@ -750,13 +750,13 @@ static int _removeDiamonds(GFace *const gf)
   std::vector<MQuadrangle *> quadrangles2;
   quadrangles2.reserve(gf->quadrangles.size());
 
-  for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->triangles.size(); i++) {
     touched.insert(gf->triangles[i]->getVertex(0));
     touched.insert(gf->triangles[i]->getVertex(1));
     touched.insert(gf->triangles[i]->getVertex(2));
   }
 
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     MQuadrangle *const q = gf->quadrangles[i];
 
     MVertex *const v1 = q->getVertex(0);
@@ -808,7 +808,7 @@ static int _removeDiamonds(GFace *const gf)
   std::vector<MVertex *> mesh_vertices2;
   mesh_vertices2.reserve(gf->mesh_vertices.size());
 
-  for(unsigned int i = 0; i < gf->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < gf->mesh_vertices.size(); i++) {
     if(!std::binary_search(deleted.begin(), deleted.end(),
                            gf->mesh_vertices[i])) {
       mesh_vertices2.push_back(gf->mesh_vertices[i]);
@@ -854,7 +854,7 @@ static void _relocate(GFace *gf, MVertex *ver,
 
   // compute the vertices connected to that one
   std::map<MVertex *, SPoint2, MVertexLessThanNum> pts;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     for(int j = 0; j < lt[i]->getNumEdges(); j++) {
       MEdge e = lt[i]->getEdge(j);
       SPoint2 param0, param1;
@@ -1248,7 +1248,7 @@ static void _recombineIntoQuads(GFace *gf, bool blossom, bool cubicGraph = 1)
       Msg::Debug("Perfect Match Starts %d edges %d nodes", ecount, ncount);
       std::map<MElement *, int> t2n;
       std::map<int, MElement *> n2t;
-      for(unsigned int i = 0; i < gf->triangles.size(); ++i) {
+      for(std::size_t i = 0; i < gf->triangles.size(); ++i) {
         t2n[gf->triangles[i]] = i;
         n2t[i] = gf->triangles[i];
       }
@@ -1393,7 +1393,7 @@ static double printStats(GFace *gf, const char *message)
   int nbInv = 0;
   double Qav = 0;
   double Qmin = 1;
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     double Q = gf->quadrangles[i]->etaShapeMeasure();
     if(Q <= 0.0) nbInv++;
     if(Q <= 0.1) nbBad++;
@@ -1416,7 +1416,7 @@ static bool _isModelOkForTopologicalOpti(GModel *m)
 {
   for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++){
     GFace *gf = *it;
-    for(unsigned int j = 0; j < gf->getNumMeshElements(); j++){
+    for(std::size_t j = 0; j < gf->getNumMeshElements(); j++){
       MElement *e = gf->getMeshElement(j);
       for(std::size_t k = 0; k < e->getNumVertices(); k++){
         GEntity *ge = e->getVertex(k)->onWhat();
@@ -1494,7 +1494,7 @@ void quadsToTriangles(GFace *gf, double minqual)
 {
   std::vector<MQuadrangle *> qds;
   std::map<MElement *, std::pair<MElement *, MElement *> > change;
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     MQuadrangle *q = gf->quadrangles[i];
     if(q->etaShapeMeasure() < minqual + 1e-12) {
       MTriangle *t11 =
@@ -1554,7 +1554,7 @@ void quadsToTriangles(GFace *gf, double minqual)
     std::vector<MElement *> &newColumn = newElemColumns[firstEl];
     std::vector<MElement *> &oldColumn = it->second;
 
-    for(unsigned int i = 0; i < oldColumn.size(); i++) {
+    for(std::size_t i = 0; i < oldColumn.size(); i++) {
       MElement *oldEl = oldColumn[i];
       it2 = change.find(oldEl);
       if(it2 == change.end()) {
diff --git a/Mesh/meshGFaceTransfinite.cpp b/Mesh/meshGFaceTransfinite.cpp
index b37ca105ac610c5abdb8187394ca70f2e37e239e..a5c462ec21b9283d0ac941d792c19a0f5c605e18 100644
--- a/Mesh/meshGFaceTransfinite.cpp
+++ b/Mesh/meshGFaceTransfinite.cpp
@@ -41,7 +41,7 @@ void findTransfiniteCorners(GFace *gf, std::vector<MVertex *> &corners)
 {
   if(gf->meshAttributes.corners.size()) {
     // corners have been specified explicitly
-    for(unsigned int i = 0; i < gf->meshAttributes.corners.size(); i++)
+    for(std::size_t i = 0; i < gf->meshAttributes.corners.size(); i++)
       corners.push_back(gf->meshAttributes.corners[i]->mesh_vertices[0]);
   }
   else {
@@ -99,7 +99,7 @@ static void computeEdgeLoops(const GFace *gf,
 
   all_mvertices.push_back(start->mesh_vertices[0]);
   if(*ito == 1)
-    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++)
+    for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); i++)
       all_mvertices.push_back((*it)->mesh_vertices[i]);
   else
     for(int i = (*it)->mesh_vertices.size() - 1; i >= 0; i--)
@@ -130,7 +130,7 @@ static void computeEdgeLoops(const GFace *gf,
     }
     all_mvertices.push_back(v_start->mesh_vertices[0]);
     if(*ito == 1)
-      for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++)
+      for(std::size_t i = 0; i < (*it)->mesh_vertices.size(); i++)
         all_mvertices.push_back((*it)->mesh_vertices[i]);
     else
       for(int i = (*it)->mesh_vertices.size() - 1; i >= 0; i--)
@@ -177,17 +177,17 @@ int MeshTransfiniteSurface(GFace *gf)
   // create a list of all boundary vertices, starting at the first
   // transfinite corner
   std::vector<MVertex *> m_vertices;
-  unsigned int I;
+  std::size_t I;
   for(I = 0; I < d_vertices.size(); I++)
     if(d_vertices[I] == corners[0]) break;
-  for(unsigned int j = 0; j < d_vertices.size(); j++)
+  for(std::size_t j = 0; j < d_vertices.size(); j++)
     m_vertices.push_back(d_vertices[(I + j) % d_vertices.size()]);
 
   // make the ordering of the list consistent with the ordering of the
   // first two corners (if the second found corner is not the second
   // corner, just reverse the list)
   bool reverse = false;
-  for(unsigned int i = 1; i < m_vertices.size(); i++) {
+  for(std::size_t i = 1; i < m_vertices.size(); i++) {
     MVertex *v = m_vertices[i];
     if(v == corners[1] || v == corners[2] ||
        (corners.size() == 4 && v == corners[3])) {
@@ -206,7 +206,7 @@ int MeshTransfiniteSurface(GFace *gf)
   // coordinates of all the boundary vertices
   int iCorner = 0, N[4] = {0, 0, 0, 0};
   std::vector<double> U, V;
-  for(unsigned int i = 0; i < m_vertices.size(); i++) {
+  for(std::size_t i = 0; i < m_vertices.size(); i++) {
     MVertex *v = m_vertices[i];
     if(v == corners[0] || v == corners[1] || v == corners[2] ||
        (corners.size() == 4 && v == corners[3])) {
diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp
index 4592c1931874003a6debc7a9a3520e5a4af54abc..99f614ab69e977f00aa78e0eca11dba72cb938a4 100644
--- a/Mesh/meshGRegion.cpp
+++ b/Mesh/meshGRegion.cpp
@@ -55,9 +55,9 @@ int splitQuadRecovery::buildPyramids(GModel *gm)
     if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == EXTRUDED_ENTITY) continue;
 
     std::vector<GFace*> faces = gr->faces();
-    for(unsigned int i = 0; i < faces.size(); i++){
+    for(std::size_t i = 0; i < faces.size(); i++){
       GFace *gf = faces[i];
-      for(unsigned int j = 0; j < gf->quadrangles.size(); j++){
+      for(std::size_t j = 0; j < gf->quadrangles.size(); j++){
         std::map<MFace, MVertex *, Less_Face>::iterator it2 =
           _quad.find(gf->quadrangles[j]->getFace(0));
         if(it2 != _quad.end()){
@@ -101,7 +101,7 @@ void MeshDelaunayVolume(std::vector<GRegion *> &regions)
   GRegion *gr = regions[0];
   std::vector<GFace *> faces = gr->faces();
   std::set<GFace *, GEntityLessThan> allFacesSet;
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     std::vector<GFace *> const &f = regions[i]->faces();
     std::vector<GFace *> const &f_e = regions[i]->embeddedFaces();
     allFacesSet.insert(f.begin(), f.end());
@@ -111,7 +111,7 @@ void MeshDelaunayVolume(std::vector<GRegion *> &regions)
   gr->set(allFaces);
 
   std::set<GEdge *> allEmbEdgesSet;
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     std::vector<GEdge *> const &e = regions[i]->embeddedEdges();
     allEmbEdgesSet.insert(e.begin(), e.end());
   }
@@ -121,7 +121,7 @@ void MeshDelaunayVolume(std::vector<GRegion *> &regions)
   gr->embeddedEdges() = allEmbEdges;
 
   std::set<GVertex *> allEmbVerticesSet;
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     std::vector<GVertex *> const &e = regions[i]->embeddedVertices();
     allEmbVerticesSet.insert(e.begin(), e.end());
   }
@@ -230,7 +230,7 @@ bool buildFaceSearchStructure(GModel *model, fs_cont &search,
 
   std::set<GFace *>::iterator fit = faces_to_consider.begin();
   while(fit != faces_to_consider.end()) {
-    for(unsigned int i = 0; i < (*fit)->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < (*fit)->getNumMeshElements(); i++) {
       MFace ff = (*fit)->getMeshElement(i)->getFace(0);
       if(!onlyTriangles || ff.getNumVertices() == 3)
         search[ff] = *fit;
@@ -246,7 +246,7 @@ bool buildEdgeSearchStructure(GModel *model, es_cont &search)
 
   GModel::eiter eit = model->firstEdge();
   while(eit != model->lastEdge()) {
-    for(unsigned int i = 0; i < (*eit)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*eit)->lines.size(); i++) {
       MVertex *p1 = (*eit)->lines[i]->getVertex(0);
       MVertex *p2 = (*eit)->lines[i]->getVertex(1);
       MVertex *p = std::min(p1, p2);
diff --git a/Mesh/meshGRegionBoundaryLayer.cpp b/Mesh/meshGRegionBoundaryLayer.cpp
index c643eb0d746ac4052d8552cba4ca1574165dee5d..4f750864ce72a7115b93557296c072b3328e9123 100644
--- a/Mesh/meshGRegionBoundaryLayer.cpp
+++ b/Mesh/meshGRegionBoundaryLayer.cpp
@@ -65,7 +65,7 @@ public:
   GRegion *_gr;
   GFace *_f[2];
   double max_angle, min_angle;
-  unsigned int _N_SUBNORMALS;
+  std::size_t _N_SUBNORMALS;
 
   void computeType(double angle)
   {
@@ -1240,7 +1240,7 @@ public:
 
           //	  printf("%d %d %d\n",fan0.size(),fan1.size(),r._N_SUBNORMALS);
           if(fan0.size() == r._N_SUBNORMALS && fan1.size() == r._N_SUBNORMALS) {
-            for(unsigned int k = 0; k <= r._N_SUBNORMALS; k++) {
+            for(std::size_t k = 0; k <= r._N_SUBNORMALS; k++) {
               MVertex *v00 = (k == 0 ? o00 : fan0[k - 1]);
               MVertex *v10 = (k == 0 ? o10 : fan1[k - 1]);
               MVertex *v01 = (k == r._N_SUBNORMALS ? o01 : fan0[k]);
diff --git a/Mesh/meshGRegionBoundaryRecovery.cpp b/Mesh/meshGRegionBoundaryRecovery.cpp
index 3622951f1ba4297dc61fb942989ebb3db52e5f5f..163c1d481e8d9c707253a15106efa85b8c691517 100644
--- a/Mesh/meshGRegionBoundaryRecovery.cpp
+++ b/Mesh/meshGRegionBoundaryRecovery.cpp
@@ -160,7 +160,7 @@ namespace tetgenBR {
       for(std::vector<GFace *>::const_iterator it = f.begin(); it != f.end();
           ++it) {
         GFace *gf = *it;
-        for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+        for(std::size_t i = 0; i < gf->triangles.size(); i++) {
           MVertex *v0 = gf->triangles[i]->getVertex(0);
           MVertex *v1 = gf->triangles[i]->getVertex(1);
           MVertex *v2 = gf->triangles[i]->getVertex(2);
@@ -169,7 +169,7 @@ namespace tetgenBR {
           all.insert(v2);
         }
         if(_sqr){
-          for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+          for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
             MVertex *v0 = gf->quadrangles[i]->getVertex(0);
             MVertex *v1 = gf->quadrangles[i]->getVertex(1);
             MVertex *v2 = gf->quadrangles[i]->getVertex(2);
@@ -194,7 +194,7 @@ namespace tetgenBR {
       for(std::vector<GEdge *>::const_iterator it = e.begin(); it != e.end();
           ++it) {
         GEdge *ge = *it;
-        for(unsigned int i = 0; i < ge->lines.size(); i++) {
+        for(std::size_t i = 0; i < ge->lines.size(); i++) {
           all.insert(ge->lines[i]->getVertex(0));
           all.insert(ge->lines[i]->getVertex(1));
         }
@@ -203,7 +203,7 @@ namespace tetgenBR {
       for(std::vector<GVertex *>::const_iterator it = v.begin(); it != v.end();
           ++it) {
         GVertex *gv = *it;
-        for(unsigned int i = 0; i < gv->points.size(); i++) {
+        for(std::size_t i = 0; i < gv->points.size(); i++) {
           all.insert(gv->points[i]->getVertex(0));
         }
       }
@@ -217,7 +217,7 @@ namespace tetgenBR {
     // Store all coordinates of the vertices as these will be pertubated in
     // function delaunayTriangulation
     std::map<MVertex *, SPoint3> originalCoordinates;
-    for(unsigned int i = 0; i < _vertices.size(); i++) {
+    for(std::size_t i = 0; i < _vertices.size(); i++) {
       MVertex *v = _vertices[i];
       originalCoordinates[v] = v->point();
     }
@@ -234,7 +234,7 @@ namespace tetgenBR {
       REAL x, y, z;
 
       // Read the points.
-      for(unsigned int i = 0; i < _vertices.size(); i++) {
+      for(std::size_t i = 0; i < _vertices.size(); i++) {
         makepoint(&pointloop, UNUSEDVERTEX);
         // Read the point coordinates.
         x = pointloop[0] = _vertices[i]->x();
@@ -280,7 +280,7 @@ namespace tetgenBR {
     idx2verlist[0] = dummypoint; // Let 0th-entry be dummypoint.
     // Index the vertices, starting at 1 (vertex index 0 is used as special code
     // in tetgenBR in case of failure)
-    for(unsigned int i = 0; i < _vertices.size(); i++) {
+    for(std::size_t i = 0; i < _vertices.size(); i++) {
       _vertices[i]->setIndex(i + 1);
     }
 
@@ -299,7 +299,7 @@ namespace tetgenBR {
 
       // Allocate an array that maps each vertex to its adjacent tets.
       ver2tetarray = new tetrahedron[_vertices.size() + in->firstnumber];
-      for(unsigned int i = 0; i < _vertices.size() + in->firstnumber; i++) {
+      for(std::size_t i = 0; i < _vertices.size() + in->firstnumber; i++) {
         setpointtype(idx2verlist[i], VOLVERTEX); // initial type.
         ver2tetarray[i] = NULL;
       }
@@ -309,7 +309,7 @@ namespace tetgenBR {
 #if 0
       /*  N E W   V E R S I O N	  */
       std::vector<triface> ts( tets.size() );
-      for(unsigned int i = 0; i < tets.size(); i++) {
+      for(std::size_t i = 0; i < tets.size(); i++) {
 	point p[4];
 	// index tetrahedra in order to have access to neighbors ids.
 	tets[i]->tet()->forceNum(i+1);
@@ -343,7 +343,7 @@ namespace tetgenBR {
       /*  N E W   V E R S I O N	  */
 
       // Create the tetrahedra and connect those that share a common face.
-      for(unsigned int i = 0; i < tets.size(); i++) {
+      for(std::size_t i = 0; i < tets.size(); i++) {
         // Get the four vertices.
         for(int j = 0; j < 4; j++) {
           p[j] = idx2verlist[tets[i]->getVertex(j)->getIndex()];
@@ -490,7 +490,7 @@ namespace tetgenBR {
       hullsize = tetrahedrons->items - hullsize;
 
       delete[] ver2tetarray;
-      for(unsigned int i = 0; i < tets.size(); i++) delete tets[i];
+      for(std::size_t i = 0; i < tets.size(); i++) delete tets[i];
       tets.clear(); // Release all memory in this vector.
     }
 #endif
@@ -508,7 +508,7 @@ namespace tetgenBR {
       for(std::vector<GFace *>::const_iterator it = f_list.begin();
           it != f_list.end(); ++it) {
         GFace *gf = *it;
-        for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+        for(std::size_t i = 0; i < gf->triangles.size(); i++) {
           for(int j = 0; j < 3; j++) {
             p[j] = idx2verlist[gf->triangles[i]->getVertex(j)->getIndex()];
             if(pointtype(p[j]) == VOLVERTEX) {
@@ -576,7 +576,7 @@ namespace tetgenBR {
       for(std::vector<GEdge *>::const_iterator it = e_list.begin();
           it != e_list.end(); ++it) {
         GEdge *ge = *it;
-        for(unsigned int i = 0; i < ge->lines.size(); i++) {
+        for(std::size_t i = 0; i < ge->lines.size(); i++) {
           for(int j = 0; j < 2; j++) {
             p[j] = idx2verlist[ge->lines[i]->getVertex(j)->getIndex()];
             setpointtype(p[j], RIDGEVERTEX);
@@ -908,7 +908,7 @@ namespace tetgenBR {
           assert(ge != NULL);
           Msg::Info("Steiner points exist on curve %d", ge->tag());
           // Delete the old triangles.
-          for(unsigned int i = 0; i < ge->lines.size(); i++)
+          for(std::size_t i = 0; i < ge->lines.size(); i++)
             delete ge->lines[i];
           ge->lines.clear();
           ge->deleteVertexArrays();
@@ -954,7 +954,7 @@ namespace tetgenBR {
           assert(gf != NULL);
           // Delete the old triangles.
           Msg::Info("Steiner points exist on surface %d", gf->tag());
-          for(unsigned int i = 0; i < gf->triangles.size(); i++)
+          for(std::size_t i = 0; i < gf->triangles.size(); i++)
             delete gf->triangles[i];
           gf->triangles.clear();
           gf->deleteVertexArrays();
@@ -1031,7 +1031,7 @@ namespace tetgenBR {
     }
 
     // delete 8 new enclosing box vertices added in delaunayMeshIn3d
-    for(unsigned int i = _vertices.size() - 8; i < _vertices.size(); i++)
+    for(std::size_t i = _vertices.size() - 8; i < _vertices.size(); i++)
       delete _vertices[i];
 
     return true;
@@ -1263,7 +1263,7 @@ bool meshGRegionBoundaryRecovery(GRegion *gr, splitQuadRecovery *sqr)
       std::vector<GFace *> f = gr->faces();
       for(std::vector<GFace *>::iterator it = f.begin(); it != f.end(); ++it) {
         GFace *gf = *it;
-        for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+        for(std::size_t i = 0; i < gf->triangles.size(); i++) {
           for(int j = 0; j < 3; j++) {
             MVertex *v = gf->triangles[i]->getVertex(j);
             all[v->getIndex()] = v;
@@ -1274,7 +1274,7 @@ bool meshGRegionBoundaryRecovery(GRegion *gr, splitQuadRecovery *sqr)
       for(std::vector<GEdge *>::const_iterator it = e.begin(); it != e.end();
           ++it) {
         GEdge *ge = *it;
-        for(unsigned int i = 0; i < ge->lines.size(); i++) {
+        for(std::size_t i = 0; i < ge->lines.size(); i++) {
           for(int j = 0; j < 2; j++) {
             MVertex *v = ge->lines[i]->getVertex(j);
             all[v->getIndex()] = v;
@@ -1285,12 +1285,12 @@ bool meshGRegionBoundaryRecovery(GRegion *gr, splitQuadRecovery *sqr)
       for(std::vector<GVertex *>::const_iterator it = v.begin(); it != v.end();
           ++it) {
         GVertex *gv = *it;
-        for(unsigned int i = 0; i < gv->points.size(); i++) {
+        for(std::size_t i = 0; i < gv->points.size(); i++) {
           MVertex *v = gv->points[i]->getVertex(0);
           all[v->getIndex()] = v;
         }
       }
-      for(unsigned int i = 0; i < gr->mesh_vertices.size(); i++) {
+      for(std::size_t i = 0; i < gr->mesh_vertices.size(); i++) {
         MVertex *v = gr->mesh_vertices[i];
         all[v->getIndex()] = v;
       }
diff --git a/Mesh/meshGRegionCarveHole.cpp b/Mesh/meshGRegionCarveHole.cpp
index 88c9656d72f5af9ffb2a24d7de24199c0ba1953d..ad30e82bbb3d2fab8f7d267cff6839e99328f783 100644
--- a/Mesh/meshGRegionCarveHole.cpp
+++ b/Mesh/meshGRegionCarveHole.cpp
@@ -34,7 +34,7 @@ void carveHole(std::vector<T *> &elements, double distance, ANNkd_tree *kdtree)
   ANNidxArray index = new ANNidx[1];
   ANNdistArray dist = new ANNdist[1];
   std::vector<T *> temp;
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     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()};
@@ -57,7 +57,7 @@ void carveHole(std::vector<T *> &elements, double distance, ANNkd_tree *kdtree)
 template <class T>
 void addFaces(std::vector<T *> &elements, std::set<MFace, Less_Face> &faces)
 {
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     for(int j = 0; j < elements[i]->getNumFaces(); j++) {
       MFace f = elements[i]->getFace(j);
       std::set<MFace, Less_Face>::iterator it = faces.find(f);
@@ -78,7 +78,7 @@ void carveHole(GRegion *gr, int num, double distance,
 
   // add all points from carving surfaces into kdtree
   int numnodes = 0;
-  for(unsigned int i = 0; i < surfaces.size(); i++) {
+  for(std::size_t i = 0; i < surfaces.size(); i++) {
     GFace *gf = m->getFaceByTag(surfaces[i]);
     if(!gf) {
       Msg::Error("Unknown carving surface %d", surfaces[i]);
@@ -89,9 +89,9 @@ void carveHole(GRegion *gr, int num, double distance,
 
   ANNpointArray kdnodes = annAllocPts(numnodes, 3);
   int k = 0;
-  for(unsigned int i = 0; i < surfaces.size(); i++) {
+  for(std::size_t i = 0; i < surfaces.size(); i++) {
     GFace *gf = m->getFaceByTag(surfaces[i]);
-    for(unsigned int j = 0; j < gf->mesh_vertices.size(); j++) {
+    for(std::size_t j = 0; j < gf->mesh_vertices.size(); j++) {
       kdnodes[k][0] = gf->mesh_vertices[j]->x();
       kdnodes[k][1] = gf->mesh_vertices[j]->y();
       kdnodes[k][2] = gf->mesh_vertices[j]->z();
diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp
index e3ae4d5d107e081165bf20d2ea20d32218fac233..95b3ae9e00b11dcd3c7f82aa574ec53c13333aa4 100644
--- a/Mesh/meshGRegionDelaunayInsertion.cpp
+++ b/Mesh/meshGRegionDelaunayInsertion.cpp
@@ -38,7 +38,7 @@ static void testIfBoundaryIsRecovered(GRegion *gr)
   std::vector<GEdge *>::const_iterator it = e.begin();
   std::vector<GFace *>::iterator itf = f.begin();
   for(; it != e.end(); ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); ++i) {
       if(distance((*it)->lines[i]->getVertex(0),
                   (*it)->lines[i]->getVertex(1)) > 1.e-12)
         edges.insert(std::make_pair(
@@ -47,7 +47,7 @@ static void testIfBoundaryIsRecovered(GRegion *gr)
     }
   }
   for(; itf != f.end(); ++itf) {
-    for(unsigned int i = 0; i < (*itf)->triangles.size(); ++i) {
+    for(std::size_t i = 0; i < (*itf)->triangles.size(); ++i) {
       faces.insert(std::make_pair(MFace((*itf)->triangles[i]->getVertex(0),
                                         (*itf)->triangles[i]->getVertex(1),
                                         (*itf)->triangles[i]->getVertex(2)),
@@ -57,7 +57,7 @@ static void testIfBoundaryIsRecovered(GRegion *gr)
   Msg::Info("Searching for %d mesh edges and %d mesh faces among %d elements "
             "in region %d",
             edges.size(), faces.size(), gr->getNumMeshElements(), gr->tag());
-  for(unsigned int k = 0; k < gr->getNumMeshElements(); k++) {
+  for(std::size_t k = 0; k < gr->getNumMeshElements(); k++) {
     for(int j = 0; j < gr->getMeshElement(k)->getNumEdges(); j++) {
       edges.erase(gr->getMeshElement(k)->getEdge(j));
     }
@@ -79,7 +79,7 @@ struct edgeContainerB {
   std::vector<std::vector<MEdge> > _hash;
   std::size_t _size, _size_obj;
 
-  edgeContainerB(unsigned int N = 1000000)
+  edgeContainerB(std::size_t N = 1000000)
     : _hash(N), _size(0), _size_obj(sizeof(MEdge))
   {
   }
@@ -117,7 +117,7 @@ static void createAllEmbeddedEdges(GRegion *gr,
   std::vector<GEdge *> const &e = gr->embeddedEdges();
   for(std::vector<GEdge *>::const_iterator it = e.begin(); it != e.end();
       ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       allEmbeddedEdges.insert(
         MEdge((*it)->lines[i]->getVertex(0), (*it)->lines[i]->getVertex(1)));
     }
@@ -129,7 +129,7 @@ static void createAllEmbeddedEdges(GRegion *gr, edgeContainerB &embedded)
   std::vector<GEdge *> const &e = gr->embeddedEdges();
   for(std::vector<GEdge *>::const_iterator it = e.begin(); it != e.end();
       ++it) {
-    for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
       embedded.addNewEdge(
         MEdge((*it)->lines[i]->getVertex(0), (*it)->lines[i]->getVertex(1)));
     }
@@ -142,7 +142,7 @@ static void createAllEmbeddedFaces(GRegion *gr,
   std::vector<GFace *> const &f = gr->embeddedFaces();
   for(std::vector<GFace *>::const_iterator it = f.begin(); it != f.end();
       ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       allEmbeddedFaces.insert((*it)->triangles[i]->getFace(0));
     }
   }
@@ -236,7 +236,7 @@ void connectTets_vector2_templ(std::size_t _size, ITER beg, ITER end,
 
   std::sort(conn.begin(), conn.end());
 
-  for(unsigned int i = 0; i < conn.size() - 1; i++) {
+  for(std::size_t i = 0; i < conn.size() - 1; i++) {
     faceXtet &f1 = conn[i];
     faceXtet &f2 = conn[i + 1];
     if(f1 == f2 && f1.t1 != f2.t1) {
@@ -508,7 +508,7 @@ bool insertVertexB(std::vector<faceXtet> &shell, std::vector<MTet4 *> &cavity,
     return true;
   }
   else /* one point is too close */ {
-    for(unsigned int i = 0; i < shell.size(); i++) myFactory.Free(new_tets[i]);
+    for(std::size_t i = 0; i < shell.size(); i++) myFactory.Free(new_tets[i]);
     std::vector<MTet4 *>::iterator ittet = cavity.begin();
     std::vector<MTet4 *>::iterator ittete = cavity.end();
     while(ittet != ittete) {
@@ -697,7 +697,7 @@ void adaptMeshGRegion::operator()(GRegion *gr)
 
   typedef std::list<MTet4 *> CONTAINER;
   CONTAINER allTets;
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
     allTets.push_back(new MTet4(gr->tetrahedra[i], qm));
   }
   gr->tetrahedra.clear();
@@ -808,7 +808,7 @@ void adaptMeshGRegion::operator()(GRegion *gr)
     if(!newTets.size()) break;
 
     // add all the new tets in the container
-    for(unsigned int i = 0; i < newTets.size(); i++) {
+    for(std::size_t i = 0; i < newTets.size(); i++) {
       if(!newTets[i]->isDeleted()) { allTets.push_back(newTets[i]); }
       else {
         delete newTets[i]->tet();
@@ -849,7 +849,7 @@ void adaptMeshGRegion::operator()(GRegion *gr)
   }
 
   int nbSlivers = 0;
-  for(unsigned int i = 0; i < illegals.size(); i++)
+  for(std::size_t i = 0; i < illegals.size(); i++)
     if(!(illegals[i]->isDeleted())) nbSlivers++;
 
   if(nbSlivers) {
@@ -888,7 +888,7 @@ void optimizeMesh(GRegion *gr, const qmTetrahedron::Measures &qm)
 
   typedef std::vector<MTet4 *> CONTAINER;
   CONTAINER allTets;
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
     MTet4 *t = new MTet4(gr->tetrahedra[i], qm);
     t->setOnWhat(gr);
     allTets.push_back(t);
@@ -983,7 +983,7 @@ void optimizeMesh(GRegion *gr, const qmTetrahedron::Measures &qm)
     if(!newTets.size()) { break; }
 
     // add all the new tets in the container
-    for(unsigned int i = 0; i < newTets.size(); i++) {
+    for(std::size_t i = 0; i < newTets.size(); i++) {
       if(!newTets[i]->isDeleted()) { allTets.push_back(newTets[i]); }
       else {
         delete newTets[i]->tet();
@@ -1241,7 +1241,7 @@ void insertVerticesInRegion(GRegion *gr, int maxVert, bool _classify,
       std::vector<GEdge *> const &e = (*rit)->embeddedEdges();
       for(std::vector<GEdge *>::const_iterator it = e.begin(); it != e.end();
           ++it) {
-        for(unsigned int i = 0; i < (*it)->lines.size(); i++) {
+        for(std::size_t i = 0; i < (*it)->lines.size(); i++) {
           MVertex *vi = (*it)->lines[i]->getVertex(0);
           MVertex *vj = (*it)->lines[i]->getVertex(1);
           double dx = vi->x() - vj->x();
@@ -1277,11 +1277,11 @@ void insertVerticesInRegion(GRegion *gr, int maxVert, bool _classify,
     for(GModel::fiter it = gr->model()->firstFace();
         it != gr->model()->lastFace(); ++it) {
       GFace *gf = *it;
-      for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+      for(std::size_t i = 0; i < gf->triangles.size(); i++) {
         setLcs(gf->triangles[i], vSizesMap, bndVertices);
       }
     }
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++)
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++)
       setLcs(gr->tetrahedra[i], vSizesMap, bndVertices);
 
     for(std::map<MVertex *, double, MVertexLessThanNum>::iterator it =
@@ -1293,7 +1293,7 @@ void insertVerticesInRegion(GRegion *gr, int maxVert, bool _classify,
     }
   }
 
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
     gr->tetrahedra[i]->setVolumePositive();
     allTets.insert(myFactory.Create(gr->tetrahedra[i], vSizes, vSizesBGM));
   }
diff --git a/Mesh/meshGRegionExtruded.cpp b/Mesh/meshGRegionExtruded.cpp
index bfa9116865b680c0036c36286f088ea11e682901..64f9f3fbab2d46852752d50fd85c9022e1098fb1 100644
--- a/Mesh/meshGRegionExtruded.cpp
+++ b/Mesh/meshGRegionExtruded.cpp
@@ -167,7 +167,7 @@ static void extrudeMesh(GFace *from, GRegion *to, MVertexRTree &pos)
   mesh_vertices.insert(mesh_vertices.end(), seam.begin(), seam.end());
 
   // create extruded vertices
-  for(unsigned int i = 0; i < mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < mesh_vertices.size(); i++) {
     MVertex *v = mesh_vertices[i];
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
       for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
@@ -192,7 +192,7 @@ static void extrudeMesh(GFace *from, GRegion *to, MVertexRTree &pos)
   // create elements (note that it would be faster to access the *interior*
   // nodes by direct indexing, but it's just simpler to query everything by
   // position)
-  for(unsigned int i = 0; i < from->triangles.size(); i++) {
+  for(std::size_t i = 0; i < from->triangles.size(); i++) {
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
       for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
         std::vector<MVertex *> verts;
@@ -207,7 +207,7 @@ static void extrudeMesh(GFace *from, GRegion *to, MVertexRTree &pos)
     Msg::Error("Cannot extrude quadrangles without Recombine");
   }
   else {
-    for(unsigned int i = 0; i < from->quadrangles.size(); i++) {
+    for(std::size_t i = 0; i < from->quadrangles.size(); i++) {
       for(int j = 0; j < ep->mesh.NbLayer; j++) {
         for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
           std::vector<MVertex *> verts;
@@ -310,7 +310,7 @@ static void phase1(GRegion *gr, MVertexRTree &pos,
   GFace *from = gr->model()->getFaceByTag(std::abs(ep->geo.Source));
   if(!from) return;
 
-  for(unsigned int i = 0; i < from->triangles.size(); i++) {
+  for(std::size_t i = 0; i < from->triangles.size(); i++) {
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
       for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
         std::vector<MVertex *> v;
@@ -352,7 +352,7 @@ static void phase2(GRegion *gr, MVertexRTree &pos,
   GFace *from = gr->model()->getFaceByTag(std::abs(ep->geo.Source));
   if(!from) return;
 
-  for(unsigned int i = 0; i < from->triangles.size(); i++) {
+  for(std::size_t i = 0; i < from->triangles.size(); i++) {
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
       for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
         std::vector<MVertex *> v;
@@ -416,7 +416,7 @@ static void phase3(GRegion *gr, MVertexRTree &pos,
   GFace *from = gr->model()->getFaceByTag(std::abs(ep->geo.Source));
   if(!from) return;
 
-  for(unsigned int i = 0; i < from->triangles.size(); i++) {
+  for(std::size_t i = 0; i < from->triangles.size(); i++) {
     MTriangle *tri = from->triangles[i];
     for(int j = 0; j < ep->mesh.NbLayer; j++) {
       for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) {
@@ -501,7 +501,7 @@ int SubdivideExtrudedMesh(GModel *m)
 
   // create edges on lateral sides of "prisms"
   std::set<std::pair<MVertex *, MVertex *> > edges;
-  for(unsigned int i = 0; i < regions.size(); i++)
+  for(std::size_t i = 0; i < regions.size(); i++)
     phase1(regions[i], pos, edges);
 
   // swap lateral edges to make them "tet-compatible"
@@ -509,7 +509,7 @@ int SubdivideExtrudedMesh(GModel *m)
   std::set<std::pair<MVertex *, MVertex *> > edges_swap;
   do {
     swap = 0;
-    for(unsigned int i = 0; i < regions.size(); i++)
+    for(std::size_t i = 0; i < regions.size(); i++)
       phase2(regions[i], pos, edges, edges_swap, swap);
     Msg::Info("Swapping %d", swap);
     if(j && j == swap) {
@@ -521,18 +521,18 @@ int SubdivideExtrudedMesh(GModel *m)
   } while(swap);
 
   // delete volume elements and create tetrahedra instead
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     GRegion *gr = regions[i];
 
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++)
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++)
       delete gr->tetrahedra[i];
     gr->tetrahedra.clear();
-    for(unsigned int i = 0; i < gr->hexahedra.size(); i++)
+    for(std::size_t i = 0; i < gr->hexahedra.size(); i++)
       delete gr->hexahedra[i];
     gr->hexahedra.clear();
-    for(unsigned int i = 0; i < gr->prisms.size(); i++) delete gr->prisms[i];
+    for(std::size_t i = 0; i < gr->prisms.size(); i++) delete gr->prisms[i];
     gr->prisms.clear();
-    for(unsigned int i = 0; i < gr->pyramids.size(); i++)
+    for(std::size_t i = 0; i < gr->pyramids.size(); i++)
       delete gr->pyramids[i];
     gr->pyramids.clear();
     phase3(gr, pos, edges);
@@ -546,10 +546,10 @@ int SubdivideExtrudedMesh(GModel *m)
          !ep->mesh.Recombine) {
         GFace *gf = *it;
         Msg::Info("Remeshing surface %d", gf->tag());
-        for(unsigned int i = 0; i < gf->triangles.size(); i++)
+        for(std::size_t i = 0; i < gf->triangles.size(); i++)
           delete gf->triangles[i];
         gf->triangles.clear();
-        for(unsigned int i = 0; i < gf->quadrangles.size(); i++)
+        for(std::size_t i = 0; i < gf->quadrangles.size(); i++)
           delete gf->quadrangles[i];
         gf->quadrangles.clear();
         MeshExtrudedSurface(gf, &edges);
@@ -564,7 +564,7 @@ int SubdivideExtrudedMesh(GModel *m)
   // neighbor has been meshed or if a lateral surface should remain static for
   // any other reason).  If this function detects allNonGlobalSharedLaterals, it
   // won't mesh the region (should already be done in ExtrudeMesh).
-  for(unsigned int i = 0; i < regions_quadToTri.size(); i++) {
+  for(std::size_t i = 0; i < regions_quadToTri.size(); i++) {
     GRegion *gr = regions_quadToTri[i];
     MVertexRTree pos_local(CTX::instance()->geom.tolerance *
                            CTX::instance()->lc);
@@ -574,7 +574,7 @@ int SubdivideExtrudedMesh(GModel *m)
 #endif
 
   // carve holes if any (TODO: update extrusion information)
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     GRegion *gr = regions[i];
     ExtrudeParams *ep = gr->meshAttributes.extrude;
     if(ep->mesh.Holes.size()) {
@@ -585,7 +585,7 @@ int SubdivideExtrudedMesh(GModel *m)
   }
 
 #if defined(HAVE_QUADTRI)
-  for(unsigned int i = 0; i < regions_quadToTri.size(); i++) {
+  for(std::size_t i = 0; i < regions_quadToTri.size(); i++) {
     GRegion *gr = regions_quadToTri[i];
     ExtrudeParams *ep = gr->meshAttributes.extrude;
     if(ep->mesh.Holes.size()) {
diff --git a/Mesh/meshGRegionHxt.cpp b/Mesh/meshGRegionHxt.cpp
index 68ed667c27ab354525f67d8318f62aff08f1dc68..fdaa1535b0f0b766be8c4bbf004bc35e29b35290 100644
--- a/Mesh/meshGRegionHxt.cpp
+++ b/Mesh/meshGRegionHxt.cpp
@@ -52,7 +52,7 @@ static HXTStatus getAllFacesOfAllRegions(std::vector<GRegion *> &regions,
                                m->brep.numVolumes * sizeof(uint32_t)));
   }
   uint32_t to_alloc = 0;
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     std::vector<GFace *> const &f = regions[i]->faces();
     std::vector<GFace *> const &f_e = regions[i]->embeddedFaces();
     if(m) {
@@ -70,7 +70,7 @@ static HXTStatus getAllFacesOfAllRegions(std::vector<GRegion *> &regions,
     hxtAlignedMalloc(&m->brep.surfacesPerVolume, to_alloc * sizeof(uint32_t)));
 
   uint32_t counter = 0;
-  for(unsigned int i = 0; i < regions.size(); i++) {
+  for(std::size_t i = 0; i < regions.size(); i++) {
     std::vector<GFace *> const &f = regions[i]->faces();
     std::vector<GFace *> const &f_e = regions[i]->embeddedFaces();
     for(size_t j = 0; j < f.size(); j++)
@@ -97,7 +97,7 @@ static HXTStatus getAllEdgesOfAllFaces(std::vector<GFace *> &faces, HXTMesh *m,
   uint32_t to_alloc = 0;
 
   std::set<GEdge *, GEntityLessThan> allEdgesSet;
-  for(unsigned int i = 0; i < faces.size(); i++) {
+  for(std::size_t i = 0; i < faces.size(); i++) {
     std::vector<GEdge *> const &f = faces[i]->edges();
     std::vector<GEdge *> const &f_e = faces[i]->embeddedEdges();
     if(m) {
@@ -115,7 +115,7 @@ static HXTStatus getAllEdgesOfAllFaces(std::vector<GFace *> &faces, HXTMesh *m,
     hxtAlignedMalloc(&m->brep.curvesPerSurface, to_alloc * sizeof(uint32_t)));
 
   uint32_t counter = 0;
-  for(unsigned int i = 0; i < faces.size(); i++) {
+  for(std::size_t i = 0; i < faces.size(); i++) {
     std::vector<GEdge *> const &f = faces[i]->edges();
     std::vector<GEdge *> const &f_e = faces[i]->embeddedEdges();
     for(size_t j = 0; j < f.size(); j++)
diff --git a/Mesh/meshGRegionLocalMeshMod.cpp b/Mesh/meshGRegionLocalMeshMod.cpp
index 362486ea7d94608b83d73adcd7c85e5b49923b2b..e6c393ef67472872a979fb6524ded196ff6c42e4 100644
--- a/Mesh/meshGRegionLocalMeshMod.cpp
+++ b/Mesh/meshGRegionLocalMeshMod.cpp
@@ -36,19 +36,19 @@ void computeNeighboringTetsOfACavity(const std::vector<MTet4 *> &cavity,
                                      std::vector<MTet4 *> &outside)
 {
   outside.clear();
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     for(int j = 0; j < 4; j++) {
       MTet4 *neigh = cavity[i]->getNeigh(j);
       if(neigh) {
         bool found = false;
-        for(unsigned int k = 0; k < outside.size(); k++) {
+        for(std::size_t k = 0; k < outside.size(); k++) {
           if(outside[k] == neigh) {
             found = true;
             break;
           }
         }
         if(!found) {
-          for(unsigned int k = 0; k < cavity.size(); k++) {
+          for(std::size_t k = 0; k < cavity.size(); k++) {
             if(cavity[k] == neigh) {
               found = true;
             }
@@ -258,7 +258,7 @@ bool edgeSwap(std::vector<MTet4 *> &newTets, MTet4 *tet, int iLocalEdge,
 
   double volumeRef = 0.0;
   double tetQualityRef = 1;
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     double vol = fabs(cavity[i]->tet()->getVolume());
     tetQualityRef = std::min(tetQualityRef, cavity[i]->getQuality());
     volumeRef += vol;
@@ -347,7 +347,7 @@ bool edgeSwap(std::vector<MTet4 *> &newTets, MTet4 *tet, int iLocalEdge,
     newTets.push_back(t42);
   }
 
-  for(unsigned int i = 0; i < cavity.size(); i++) cavity[i]->setDeleted(true);
+  for(std::size_t i = 0; i < cavity.size(); i++) cavity[i]->setDeleted(true);
 
   connectTets(outside, &embeddedFaces);
 
@@ -366,7 +366,7 @@ bool edgeSplit(std::vector<MTet4 *> &newTets, MTet4 *tet, MVertex *newVertex,
     buildEdgeCavity(tet, iLocalEdge, &v1, &v2, cavity, outside, ring);
   if(!closed) return false;
 
-  for(unsigned int j = 0; j < ring.size(); j++) {
+  for(std::size_t j = 0; j < ring.size(); j++) {
     MVertex *pv1 = ring[j];
     MVertex *pv2 = ring[(j + 1) % ring.size()];
     MTetrahedron *tr1 = new MTetrahedron(pv1, pv2, newVertex, v1);
@@ -381,7 +381,7 @@ bool edgeSplit(std::vector<MTet4 *> &newTets, MTet4 *tet, MVertex *newVertex,
     newTets.push_back(t42);
   }
 
-  for(unsigned int i = 0; i < cavity.size(); i++) cavity[i]->setDeleted(true);
+  for(std::size_t i = 0; i < cavity.size(); i++) cavity[i]->setDeleted(true);
 
   connectTets(outside);
 
@@ -438,7 +438,7 @@ bool faceSwap(std::vector<MTet4 *> &newTets, MTet4 *t1, int iLocalFace,
   for(int i = 0; i < 4; i++) {
     if(t1->getNeigh(i) && t1->getNeigh(i) != t2) {
       bool found = false;
-      for(unsigned int j = 0; j < outside.size(); j++) {
+      for(std::size_t j = 0; j < outside.size(); j++) {
         if(outside[j] == t1->getNeigh(i)) {
           found = true;
           break;
@@ -450,7 +450,7 @@ bool faceSwap(std::vector<MTet4 *> &newTets, MTet4 *t1, int iLocalFace,
   for(int i = 0; i < 4; i++) {
     if(t2->getNeigh(i) && t2->getNeigh(i) != t1) {
       bool found = false;
-      for(unsigned int j = 0; j < outside.size(); j++) {
+      for(std::size_t j = 0; j < outside.size(); j++) {
         if(outside[j] == t2->getNeigh(i)) {
           found = true;
           break;
@@ -506,7 +506,7 @@ void buildVertexCavity_recur(MTet4 *t, MVertex *v, std::vector<MTet4 *> &cavity)
     MTet4 *neigh = t->getNeigh(vFac[iV][i]);
     if(neigh) {
       bool found = false;
-      for(unsigned int j = 0; j < cavity.size(); j++) {
+      for(std::size_t j = 0; j < cavity.size(); j++) {
         if(cavity[j] == neigh) {
           found = true;
           j = cavity.size();
@@ -549,7 +549,7 @@ bool collapseVertex(std::vector<MTet4 *> &newTets, MTet4 *t, int iVertex,
   std::vector<MTet4 *> toUpdate;
   double volume = 0;
   double worst = 1.0;
-  for(unsigned int i = 0; i < cavity_v.size(); i++) {
+  for(std::size_t i = 0; i < cavity_v.size(); i++) {
     bool found = false;
     volume += fabs(cavity_v[i]->tet()->getVolume());
     double q = cavity_v[i]->getQuality();
@@ -574,7 +574,7 @@ bool collapseVertex(std::vector<MTet4 *> &newTets, MTet4 *t, int iVertex,
 
   double worstAfter = 1.0;
   std::vector<double> newQuals(toUpdate.size());
-  for(unsigned int i = 0; i < toUpdate.size(); i++) {
+  for(std::size_t i = 0; i < toUpdate.size(); i++) {
     double vv;
     newQuals[i] = qmTetrahedron::qm(toUpdate[i]->tet(), cr, &vv);
     worstAfter = std::min(worstAfter, newQuals[i]);
@@ -596,7 +596,7 @@ bool collapseVertex(std::vector<MTet4 *> &newTets, MTet4 *t, int iVertex,
   }
   // ok we collapse
   computeNeighboringTetsOfACavity(cavity_v, outside);
-  for(unsigned int i = 0; i < toUpdate.size(); i++) {
+  for(std::size_t i = 0; i < toUpdate.size(); i++) {
     MTetrahedron *tr1 = new MTetrahedron(
       toUpdate[i]->tet()->getVertex(0) == v ? tg :
                                               toUpdate[i]->tet()->getVertex(0),
@@ -612,7 +612,7 @@ bool collapseVertex(std::vector<MTet4 *> &newTets, MTet4 *t, int iVertex,
     outside.push_back(t41);
     newTets.push_back(t41);
   }
-  for(unsigned int i = 0; i < cavity_v.size(); i++)
+  for(std::size_t i = 0; i < cavity_v.size(); i++)
     cavity_v[i]->setDeleted(true);
 
   connectTets(outside);
@@ -636,7 +636,7 @@ bool smoothVertex(MTet4 *t, int iVertex, const qmTetrahedron::Measures &cr)
   double vTot = 0;
   double worst = 1.0;
 
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     double volume = fabs(cavity[i]->tet()->getVolume());
     double q = cavity[i]->getQuality();
     worst = std::min(worst, q);
@@ -674,7 +674,7 @@ bool smoothVertex(MTet4 *t, int iVertex, const qmTetrahedron::Measures &cr)
   t->tet()->getVertex(iVertex)->z() = zcg;
   double worstAfter = 1.0;
   std::vector<double> newQuals(cavity.size());
-  for(unsigned int i = 0; i < cavity.size(); i++) {
+  for(std::size_t i = 0; i < cavity.size(); i++) {
     double volume;
     newQuals[i] = qmTetrahedron::qm(cavity[i]->tet(), cr, &volume);
     volumeAfter += volume;
@@ -689,7 +689,7 @@ bool smoothVertex(MTet4 *t, int iVertex, const qmTetrahedron::Measures &cr)
   }
   else {
     // restore new quality
-    for(unsigned int i = 0; i < cavity.size(); i++) {
+    for(std::size_t i = 0; i < cavity.size(); i++) {
       cavity[i]->setQuality(newQuals[i]);
     }
     return true;
@@ -772,7 +772,7 @@ bool smoothVertexOptimize(MTet4 *t, int iVertex,
 
   double vTot = 0;
 
-  for(unsigned int i = 0; i < vd.ts.size(); i++) {
+  for(std::size_t i = 0; i < vd.ts.size(); i++) {
     double volume = fabs(vd.ts[i]->tet()->getVolume());
     vTot += volume;
   }
@@ -788,7 +788,7 @@ bool smoothVertexOptimize(MTet4 *t, int iVertex,
   t->tet()->getVertex(iVertex)->z() = xyzopti[2];
 
   std::vector<double> newQuals(vd.ts.size());
-  for(unsigned int i = 0; i < vd.ts.size(); i++) {
+  for(std::size_t i = 0; i < vd.ts.size(); i++) {
     double volume;
     newQuals[i] = qmTetrahedron::qm(vd.ts[i]->tet(), cr, &volume);
     volumeAfter += volume;
@@ -802,7 +802,7 @@ bool smoothVertexOptimize(MTet4 *t, int iVertex,
   }
   else {
     // restore new quality
-    for(unsigned int i = 0; i < vd.ts.size(); i++) {
+    for(std::size_t i = 0; i < vd.ts.size(); i++) {
       vd.ts[i]->setQuality(newQuals[i]);
     }
     return true;
@@ -830,7 +830,7 @@ int LaplaceSmoothing(GRegion *gr)
   fillv_(vertexToElement, (gr)->prisms.begin(), (gr)->prisms.end());
   fillv_(vertexToElement, (gr)->pyramids.begin(), (gr)->pyramids.end());
   int N = 0;
-  for(unsigned int i = 0; i < gr->mesh_vertices.size(); i++) {
+  for(std::size_t i = 0; i < gr->mesh_vertices.size(); i++) {
     MVertex *v = gr->mesh_vertices[i];
     std::multimap<MVertex *, MElement *>::iterator it =
       vertexToElement.lower_bound(v);
diff --git a/Mesh/meshGRegionMMG3D.cpp b/Mesh/meshGRegionMMG3D.cpp
index 97c3640f63ca2dc500409cd4d0c39f6ba39b807b..90814141b9437238cea8ae1d0f38f6ee3723dd61 100644
--- a/Mesh/meshGRegionMMG3D.cpp
+++ b/Mesh/meshGRegionMMG3D.cpp
@@ -64,7 +64,7 @@ static void gmsh2MMG(GRegion *gr, MMG_pMesh mmg, MMG_pSol sol,
 {
   mmg->ne = gr->tetrahedra.size();
   std::set<MVertex *> allVertices;
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
     allVertices.insert(gr->tetrahedra[i]->getVertex(0));
     allVertices.insert(gr->tetrahedra[i]->getVertex(1));
     allVertices.insert(gr->tetrahedra[i]->getVertex(2));
@@ -96,7 +96,7 @@ static void gmsh2MMG(GRegion *gr, MMG_pMesh mmg, MMG_pSol sol,
 
   std::map<MVertex *, std::pair<double, int> > LCS;
   for(std::vector<GFace *>::iterator it = f.begin(); it != f.end(); ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       double L = t->maxEdge();
       for(int k = 0; k < 3; k++) {
@@ -184,7 +184,7 @@ static void gmsh2MMG(GRegion *gr, MMG_pMesh mmg, MMG_pSol sol,
 
   k = 1;
   for(std::vector<GFace *>::iterator it = f.begin(); it != f.end(); ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MMG_pTria ptriangle = &mmg->tria[k];
       ptriangle->v[0] =
         gmsh2mmg_num[(*it)->triangles[i]->getVertex(0)->getNum()];
@@ -207,7 +207,7 @@ static void updateSizes(GRegion *gr, MMG_pMesh mmg, MMG_pSol sol,
   std::map<MVertex *, std::pair<double, int> > LCS;
   //  if (CTX::instance()->mesh.lcExtendFromBoundary){
   for(std::vector<GFace *>::iterator it = f.begin(); it != f.end(); ++it) {
-    for(unsigned int i = 0; i < (*it)->triangles.size(); i++) {
+    for(std::size_t i = 0; i < (*it)->triangles.size(); i++) {
       MTriangle *t = (*it)->triangles[i];
       double L = t->maxEdge();
       for(int k = 0; k < 3; k++) {
@@ -307,10 +307,10 @@ void refineMeshMMG(GRegion *gr)
   // MMG_saveMesh(mmg, test);
 
   gr->deleteVertexArrays();
-  for(unsigned int i = 0; i < gr->tetrahedra.size(); ++i)
+  for(std::size_t i = 0; i < gr->tetrahedra.size(); ++i)
     delete gr->tetrahedra[i];
   gr->tetrahedra.clear();
-  for(unsigned int i = 0; i < gr->mesh_vertices.size(); ++i)
+  for(std::size_t i = 0; i < gr->mesh_vertices.size(); ++i)
     delete gr->mesh_vertices[i];
   gr->mesh_vertices.clear();
 
diff --git a/Mesh/meshGRegionNetgen.cpp b/Mesh/meshGRegionNetgen.cpp
index c7fa6903e33b242fbec57986671a180cfd88ade5..ffe130473b908a01e27541c54c90f6b1266eb22d 100644
--- a/Mesh/meshGRegionNetgen.cpp
+++ b/Mesh/meshGRegionNetgen.cpp
@@ -31,7 +31,7 @@ static void getAllBoundingVertices(
 
   while(it != faces.end()) {
     GFace *gf = (*it);
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       for(int k = 0; k < 3; k++)
         if(allBoundingVertices.find(t->getVertex(k)) ==
@@ -66,7 +66,7 @@ static Ng_Mesh *buildNetgenStructure(GRegion *gr, bool importVolumeMesh,
   }
 
   if(importVolumeMesh) {
-    for(unsigned int i = 0; i < gr->mesh_vertices.size(); i++) {
+    for(std::size_t i = 0; i < gr->mesh_vertices.size(); i++) {
       double tmp[3];
       tmp[0] = gr->mesh_vertices[i]->x();
       tmp[1] = gr->mesh_vertices[i]->y();
@@ -79,7 +79,7 @@ static Ng_Mesh *buildNetgenStructure(GRegion *gr, bool importVolumeMesh,
   std::vector<GFace *>::iterator it = faces.begin();
   while(it != faces.end()) {
     GFace *gf = (*it);
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       int tmp[3];
       tmp[0] = t->getVertex(0)->getIndex();
@@ -91,7 +91,7 @@ static Ng_Mesh *buildNetgenStructure(GRegion *gr, bool importVolumeMesh,
   }
 
   if(importVolumeMesh) {
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
       MTetrahedron *t = gr->tetrahedra[i];
       // netgen expects tet with negative volume
       if(t->getVolumeSign() > 0) t->reverse();
@@ -214,7 +214,7 @@ static void meshNormalsPointOutOfTheRegion(GRegion *gr)
   while(it != faces.end()) {
     GFace *gf = (*it);
     int nb_intersect = 0;
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       double X[3] = {t->getVertex(0)->x(), t->getVertex(1)->x(),
                      t->getVertex(2)->x()};
@@ -244,7 +244,7 @@ static void meshNormalsPointOutOfTheRegion(GRegion *gr)
       std::vector<GFace *>::iterator it_b = faces.begin();
       while(it_b != faces.end()) {
         GFace *gf_b = (*it_b);
-        for(unsigned int i_b = 0; i_b < gf_b->triangles.size(); i_b++) {
+        for(std::size_t i_b = 0; i_b < gf_b->triangles.size(); i_b++) {
           MTriangle *t_b = gf_b->triangles[i_b];
           if(t_b != t) {
             double X_b[3] = {t_b->getVertex(0)->x(), t_b->getVertex(1)->x(),
@@ -276,7 +276,7 @@ static void meshNormalsPointOutOfTheRegion(GRegion *gr)
     else {
       if(nb_intersect % 2 == 1) {
         // odd nb of intersections: the normal points inside the region
-        for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+        for(std::size_t i = 0; i < gf->triangles.size(); i++) {
           gf->triangles[i]->reverse();
         }
       }
@@ -289,7 +289,7 @@ static void meshNormalsPointOutOfTheRegion(GRegion *gr)
   //   fprintf(fp, "View \"debug\" {\n");
   //   for(std::list<GFace*>::iterator it = faces.begin(); it != faces.end();
   //   it++)
-  //     for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+  //     for(std::size_t i = 0; i < (*it)->triangles.size(); i++)
   //       (*it)->triangles[i]->writePOS(fp, 1., (*it)->tag());
   //   fprintf(fp, "};\n");
   //   fclose(fp);
diff --git a/Mesh/meshMetric.cpp b/Mesh/meshMetric.cpp
index 749e4cdfd150fcfa76004179c1f4a46740ebe431..3ea95c1f68a5c9e906634afc106ff660aeb363fb 100644
--- a/Mesh/meshMetric.cpp
+++ b/Mesh/meshMetric.cpp
@@ -22,7 +22,7 @@ meshMetric::meshMetric(GModel *gm)
 
   if(_dim == 2) {
     for(GModel::fiter fit = gm->firstFace(); fit != gm->lastFace(); ++fit) {
-      for(unsigned int i = 0; i < (*fit)->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < (*fit)->getNumMeshElements(); i++) {
         MElement *e = (*fit)->getMeshElement(i);
         MElement *copy = e->copy(_vertexMap, newP, newD);
         _elements.push_back(copy);
@@ -31,7 +31,7 @@ meshMetric::meshMetric(GModel *gm)
   }
   else if(_dim == 3) {
     for(GModel::riter rit = gm->firstRegion(); rit != gm->lastRegion(); ++rit) {
-      for(unsigned int i = 0; i < (*rit)->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < (*rit)->getNumMeshElements(); i++) {
         MElement *e = (*rit)->getMeshElement(i);
         MElement *copy = e->copy(_vertexMap, newP, newD);
         _elements.push_back(copy);
@@ -50,7 +50,7 @@ meshMetric::meshMetric(std::vector<MElement *> elements)
   std::map<MElement *, MElement *> newP;
   std::map<MElement *, MElement *> newD;
 
-  for(unsigned int i = 0; i < elements.size(); i++) {
+  for(std::size_t i = 0; i < elements.size(); i++) {
     MElement *e = elements[i];
     MElement *copy = e->copy(_vertexMap, newP, newD);
     _elements.push_back(copy);
@@ -89,7 +89,7 @@ void meshMetric::updateMetrics()
     _nodalSizes[ver] = setOfSizes[0][ver];
 
     if(setOfMetrics.size() > 1)
-      for(unsigned int i = 1; i < setOfMetrics.size(); i++) {
+      for(std::size_t i = 1; i < setOfMetrics.size(); i++) {
         _nodalMetrics[ver] =
           (_dim == 3) ? intersection_conserve_mostaniso(_nodalMetrics[ver],
                                                         setOfMetrics[i][ver]) :
@@ -209,7 +209,7 @@ void meshMetric::exportInfo(const char *fileendname)
 meshMetric::~meshMetric()
 {
   if(_octree) delete _octree;
-  for(unsigned int i = 0; i < _elements.size(); i++) delete _elements[i];
+  for(std::size_t i = 0; i < _elements.size(); i++) delete _elements[i];
 }
 
 void meshMetric::computeValues()
@@ -224,7 +224,7 @@ void meshMetric::computeValues()
 }
 
 // Determines set of vertices to use for least squares
-std::vector<MVertex *> getLSBlob(unsigned int minNbPt, v2t_cont::iterator it,
+std::vector<MVertex *> getLSBlob(std::size_t minNbPt, v2t_cont::iterator it,
                                  v2t_cont &adj)
 {
   //  static const double RADFACT = 3;
@@ -275,15 +275,15 @@ std::vector<MVertex *> getLSBlob(unsigned int minNbPt, v2t_cont::iterator it,
 // a_i0*x^2+a_i1*x*y+a_i2*x*z+a_i3*y^2+a_i4*y*z+a_i5*z^2+a_i6*x+a_i7*y+a_i8*z+a_i9=b_i
 void meshMetric::computeHessian()
 {
-  unsigned int sysDim = (_dim == 2) ? 6 : 10;
-  unsigned int minNbPtBlob = 3 * sysDim;
+  std::size_t sysDim = (_dim == 2) ? 6 : 10;
+  std::size_t minNbPtBlob = 3 * sysDim;
 
   for(v2t_cont::iterator it = _adj.begin(); it != _adj.end(); it++) {
     MVertex *ver = it->first;
     std::vector<MVertex *> vv = getLSBlob(minNbPtBlob, it, _adj);
     fullMatrix<double> A(vv.size(), sysDim), ATA(sysDim, sysDim);
     fullVector<double> b(vv.size()), ATb(sysDim), coeffs(sysDim);
-    for(unsigned int i = 0; i < vv.size(); i++) {
+    for(std::size_t i = 0; i < vv.size(); i++) {
       const double &x = vv[i]->x(), &y = vv[i]->y(), &z = vv[i]->z();
       if(_dim == 2) {
         A(i, 0) = x * x;
@@ -708,7 +708,7 @@ void meshMetric::scaleMetric(int nbElementsTarget, nodalMetricTensor &nmt)
 {
   // compute N
   double N = 0;
-  for(unsigned int i = 0; i < _elements.size(); i++) {
+  for(std::size_t i = 0; i < _elements.size(); i++) {
     MElement *e = _elements[i];
     SMetric3 m1 = nmt[e->getVertex(0)];
     SMetric3 m2 = nmt[e->getVertex(1)];
diff --git a/Mesh/meshPartition.cpp b/Mesh/meshPartition.cpp
index a0204bf8a70c7962935292be070da460db72bdc5..397ef8a457d888f484c8127bc8edb40c31c65b4b 100644
--- a/Mesh/meshPartition.cpp
+++ b/Mesh/meshPartition.cpp
@@ -521,7 +521,7 @@ static int MakeGraph(GModel *const model, Graph &graph, int selectDim)
     model->getEntities(entities);
 
     std::set<MVertex *> vertices;
-    for(unsigned int i = 0; i < entities.size(); i++) {
+    for(std::size_t i = 0; i < entities.size(); i++) {
       if(entities[i]->dim() == selectDim) {
         switch(entities[i]->dim()) {
         case 3: tmp->add(static_cast<GRegion *>(entities[i])); break;
@@ -530,8 +530,8 @@ static int MakeGraph(GModel *const model, Graph &graph, int selectDim)
         case 0: tmp->add(static_cast<GVertex *>(entities[i])); break;
         default: break;
         }
-        for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
-          for(unsigned int k = 0;
+        for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
+          for(std::size_t k = 0;
               k < entities[i]->getMeshElement(j)->getNumVertices(); k++) {
             vertices.insert(entities[i]->getMeshElement(j)->getVertex(k));
           }
@@ -778,8 +778,7 @@ void removeVerticesEntity(ITERATOR it_beg, ITERATOR it_end)
 {
   for(ITERATOR it = it_beg; it != it_end; ++it) {
     for(std::size_t i = 0; i < (*it)->getNumMeshElements(); i++) {
-      for(GModel::size_type j = 0;
-          j < (*it)->getMeshElement(i)->getNumVertices(); j++) {
+      for(std::size_t j = 0; j < (*it)->getMeshElement(i)->getNumVertices(); j++) {
         (*it)->getMeshElement(i)->getVertex(j)->setEntity(0);
       }
     }
@@ -907,7 +906,7 @@ dividedNonConnectedEntities(GModel *const model, int dim,
 
         if(vertex->getNumMeshElements() > 1) {
           ret = true;
-          for(unsigned int i = 0; i < vertex->getNumMeshElements(); i++) {
+          for(std::size_t i = 0; i < vertex->getNumMeshElements(); i++) {
             // Create the new partitionVertex
             partitionVertex *pvertex = new partitionVertex(
               model, ++elementaryNumber, vertex->getPartitions());
@@ -1003,7 +1002,7 @@ dividedNonConnectedEntities(GModel *const model, int dim,
             }
           }
 
-          for(unsigned int i = 0; i < connectedElements.size(); i++) {
+          for(std::size_t i = 0; i < connectedElements.size(); i++) {
             // Create the new partitionEdge
             partitionEdge *pedge = new partitionEdge(
               model, ++elementaryNumber, 0, 0, edge->getPartitions());
@@ -1099,7 +1098,7 @@ dividedNonConnectedEntities(GModel *const model, int dim,
             }
           }
 
-          for(unsigned int i = 0; i < connectedElements.size(); i++) {
+          for(std::size_t i = 0; i < connectedElements.size(); i++) {
             // Create the new partitionFace
             partitionFace *pface = new partitionFace(model, ++elementaryNumber,
                                                      face->getPartitions());
@@ -1196,7 +1195,7 @@ dividedNonConnectedEntities(GModel *const model, int dim,
 
         if(connectedElements.size() > 1) {
           ret = true;
-          for(unsigned int i = 0; i < connectedElements.size(); i++) {
+          for(std::size_t i = 0; i < connectedElements.size(); i++) {
             // Create the new partitionRegion
             partitionRegion *pregion = new partitionRegion(
               model, ++elementaryNumber, region->getPartitions());
@@ -1420,7 +1419,7 @@ static MElement *getReferenceElement(
 
   // Take only the elements having the less partition in commun. For exemple we
   // take (1,2) and (3,8) but not (2,5,9) or (1,4,5,7)
-  for(unsigned int i = 0; i < elementPairs.size(); i++) {
+  for(std::size_t i = 0; i < elementPairs.size(); i++) {
     if(min > elementPairs[i].second.size()) {
       minSizeElementPairs.clear();
       min = elementPairs[i].second.size();
@@ -1434,7 +1433,7 @@ static MElement *getReferenceElement(
   // Check if the element separated different partitions
   if(minSizeElementPairs.size() == elementPairs.size()) {
     bool isEqual = true;
-    for(unsigned int i = 1; i < minSizeElementPairs.size(); i++) {
+    for(std::size_t i = 1; i < minSizeElementPairs.size(); i++) {
       if(minSizeElementPairs[i].second != minSizeElementPairs[0].second) {
         isEqual = false;
         break;
@@ -1445,7 +1444,7 @@ static MElement *getReferenceElement(
 
   while(minSizeElementPairs.size() > 1) {
     min = std::numeric_limits<unsigned int>::max();
-    for(unsigned int i = 0; i < minSizeElementPairs.size(); i++) {
+    for(std::size_t i = 0; i < minSizeElementPairs.size(); i++) {
       // The partition vector is sorted thus we can check only the first element
       if(minSizeElementPairs[i].second.size() == 0)
         return minSizeElementPairs[0].first;
@@ -1454,7 +1453,7 @@ static MElement *getReferenceElement(
       }
     }
 
-    for(unsigned int i = 0; i < minSizeElementPairs.size(); i++) {
+    for(std::size_t i = 0; i < minSizeElementPairs.size(); i++) {
       if(min == minSizeElementPairs[i].second[0]) {
         minSizeElementPairs[i].second.erase(
           minSizeElementPairs[i].second.begin());
@@ -1478,8 +1477,8 @@ static void getPartitionInVector(
   const std::vector<std::pair<MElement *, std::vector<unsigned int> > >
     &boundaryPair)
 {
-  for(unsigned int i = 0; i < boundaryPair.size(); i++) {
-    for(unsigned int j = 0; j < boundaryPair[i].second.size(); j++) {
+  for(std::size_t i = 0; i < boundaryPair.size(); i++) {
+    for(std::size_t j = 0; j < boundaryPair[i].second.size(); j++) {
       if(std::find(partitions.begin(), partitions.end(),
                    boundaryPair[i].second[j]) == partitions.end()) {
         partitions.push_back(boundaryPair[i].second[j]);
@@ -1871,7 +1870,7 @@ static void CreatePartitionTopology(
                                 elementToEntity, numFaceEntity);
       if(pf) {
         std::map<GEntity *, MElement *> boundaryEntityAndRefElement;
-        for(unsigned int i = 0; i < it->second.size(); i++)
+        for(std::size_t i = 0; i < it->second.size(); i++)
           boundaryEntityAndRefElement.insert(std::pair<GEntity *, MElement *>(
             elementToEntity[it->second[i].first], it->second[i].first));
 
@@ -1964,7 +1963,7 @@ static void CreatePartitionTopology(
                                 elementToEntity, numEdgeEntity);
       if(pe) {
         std::map<GEntity *, MElement *> boundaryEntityAndRefElement;
-        for(unsigned int i = 0; i < it->second.size(); i++) {
+        for(std::size_t i = 0; i < it->second.size(); i++) {
           boundaryEntityAndRefElement.insert(std::pair<GEntity *, MElement *>(
             elementToEntity[it->second[i].first], it->second[i].first));
         }
@@ -2051,7 +2050,7 @@ static void CreatePartitionTopology(
                                 elementToEntity, numVertexEntity);
       if(pv) {
         std::map<GEntity *, MElement *> boundaryEntityAndRefElement;
-        for(unsigned int i = 0; i < it->second.size(); i++)
+        for(std::size_t i = 0; i < it->second.size(); i++)
           boundaryEntityAndRefElement.insert(std::pair<GEntity *, MElement *>(
             elementToEntity[it->second[i].first], it->second[i].first));
 
@@ -2365,7 +2364,7 @@ int UnpartitionMesh(GModel *const model)
                        pvertex->points.end());
       }
       else {
-        for(unsigned int j = 0; j < pvertex->points.size(); j++)
+        for(std::size_t j = 0; j < pvertex->points.size(); j++)
           delete pvertex->points[j];
       }
       pvertex->points.clear();
@@ -2385,7 +2384,7 @@ int UnpartitionMesh(GModel *const model)
         assignToParent(verts, pedge, pedge->lines.begin(), pedge->lines.end());
       }
       else {
-        for(unsigned int j = 0; j < pedge->lines.size(); j++)
+        for(std::size_t j = 0; j < pedge->lines.size(); j++)
           delete pedge->lines[j];
       }
       pedge->lines.clear();
@@ -2415,9 +2414,9 @@ int UnpartitionMesh(GModel *const model)
                        pface->quadrangles.end());
       }
       else {
-        for(unsigned int j = 0; j < pface->triangles.size(); j++)
+        for(std::size_t j = 0; j < pface->triangles.size(); j++)
           delete pface->triangles[j];
-        for(unsigned int j = 0; j < pface->quadrangles.size(); j++)
+        for(std::size_t j = 0; j < pface->quadrangles.size(); j++)
           delete pface->quadrangles[j];
       }
       pface->triangles.clear();
@@ -2454,15 +2453,15 @@ int UnpartitionMesh(GModel *const model)
                        pregion->trihedra.end());
       }
       else {
-        for(unsigned int j = 0; j < pregion->tetrahedra.size(); j++)
+        for(std::size_t j = 0; j < pregion->tetrahedra.size(); j++)
           delete pregion->tetrahedra[j];
-        for(unsigned int j = 0; j < pregion->hexahedra.size(); j++)
+        for(std::size_t j = 0; j < pregion->hexahedra.size(); j++)
           delete pregion->hexahedra[j];
-        for(unsigned int j = 0; j < pregion->prisms.size(); j++)
+        for(std::size_t j = 0; j < pregion->prisms.size(); j++)
           delete pregion->prisms[j];
-        for(unsigned int j = 0; j < pregion->pyramids.size(); j++)
+        for(std::size_t j = 0; j < pregion->pyramids.size(); j++)
           delete pregion->pyramids[j];
-        for(unsigned int j = 0; j < pregion->trihedra.size(); j++)
+        for(std::size_t j = 0; j < pregion->trihedra.size(); j++)
           delete pregion->trihedra[j];
       }
       pregion->tetrahedra.clear();
@@ -2575,8 +2574,8 @@ int ConvertOldPartitioningToNewOne(GModel *const model)
   std::set<unsigned int> partitions;
   std::vector<GEntity *> entities;
   model->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
       MElement *e = entities[i]->getMeshElement(i);
       elmToPartition.insert(
         std::pair<MElement *, unsigned int>(e, e->getPartition()));
diff --git a/Mesh/meshRefine.cpp b/Mesh/meshRefine.cpp
index 501c4c4dfca28570ad8f159adc95ad5dd688682b..66c102149fd9346ab3a25d7e1a528c50f14709ce 100644
--- a/Mesh/meshRefine.cpp
+++ b/Mesh/meshRefine.cpp
@@ -84,7 +84,7 @@ static bool setBLData(MElement *el)
 static void Subdivide(GEdge *ge)
 {
   std::vector<MLine *> lines2;
-  for(unsigned int i = 0; i < ge->lines.size(); i++) {
+  for(std::size_t i = 0; i < ge->lines.size(); i++) {
     MLine *l = ge->lines[i];
     if(l->getNumVertices() == 3) {
       lines2.push_back(new MLine(l->getVertex(0), l->getVertex(2)));
@@ -98,7 +98,7 @@ static void Subdivide(GEdge *ge)
   // 2nd order meshing destroyed the ordering of the vertices on the edge
   std::sort(ge->mesh_vertices.begin(), ge->mesh_vertices.end(),
             MVertexLessThanParam());
-  for(unsigned int i = 0; i < ge->mesh_vertices.size(); i++)
+  for(std::size_t i = 0; i < ge->mesh_vertices.size(); i++)
     ge->mesh_vertices[i]->setPolynomialOrder(1);
   ge->deleteVertexArrays();
 }
@@ -108,7 +108,7 @@ static void Subdivide(GFace *gf, bool splitIntoQuads, bool splitIntoHexas,
 {
   if(!splitIntoQuads && !splitIntoHexas) {
     std::vector<MTriangle *> triangles2;
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       if(t->getNumVertices() == 6) {
         triangles2.push_back(
@@ -127,7 +127,7 @@ static void Subdivide(GFace *gf, bool splitIntoQuads, bool splitIntoHexas,
   }
 
   std::vector<MQuadrangle *> quadrangles2;
-  for(unsigned int i = 0; i < gf->quadrangles.size(); i++) {
+  for(std::size_t i = 0; i < gf->quadrangles.size(); i++) {
     MQuadrangle *q = gf->quadrangles[i];
     if(q->getNumVertices() == 9) {
       quadrangles2.push_back(new MQuadrangle(q->getVertex(0), q->getVertex(4),
@@ -143,7 +143,7 @@ static void Subdivide(GFace *gf, bool splitIntoQuads, bool splitIntoHexas,
     delete q;
   }
   if(splitIntoQuads || splitIntoHexas) {
-    for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+    for(std::size_t i = 0; i < gf->triangles.size(); i++) {
       MTriangle *t = gf->triangles[i];
       if(t->getNumVertices() == 6) {
         SPoint2 pt;
@@ -182,7 +182,7 @@ static void Subdivide(GFace *gf, bool splitIntoQuads, bool splitIntoHexas,
   }
   gf->quadrangles = quadrangles2;
 
-  for(unsigned int i = 0; i < gf->mesh_vertices.size(); i++)
+  for(std::size_t i = 0; i < gf->mesh_vertices.size(); i++)
     gf->mesh_vertices[i]->setPolynomialOrder(1);
   gf->deleteVertexArrays();
 }
@@ -193,7 +193,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
   if(!splitIntoHexas) {
     // Split tets into other tets
     std::vector<MTetrahedron *> tetrahedra2;
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
       MTetrahedron *t = gr->tetrahedra[i];
       // FIXME: we should choose the template to maximize the quality
       if(t->getNumVertices() == 10) {
@@ -222,7 +222,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
 
   // Split hexes into other hexes.
   std::vector<MHexahedron *> hexahedra2;
-  for(unsigned int i = 0; i < gr->hexahedra.size(); i++) {
+  for(std::size_t i = 0; i < gr->hexahedra.size(); i++) {
     MHexahedron *h = gr->hexahedra[i];
     if(h->getNumVertices() == 27) {
       hexahedra2.push_back(new MHexahedron(h->getVertex(0), h->getVertex(8),
@@ -260,7 +260,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
 
   // Split tets into other hexes.
   if(splitIntoHexas) {
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
       MTetrahedron *t = gr->tetrahedra[i];
       if(t->getNumVertices() == 10) {
         std::vector<MVertex *> newv;
@@ -304,7 +304,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
     }
     gr->tetrahedra.clear();
 
-    for(unsigned int i = 0; i < gr->prisms.size(); i++) {
+    for(std::size_t i = 0; i < gr->prisms.size(); i++) {
       MPrism *p = gr->prisms[i];
       if(p->getNumVertices() == 18) {
         std::vector<MVertex *> newv;
@@ -354,7 +354,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
     // Yamakawa subdivision of a pyramid into 88 hexes (thanks to Tristan
     // Carrier Baudouin!)
     std::vector<MHexahedron *> dwarfs88;
-    for(unsigned int i = 0; i < gr->pyramids.size(); i++) {
+    for(std::size_t i = 0; i < gr->pyramids.size(); i++) {
       MPyramid *p = gr->pyramids[i];
       if(p->getNumVertices() == 14) {
         subdivide_pyramid(p, gr, faceVertices, dwarfs88);
@@ -366,7 +366,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
   gr->hexahedra = hexahedra2;
 
   std::vector<MPrism *> prisms2;
-  for(unsigned int i = 0; i < gr->prisms.size(); i++) {
+  for(std::size_t i = 0; i < gr->prisms.size(); i++) {
     MPrism *p = gr->prisms[i];
     if(p->getNumVertices() == 18) {
       prisms2.push_back(new MPrism(p->getVertex(0), p->getVertex(6),
@@ -400,7 +400,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
   gr->prisms = prisms2;
 
   std::vector<MPyramid *> pyramids2;
-  for(unsigned int i = 0; i < gr->pyramids.size(); i++) {
+  for(std::size_t i = 0; i < gr->pyramids.size(); i++) {
     if(splitIntoHexas) {
       Msg::Error("Full hexahedron subdivision is not implemented for pyramids");
       return;
@@ -451,7 +451,7 @@ static void Subdivide(GRegion *gr, bool splitIntoHexas,
   }
   gr->pyramids = pyramids2;
 
-  for(unsigned int i = 0; i < gr->mesh_vertices.size(); i++)
+  for(std::size_t i = 0; i < gr->mesh_vertices.size(); i++)
     gr->mesh_vertices[i]->setPolynomialOrder(1);
   gr->deleteVertexArrays();
 }
@@ -497,10 +497,10 @@ void BarycentricRefineMesh(GModel *m)
   if(m->getNumRegions() == 0) {
     for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) {
       GFace *gf = *it;
-      unsigned int numt = gf->triangles.size();
+      std::size_t numt = gf->triangles.size();
       if(!numt) continue;
       std::vector<MTriangle *> triangles2(3 * numt);
-      for(unsigned int i = 0; i < numt; i++) {
+      for(std::size_t i = 0; i < numt; i++) {
         MTriangle *t = gf->triangles[i];
         SPoint3 bary = t->barycenter();
         // FIXME: create an MFaceVertex (with correct parametric coordinates)?
@@ -520,10 +520,10 @@ void BarycentricRefineMesh(GModel *m)
   else {
     for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it) {
       GRegion *gr = *it;
-      unsigned int numt = gr->tetrahedra.size();
+      std::size_t numt = gr->tetrahedra.size();
       if(!numt) continue;
       std::vector<MTetrahedron *> tetrahedra2(4 * numt);
-      for(unsigned int i = 0; i < numt; i++) {
+      for(std::size_t i = 0; i < numt; i++) {
         MTetrahedron *t = gr->tetrahedra[i];
         SPoint3 bary = t->barycenter();
         // FIXME: create an MFaceVertex (with correct parametric coordinates)?
diff --git a/Mesh/meshRelocateVertex.cpp b/Mesh/meshRelocateVertex.cpp
index ec8bd2ecd6d4568055a67a42009dba35475338c6..0a2f9437934b319e1a04dade8d3bfa69399e140c 100644
--- a/Mesh/meshRelocateVertex.cpp
+++ b/Mesh/meshRelocateVertex.cpp
@@ -28,7 +28,7 @@ static double objective_function(double xi, MVertex *ver, double xTarget,
   ver->y() = (1. - xi) * ver->y() + xi * yTarget;
   ver->z() = (1. - xi) * ver->z() + xi * zTarget;
   double minQual = 1.0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     if(lt[i]->getNumVertices() == 4) {
       //      if (onlytet)
       double V;
@@ -66,7 +66,7 @@ static double objective_function(double xi, MVertex *ver, GFace *gf,
   ver->y() = pp.y();
   ver->z() = pp.z();
   double minQual = 1.0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     if(lt[i]->getNumVertices() == 4)
       minQual = std::min((lt[i]->etaShapeMeasure()), minQual);
     else
@@ -94,7 +94,7 @@ static double objective_function(double const xi, MVertex *const ver,
   ver->y() = pp.y();
   ver->z() = pp.z();
   double minQual = 1.0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     if(lt[i]->getNumVertices() == 4)
       minQual = std::min(lt[i]->etaShapeMeasure(), minQual);
     else
@@ -255,7 +255,7 @@ static void _relocateVertexOfPyramid(MVertex *ver,
   int N = 0;
   MElement *pyramid = NULL;
 
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     double XCG = 0.0, YCG = 0.0, ZCG = 0.0;
     if(lt[i]->getNumVertices() == 5)
       pyramid = lt[i];
@@ -306,7 +306,7 @@ static void _relocateVertexGolden(MVertex *ver,
   if(ver->onWhat()->dim() != 3) return;
   double x = 0.0, y = 0.0, z = 0.0;
   int N = 0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     // TODO C++11 use std::accumulate instead
     double XCG = 0.0, YCG = 0.0, ZCG = 0.0;
     for(std::size_t j = 0; j < lt[i]->getNumVertices(); j++) {
@@ -344,7 +344,7 @@ static double _relocateVertex2(GFace *gf, MVertex *ver,
 {
   SPoint3 p1(0, 0, 0);
   std::size_t counter = 0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     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());
@@ -381,7 +381,7 @@ static double _relocateVertex(GFace *gf, MVertex *ver,
   }
 
   std::size_t counter = 0;
-  for(unsigned int i = 0; i < lt.size(); i++) {
+  for(std::size_t i = 0; i < lt.size(); i++) {
     for(std::size_t j = 0; j < lt[i]->getNumVertices(); j++) {
       MVertex *v = lt[i]->getVertex(j);
       SPoint2 pp;
@@ -521,14 +521,14 @@ void RelocateVerticesOfPyramids(GRegion *region, int niter, double tol)
 void RelocateVerticesOfPyramids(std::vector<GRegion *> &regions, int niter,
                                 double tol)
 {
-  for(unsigned int k = 0; k < regions.size(); k++) {
+  for(std::size_t k = 0; k < regions.size(); k++) {
     RelocateVerticesOfPyramids(regions[k], niter, tol);
   }
 }
 
 void RelocateVertices(std::vector<GRegion *> &regions, int niter, double tol)
 {
-  for(unsigned int k = 0; k < regions.size(); k++) {
+  for(std::size_t k = 0; k < regions.size(); k++) {
     RelocateVertices(regions[k], niter, tol);
   }
 }
diff --git a/Mesh/qualityMeasuresJacobian.cpp b/Mesh/qualityMeasuresJacobian.cpp
index 0c327163a01b87fdf0198a319e6bc246e6db263e..0ea365882faef3767efad31fe24314cd6582f35d 100644
--- a/Mesh/qualityMeasuresJacobian.cpp
+++ b/Mesh/qualityMeasuresJacobian.cpp
@@ -195,7 +195,7 @@ namespace jacobianBasedQuality {
     min = domains[0]->minB();
     max = domains[0]->maxB();
     delete domains[0];
-    for(unsigned int i = 1; i < domains.size(); ++i) {
+    for(std::size_t i = 1; i < domains.size(); ++i) {
       min = std::min(min, domains[i]->minB());
       max = std::max(max, domains[i]->maxB());
       delete domains[i];
@@ -986,7 +986,7 @@ namespace jacobianBasedQuality {
       cd->getSubCoeff(subs);
       delete cd;
 
-      for(unsigned int i = 0; i < subs.size(); i++) {
+      for(std::size_t i = 0; i < subs.size(); i++) {
         minL = std::min(minL, subs[i]->minL());
         maxL = std::max(maxL, subs[i]->maxL());
         domains.push_back(subs[i]);
@@ -1007,7 +1007,7 @@ namespace jacobianBasedQuality {
     }
     double minL = domains[0]->minL();
     double maxL = domains[0]->maxL();
-    for(unsigned int i = 1; i < domains.size(); ++i) {
+    for(std::size_t i = 1; i < domains.size(); ++i) {
       minL = std::min(minL, domains[i]->minL());
       maxL = std::max(maxL, domains[i]->maxL());
     }
@@ -1021,7 +1021,7 @@ namespace jacobianBasedQuality {
     double minB = domains[0]->minB();
     double minL = domains[0]->minL();
     delete domains[0];
-    for(unsigned int i = 1; i < domains.size(); ++i) {
+    for(std::size_t i = 1; i < domains.size(); ++i) {
       minB = std::min(minB, domains[i]->minB());
       minL = std::min(minL, domains[i]->minL());
       delete domains[i];
diff --git a/Numeric/ConjugateGradients.cpp b/Numeric/ConjugateGradients.cpp
index 6c252693ecf11a6acd382618df4c5ef1fcaa2eee..c05855fb54b9a9361e1ad4a6b17658d129a06670 100644
--- a/Numeric/ConjugateGradients.cpp
+++ b/Numeric/ConjugateGradients.cpp
@@ -15,12 +15,12 @@
 static double _norm(std::vector<double> &x)
 {
   double n = 0.0;
-  for(unsigned int i = 0; i < x.size(); i++) n += x[i] * x[i];
+  for(std::size_t i = 0; i < x.size(); i++) n += x[i] * x[i];
   return sqrt(n);
 }
 static void scale(std::vector<double> &x, double s)
 {
-  for(unsigned int i = 0; i < x.size(); i++) x[i] *= s;
+  for(std::size_t i = 0; i < x.size(); i++) x[i] *= s;
 }
 
 static void gmshLineSearch(void (*func)(std::vector<double> &x, double &Obj,
diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp
index 74ef98503f2b759f3c760ff1361fa3fb4f0a2821..8aa1e060dd7ad4256086495ce1cf35c8bbdedb12 100644
--- a/Numeric/Numeric.cpp
+++ b/Numeric/Numeric.cpp
@@ -842,7 +842,7 @@ void signedDistancesPointsTriangle(std::vector<double> &distances,
   closePts.clear();
   closePts.resize(pts_size);
 
-  for(unsigned int i = 0; i < pts_size; ++i) distances[i] = 1.e22;
+  for(std::size_t i = 0; i < pts_size; ++i) distances[i] = 1.e22;
 
   SVector3 t1 = p2 - p1;
   SVector3 t2 = p3 - p1;
@@ -859,7 +859,7 @@ void signedDistancesPointsTriangle(std::vector<double> &distances,
   double det = inv3x3(mat, inv);
   if(det == 0.0) return;
 
-  for(unsigned int i = 0; i < pts.size(); i++) {
+  for(std::size_t i = 0; i < pts.size(); i++) {
     double d;
     SPoint3 closePt;
     const SPoint3 &p = pts[i];
@@ -940,7 +940,7 @@ void signedDistancesPointsLine(std::vector<double> &distances,
   distances.resize(pts.size());
   closePts.clear();
   closePts.resize(pts.size());
-  for(unsigned int i = 0; i < pts.size(); i++) {
+  for(std::size_t i = 0; i < pts.size(); i++) {
     double d;
     SPoint3 closePt;
     const SPoint3 &p = pts[i];
@@ -1140,7 +1140,7 @@ void signedDistancesPointsEllipsePoint(std::vector<double> &distances,
   closePts.clear();
   closePts.resize(pts.size());
   double d;
-  for(unsigned int i = 0; i < pts.size(); i++) {
+  for(std::size_t i = 0; i < pts.size(); i++) {
     SPoint3 closePt;
     const SPoint3 &p = pts[i];
     signedDistancePointLine(p1, p2, p, d, closePt);
@@ -1173,7 +1173,7 @@ void signedDistancesPointsEllipseLine(
   closePts.clear();
   closePts.resize(pts.size());
   double d;
-  for(unsigned int i = 0; i < pts.size(); i++) {
+  for(std::size_t i = 0; i < pts.size(); i++) {
     SPoint3 closePt;
     const SPoint3 &p = pts[i];
     signedDistancePointLine(p1, p2, p, d, closePt);
@@ -1539,7 +1539,7 @@ void projectPointsToPlane(const std::vector<SPoint3> &pts,
                           const mean_plane &meanPlane)
 {
   ptsProj.resize(pts.size());
-  for(unsigned int i = 0; i < pts.size(); i++) {
+  for(std::size_t i = 0; i < pts.size(); i++) {
     projectPointToPlane(pts[i], ptsProj[i], meanPlane);
   }
 }
@@ -1554,7 +1554,7 @@ void transformPointsIntoOrthoBasis(const std::vector<SPoint3> &ptsProj,
   SVector3 tangent, binormal;
   buildOrthoBasis(normal, tangent, binormal);
 
-  for(unsigned int i = 0; i < ptsProj.size(); i++) {
+  for(std::size_t i = 0; i < ptsProj.size(); i++) {
     SVector3 pp(ptsProj[i][0] - ptCG[0], ptsProj[i][1] - ptCG[1],
                 ptsProj[i][2] - ptCG[2]);
     pointsUV[i][0] = dot(pp, tangent);
diff --git a/Numeric/bezierBasis.cpp b/Numeric/bezierBasis.cpp
index 2af1ba3b04eab5845e587ad8ddd08735cd7224e1..64ad1dda1c77626cdec5a1b2de43d961149d534f 100644
--- a/Numeric/bezierBasis.cpp
+++ b/Numeric/bezierBasis.cpp
@@ -398,7 +398,7 @@ namespace {
     fullMatrix<double> intermediate2(nbPts, nbPts);
     fullMatrix<double> subDivisor(nbSubPts, nbPts);
 
-    for(unsigned int i = 0; i < subPoints.size(); i++) {
+    for(std::size_t i = 0; i < subPoints.size(); i++) {
       fullMatrix<double> intermediate1 =
         generateBez2LagMatrix(exponents, subPoints[i], order, dimSimplex);
       lag2Bez.mult(intermediate1, intermediate2);
@@ -427,7 +427,7 @@ namespace {
     fullMatrix<double> intermediate2(nbPts, nbPts);
     fullMatrix<double> subDivisor(nbSubPts, nbPts);
 
-    for(unsigned int i = 0; i < subPoints.size(); i++) {
+    for(std::size_t i = 0; i < subPoints.size(); i++) {
       fullMatrix<double> intermediate1 =
         generateBez2LagMatrixPyramid(exponents, subPoints[i], pyr, nij, nk);
       lag2Bez.mult(intermediate1, intermediate2);
@@ -973,16 +973,16 @@ void bezierBasisRaiser::computeCoeff(const fullVector<double> &coeffA,
   coeffSquare.resize(_raiser2.size(), true);
 
   if(&coeffA == &coeffB) {
-    for(unsigned int ind = 0; ind < _raiser2.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser2[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser2.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser2[ind].size(); ++l) {
         _Data &d = _raiser2[ind][l];
         coeffSquare(ind) += d.val * coeffA(d.i) * coeffB(d.j);
       }
     }
   }
   else {
-    for(unsigned int ind = 0; ind < _raiser2.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser2[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser2.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser2[ind].size(); ++l) {
         _Data &d = _raiser2[ind][l];
         coeffSquare(ind) +=
           d.val / 2 * (coeffA(d.i) * coeffB(d.j) + coeffA(d.j) * coeffB(d.i));
@@ -999,16 +999,16 @@ void bezierBasisRaiser::computeCoeff(const fullVector<double> &coeffA,
   coeffCubic.resize(_raiser3.size(), true);
 
   if(&coeffA == &coeffB && &coeffB == &coeffC) {
-    for(unsigned int ind = 0; ind < _raiser3.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser3[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser3.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser3[ind].size(); ++l) {
         _Data &d = _raiser3[ind][l];
         coeffCubic(ind) += d.val * coeffA(d.i) * coeffB(d.j) * coeffC(d.k);
       }
     }
   }
   else if(&coeffA != &coeffB && &coeffB != &coeffC) {
-    for(unsigned int ind = 0; ind < _raiser3.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser3[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser3.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser3[ind].size(); ++l) {
         _Data &d = _raiser3[ind][l];
         coeffCubic(ind) += d.val / 6 *
                            (coeffA(d.i) * coeffB(d.j) * coeffC(d.k) +
@@ -1033,8 +1033,8 @@ void bezierBasisRaiser::computeCoeff(const fullMatrix<double> &coeffA,
   coeffSquare.resize(_raiser2.size(), coeffA.size2(), true);
 
   if(&coeffA == &coeffB) {
-    for(unsigned int ind = 0; ind < _raiser2.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser2[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser2.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser2[ind].size(); ++l) {
         _Data &d = _raiser2[ind][l];
         for(int ind2 = 0; ind2 < coeffA.size2(); ++ind2) {
           coeffSquare(ind, ind2) +=
@@ -1044,8 +1044,8 @@ void bezierBasisRaiser::computeCoeff(const fullMatrix<double> &coeffA,
     }
   }
   else {
-    for(unsigned int ind = 0; ind < _raiser2.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser2[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser2.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser2[ind].size(); ++l) {
         _Data &d = _raiser2[ind][l];
         double val = d.val / 2;
         for(int ind2 = 0; ind2 < coeffA.size2(); ++ind2) {
@@ -1066,8 +1066,8 @@ void bezierBasisRaiser::computeCoeff(const fullVector<double> &coeffA,
   coeffCubic.resize(_raiser3.size(), coeffB.size2(), true);
 
   if(&coeffB == &coeffC) {
-    for(unsigned int ind = 0; ind < _raiser3.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser3[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser3.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser3[ind].size(); ++l) {
         _Data &d = _raiser3[ind][l];
         double val = d.val / 3;
         for(int ind2 = 0; ind2 < coeffB.size2(); ++ind2) {
@@ -1080,8 +1080,8 @@ void bezierBasisRaiser::computeCoeff(const fullVector<double> &coeffA,
     }
   }
   else {
-    for(unsigned int ind = 0; ind < _raiser3.size(); ++ind) {
-      for(unsigned int l = 0; l < _raiser3[ind].size(); ++l) {
+    for(std::size_t ind = 0; ind < _raiser3.size(); ++ind) {
+      for(std::size_t l = 0; l < _raiser3[ind].size(); ++l) {
         _Data &d = _raiser3[ind][l];
         double val = d.val / 6;
         for(int ind2 = 0; ind2 < coeffB.size2(); ++ind2) {
diff --git a/Numeric/hausdorffDistance.cpp b/Numeric/hausdorffDistance.cpp
index 5b87aa23f6d653b2b3de3385772bf3f7bd3315f1..2fe68424b92ed8b0f62b2b58bad8bfa5117ecafd 100644
--- a/Numeric/hausdorffDistance.cpp
+++ b/Numeric/hausdorffDistance.cpp
@@ -51,7 +51,7 @@ double closestPoint(const std::vector<SPoint3> &P, const SPoint3 &p,
                     SPoint3 &result)
 {
   double closestDistance = 1.e22;
-  for(unsigned int i = 1; i < P.size(); i++) {
+  for(std::size_t i = 1; i < P.size(); i++) {
     SPoint3 q = closestPoint(P[i - 1], P[i], p);
     const double pq = p.distance(q);
     if(pq < closestDistance) {
@@ -71,7 +71,7 @@ double oneSidedHausdorffDistance(const std::vector<SPoint3> &P,
   const double hausdorffDistance = 0.0;
 
   // first test the points
-  for(unsigned int i = 0; i < P.size(); i++) {
+  for(std::size_t i = 0; i < P.size(); i++) {
     SPoint3 result;
     double d = closestPoint(Q, P[i], result);
     if(d > hausdorffDistance) {
@@ -82,7 +82,7 @@ double oneSidedHausdorffDistance(const std::vector<SPoint3> &P,
   }
   // compute angle bissectors intersections
   std::vector<SPoint3> intersections;
-  for(unsigned int i = 1; i < Q.size() - 1; i++) {
+  for(std::size_t i = 1; i < Q.size() - 1; i++) {
     SPoint3 a = Q[i - 1];
     SPoint3 b = Q[i];
     SPoint3 c = Q[i + 1];
@@ -99,14 +99,14 @@ double oneSidedHausdorffDistance(const std::vector<SPoint3> &P,
       n = crossprod(b, bissector);
       n.normalize();
     }
-    for(unsigned int i = 1; i < P.size(); i++) {
+    for(std::size_t i = 1; i < P.size(); i++) {
       SPoint3 result;
       const double t = intersect(b, n, P[i - 1], P[i], result);
       if(t >= 0 && t <= 1) intersections.push_back(result);
     }
   }
 
-  for(unsigned int i = 0; i < intersections.size(); i++) {
+  for(std::size_t i = 0; i < intersections.size(); i++) {
     SPoint3 result;
     double d = closestPoint(Q, intersections[i], result);
     if(d > hausdorffDistance) {
diff --git a/Numeric/mathEvaluator.cpp b/Numeric/mathEvaluator.cpp
index 47ed46a065ae59d7f24d81bbc9897f0c5bff4ac1..7d6e5e87d9a971d6742e4c6eccd83dfcf7c87a1d 100644
--- a/Numeric/mathEvaluator.cpp
+++ b/Numeric/mathEvaluator.cpp
@@ -15,9 +15,9 @@ mathEvaluator::mathEvaluator(std::vector<std::string> &expressions,
   _expressions.resize(expressions.size());
   _variables.resize(variables.size(), 0.);
   bool error = false;
-  for(unsigned int i = 0; i < expressions.size(); i++) {
+  for(std::size_t i = 0; i < expressions.size(); i++) {
     _expressions[i] = new smlib::mathex();
-    for(unsigned int j = 0; j < variables.size(); j++)
+    for(std::size_t j = 0; j < variables.size(); j++)
       _expressions[i]->addvar(variables[j], &_variables[j]);
     try {
       _expressions[i]->expression(expressions[i]);
@@ -35,7 +35,7 @@ mathEvaluator::mathEvaluator(std::vector<std::string> &expressions,
     }
   }
   if(error) {
-    for(unsigned int i = 0; i < _expressions.size(); i++)
+    for(std::size_t i = 0; i < _expressions.size(); i++)
       delete(_expressions[i]);
     _expressions.clear();
     expressions.clear();
@@ -44,7 +44,7 @@ mathEvaluator::mathEvaluator(std::vector<std::string> &expressions,
 
 mathEvaluator::~mathEvaluator()
 {
-  for(unsigned int i = 0; i < _expressions.size(); i++) delete(_expressions[i]);
+  for(std::size_t i = 0; i < _expressions.size(); i++) delete(_expressions[i]);
 }
 
 bool mathEvaluator::eval(const std::vector<double> &values,
@@ -62,15 +62,15 @@ bool mathEvaluator::eval(const std::vector<double> &values,
     return false;
   }
 
-  for(unsigned int i = 0; i < values.size(); i++) _variables[i] = values[i];
+  for(std::size_t i = 0; i < values.size(); i++) _variables[i] = values[i];
 
-  for(unsigned int i = 0; i < _expressions.size(); i++) {
+  for(std::size_t i = 0; i < _expressions.size(); i++) {
     try {
       res[i] = _expressions[i]->eval();
     } catch(smlib::mathex::error &e) {
       Msg::Error(e.what());
       double eps = 1.e-20;
-      for(unsigned int j = 0; j < values.size(); j++)
+      for(std::size_t j = 0; j < values.size(); j++)
         _variables[j] = values[j] + eps;
       try {
         res[i] = _expressions[i]->eval();
diff --git a/Numeric/nodalBasis.cpp b/Numeric/nodalBasis.cpp
index e291949bd1352fb4835bfd528001e686cfc346e3..73fd92c64f166dbca1f07f9237e7eebb31e8e4e1 100644
--- a/Numeric/nodalBasis.cpp
+++ b/Numeric/nodalBasis.cpp
@@ -302,7 +302,7 @@ namespace ClosureGen {
       nodes2edges[edges[i]][edges[i + 1]] = i;
       nodes2edges[edges[i + 1]][edges[i]] = i + 1;
     }
-    for(unsigned int iClosure = 0; iClosure < closureFull.size(); iClosure++) {
+    for(std::size_t iClosure = 0; iClosure < closureFull.size(); iClosure++) {
       std::vector<int> &cl = closureFull[iClosure];
       for(int iEdge = 0; edges[iEdge] >= 0; iEdge += 2) {
         if(cl.empty()) continue;
@@ -353,12 +353,12 @@ namespace ClosureGen {
     // Mapping for the p1 nodes
     nodalBasis::clCont closure;
     generateFaceClosureTet(closure, 1);
-    for(unsigned int i = 0; i < closureFull.size(); i++) {
+    for(std::size_t i = 0; i < closureFull.size(); i++) {
       std::vector<int> &clFull = closureFull[i];
       std::vector<int> &cl = closure[i];
       clFull.resize(4, -1);
       closureRef[i] = 0;
-      for(unsigned int j = 0; j < cl.size(); j++) clFull[closure[0][j]] = cl[j];
+      for(std::size_t j = 0; j < cl.size(); j++) clFull[closure[0][j]] = cl[j];
       for(int j = 0; j < 4; j++)
         if(clFull[j] == -1)
           clFull[j] = (6 - clFull[(j + 1) % 4] - clFull[(j + 2) % 4] -
@@ -380,7 +380,7 @@ namespace ClosureGen {
       generate2dEdgeClosureFull(closureTriangles, closureTrianglesRef,
                                 order - 3, 3, false);
     addEdgeNodes(closureFull, edges, order);
-    for(unsigned int iClosure = 0; iClosure < closureFull.size(); iClosure++) {
+    for(std::size_t iClosure = 0; iClosure < closureFull.size(); iClosure++) {
       // faces
       std::vector<int> &cl = closureFull[iClosure];
       if(order >= 3) {
@@ -404,9 +404,9 @@ namespace ClosureGen {
       std::vector<int> fakeClosureRef;
       generateFaceClosureTetFull(insideClosure, fakeClosureRef, order - 4,
                                  false);
-      for(unsigned int i = 0; i < closureFull.size(); i++) {
-        unsigned int shift = closureFull[i].size();
-        for(unsigned int j = 0; j < insideClosure[i].size(); j++)
+      for(std::size_t i = 0; i < closureFull.size(); i++) {
+        std::size_t shift = closureFull[i].size();
+        for(std::size_t j = 0; j < insideClosure[i].size(); j++)
           closureFull[i].push_back(insideClosure[i][j] + shift);
       }
     }
@@ -445,7 +445,7 @@ namespace ClosureGen {
           nodalBasis::closure cl;
           cl.type = fsFace.type;
           cl.resize(fsFace.points.size1());
-          for(unsigned int iNode = 0; iNode < cl.size(); ++iNode) {
+          for(std::size_t iNode = 0; iNode < cl.size(); ++iNode) {
             double u, v, w;
             rotateHex(iFace, iRotate, iSign, fsFace.points(iNode, 0),
                       fsFace.points(iNode, 1), u, v, w);
@@ -642,7 +642,7 @@ namespace ClosureGen {
     closureRef.resize(40);
     generateFaceClosurePrism(closure, 1);
     int ref3 = -1, ref4a = -1, ref4b = -1;
-    for(unsigned int i = 0; i < closure.size(); i++) {
+    for(std::size_t i = 0; i < closure.size(); i++) {
       std::vector<int> &clFull = closureFull[i];
       std::vector<int> &cl = closure[i];
       if(cl.size() == 0) continue;
@@ -651,7 +651,7 @@ namespace ClosureGen {
         cl.size() == 3 ? ref3 : (cl[0] / 3 + cl[1] / 3) % 2 ? ref4b : ref4a;
       if(ref == -1) ref = i;
       closureRef[i] = ref;
-      for(unsigned int j = 0; j < cl.size(); j++)
+      for(std::size_t j = 0; j < cl.size(); j++)
         clFull[closure[ref][j]] = cl[j];
       for(int j = 0; j < 6; j++) {
         if(clFull[j] == -1) {
@@ -681,7 +681,7 @@ namespace ClosureGen {
         }
         nodeSum2Face[nodeSum] = iFace;
       }
-      for(unsigned int i = 0; i < closureFull.size(); i++) {
+      for(std::size_t i = 0; i < closureFull.size(); i++) {
         if(closureFull[i].empty()) continue;
         for(int iFace = 0; iFace < numFaces; iFace++) {
           int nodeSum = 0;
@@ -724,7 +724,7 @@ namespace ClosureGen {
           nodalBasis::closure cl;
           cl.type = fsFace->type;
           cl.resize(fsFace->points.size1());
-          for(unsigned int iNode = 0; iNode < cl.size(); ++iNode) {
+          for(std::size_t iNode = 0; iNode < cl.size(); ++iNode) {
             double u, v, w;
             rotatePyr(iFace, iRotate, iSign, fsFace->points(iNode, 0),
                       fsFace->points(iNode, 1), u, v, w);
diff --git a/Numeric/polynomialBasis.cpp b/Numeric/polynomialBasis.cpp
index c4dbcd92ea7851a1a4a63bb839e9466281815b6f..eec5010559fb3c9a6bb3ccd7c96260847b79a957 100644
--- a/Numeric/polynomialBasis.cpp
+++ b/Numeric/polynomialBasis.cpp
@@ -53,17 +53,17 @@ namespace {
                            std::vector<int> &closureRef,
                            polynomialBasis::clCont &closures)
   {
-    for(unsigned int i = 0; i < closures.size(); i++){
+    for(std::size_t i = 0; i < closures.size(); i++){
       printf("%3i  (%2i): ", i, closureRef[i]);
       if(closureRef[i]==-1){
         printf("\n");
         continue;
       }
-      for(unsigned int j = 0; j < fullClosure[i].size(); j++){
+      for(std::size_t j = 0; j < fullClosure[i].size(); j++){
         printf("%2i ", fullClosure[i][j]);
       }
       printf ("  --  ");
-      for(unsigned int j = 0; j < closures[closureRef[i]].size(); j++){
+      for(std::size_t j = 0; j < closures[closureRef[i]].size(); j++){
         std::string equalSign = "-";
         if(fullClosure[i][closures[closureRef[i]][j]] != closures[i][j])
           equalSign = "#";
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 029607fc9740bfa323ec6990bc532d301d931e2c..ee8177a12ecf590fd8da2444308006806783573f 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -602,7 +602,7 @@ Element :
 #if defined(HAVE_POST)
       if(ViewValueList){
 	for(int i = 0; i < 3; i++)
-	  for(unsigned int j = 0; j < ViewCoord.size() / 3; j++)
+	  for(std::size_t j = 0; j < ViewCoord.size() / 3; j++)
 	    ViewValueList->push_back(ViewCoord[3 * j + i]);
       }
 #endif
@@ -1767,7 +1767,7 @@ Shape :
         int degree = (int)$10;
         std::vector<double> weights, knots;
         std::vector<int> mults;
-        for(unsigned int i = 0; i < seqknots.size(); i++){
+        for(std::size_t i = 0; i < seqknots.size(); i++){
           if(!i || (i && fabs(seqknots[i] - seqknots[i - 1]) > 1e-12)){
             knots.push_back(seqknots[i]);
             mults.push_back(1);
@@ -1851,7 +1851,7 @@ Shape :
           std::vector<int> points, surfaces, continuity;
           if(constraints.size() >= 3 && constraints[0] < 0){
             // {-1, type, ent, type, ent, ...}
-            for(unsigned int i = 2; i < constraints.size(); i+=2){
+            for(std::size_t i = 2; i < constraints.size(); i+=2){
               int type = constraints[i - 1];
               if(type == 0){
                 points.push_back(constraints[i]);
@@ -2143,7 +2143,7 @@ Shape :
           int in = (int)param[0];
           double offset = param[1];
           std::vector<int> exclude;
-          for(unsigned int i = 2; i < param.size(); i++)
+          for(std::size_t i = 2; i < param.size(); i++)
             exclude.push_back(param[i]);
           std::vector<std::pair<int, int> > outDimTags;
           r = GModel::current()->getOCCInternals()->addThickSolid
@@ -2476,7 +2476,7 @@ Transform :
         std::vector<int> in, out; ListOfDouble2Vector($4, in);
         r = GModel::current()->getGEOInternals()->intersectCurvesWithSurface
           (in, (int)$8, out);
-        for(unsigned int i = 0; i < out.size(); i++){
+        for(std::size_t i = 0; i < out.size(); i++){
           Shape s;
           s.Type = MSH_POINT;
           s.Num = out[i];
@@ -2498,7 +2498,7 @@ Transform :
         std::vector<int> vertices, curves; ListOfDouble2Vector($7, vertices);
         r = GModel::current()->getGEOInternals()->splitCurve
           ((int)$4, vertices, curves);
-        for(unsigned int i = 0; i < curves.size(); i++){
+        for(std::size_t i = 0; i < curves.size(); i++){
           Shape s;
           s.Type = MSH_SEGM_LINE;
           s.Num = curves[i];
@@ -3126,11 +3126,11 @@ SetPartition :
     {
       std::vector<std::pair<int, int> > dimTags;
       ListOfShapes2VectorOfPairs($4, dimTags);
-      for(unsigned int i = 0; i < dimTags.size(); i++){
+      for(std::size_t i = 0; i < dimTags.size(); i++){
         GEntity *ge = GModel::current()->getEntityByTag
           (dimTags[i].first, dimTags[i].second);
         if(ge){
-          for(unsigned int j = 0; j < ge->getNumMeshElements(); j++)
+          for(std::size_t j = 0; j < ge->getNumMeshElements(); j++)
             ge->getMeshElement(j)->setPartition((int)$2);
         }
       }
@@ -3438,7 +3438,7 @@ Command :
     {
 #if defined(HAVE_OPENGL)
      CTX::instance()->mesh.changed = ENT_ALL;
-     for(unsigned int index = 0; index < PView::list.size(); index++)
+     for(std::size_t index = 0; index < PView::list.size(); index++)
        PView::list[index]->setChanged(true);
 #endif
     }
@@ -4347,7 +4347,7 @@ Constraints :
             gf->meshAttributes.method = MESH_TRANSFINITE;
             gf->meshAttributes.transfiniteArrangement = $5;
             if(corners.empty() || corners.size() == 3 || corners.size() == 4){
-              for(unsigned int j = 0; j < corners.size(); j++){
+              for(std::size_t j = 0; j < corners.size(); j++){
                 GVertex *gv = GModel::current()->getVertexByTag(corners[j]);
                 if(gv)
                   gf->meshAttributes.corners.push_back(gv);
@@ -4389,7 +4389,7 @@ Constraints :
           if(gr){
             gr->meshAttributes.method = MESH_TRANSFINITE;
             if(corners.empty() || corners.size() == 6 || corners.size() == 8){
-              for(unsigned int i = 0; i < corners.size(); i++){
+              for(std::size_t i = 0; i < corners.size(); i++){
                 GVertex *gv = GModel::current()->getVertexByTag(corners[i]);
                 if(gv)
                   gr->meshAttributes.corners.push_back(gv);
@@ -5691,7 +5691,7 @@ FExpr_Multi :
 	yymsg(0, "Unknown variable '%s'", $1);
       else{
         gmsh_yysymbol &s(gmsh_yysymbols[$1]);
-	for(unsigned int i = 0; i < s.value.size(); i++)
+	for(std::size_t i = 0; i < s.value.size(); i++)
 	  List_Add($$, &s.value[i]);
       }
       Free($1);
@@ -5712,7 +5712,7 @@ FExpr_Multi :
 	yymsg(0, "Unknown variable '%s'", $3);
       else{
         gmsh_yysymbol &s(gmsh_yysymbols[$3]);
-	for(unsigned int i = 0; i < s.value.size(); i++)
+	for(std::size_t i = 0; i < s.value.size(); i++)
 	  List_Add($$, &s.value[i]);
       }
       Free($3);
@@ -5814,7 +5814,7 @@ FExpr_Multi :
       tmp.erase(last, tmp.end());
       $$ = $3;
       List_Reset($$);
-      for(unsigned int i = 0; i < tmp.size(); i++){
+      for(std::size_t i = 0; i < tmp.size(); i++){
         List_Add($$, &tmp[i]);
       }
     }
@@ -6355,7 +6355,7 @@ MultiStringExprVar :
 	yymsg(0, "Unknown string variable '%s'", $1);
       else{
         std::vector<std::string> &s(gmsh_yystringsymbols[$1]);
-	for(unsigned int i = 0; i < s.size(); i++) {
+	for(std::size_t i = 0; i < s.size(); i++) {
           char * val_ = strsave((char*)s.at(i).c_str());
 	  List_Add($$, &val_);
         }
@@ -6510,7 +6510,7 @@ int printListOfDouble(char *format, List_T *list, char *buffer)
   // if format does not contain formatting characters, dump the list (useful for
   // quick debugging of lists)
   int numFormats = 0;
-  for(unsigned int i = 0; i < strlen(format); i++)
+  for(std::size_t i = 0; i < strlen(format); i++)
     if(format[i] == '%') numFormats++;
   if(!numFormats){
     strcpy(buffer, format);
@@ -6570,7 +6570,7 @@ void PrintParserSymbols(bool help, std::vector<std::string> &vec)
     sstream << it->first;
     if(s.list){
       sstream << "[] = {";
-      for(unsigned int i = 0; i < s.value.size(); i++){
+      for(std::size_t i = 0; i < s.value.size(); i++){
         if(i) sstream << ", ";
         sstream << s.value[i];
       }
@@ -6592,7 +6592,7 @@ void PrintParserSymbols(bool help, std::vector<std::string> &vec)
       vec.push_back(it->first + " = \"" + it->second[0] + "\";");
     else{
       std::string s = it->first + "[] = Str({";
-      for(unsigned int i = 0; i < it->second.size(); i++){
+      for(std::size_t i = 0; i < it->second.size(); i++){
         if(i) s += ", ";
         s += std::string("\"") + it->second[i] + "\"";
       }
@@ -6672,7 +6672,7 @@ void ListOfShapes2VectorOfPairs(List_T *list, std::vector<std::pair<int, int> >
 
 void VectorOfPairs2ListOfShapes(const std::vector<std::pair<int, int> > &v, List_T *list)
 {
-  for(unsigned int i = 0; i < v.size(); i++){
+  for(std::size_t i = 0; i < v.size(); i++){
     int dim = v[i].first;
     int tag = v[i].second;
     Shape s;
@@ -6827,7 +6827,7 @@ void addEmbedded(int dim, std::vector<int> tags, int dim2, int tag2)
       yymsg(0, "Unknown model surface with tag %d", tag2);
       return;
     }
-    for(unsigned int i = 0; i < tags.size(); i++){
+    for(std::size_t i = 0; i < tags.size(); i++){
       if(dim == 0){
         GVertex *gv = GModel::current()->getVertexByTag(tags[i]);
         if(gv)
@@ -6850,7 +6850,7 @@ void addEmbedded(int dim, std::vector<int> tags, int dim2, int tag2)
       yymsg(0, "Unknown model volume with tag %d", tag2);
       return;
     }
-    for(unsigned int i = 0; i < tags.size(); i++){
+    for(std::size_t i = 0; i < tags.size(); i++){
       if(dim == 0){
         GVertex *gv = GModel::current()->getVertexByTag(tags[i]);
         if(gv)
@@ -6886,7 +6886,7 @@ void getAllElementaryTags(int dim, List_T *out)
 
   std::vector<GEntity*> entities;
   GModel::current()->getEntities(entities, dim);
-  for(unsigned int i = 0; i < entities.size(); i++){
+  for(std::size_t i = 0; i < entities.size(); i++){
     double tag = entities[i]->tag();
     List_Add(out, &tag);
   }
@@ -6941,7 +6941,7 @@ void getElementaryTagsInBoundingBox(int dim, double x1, double y1, double z1,
   SBoundingBox3d box(x1, y1, z1, x2, y2, z2);
   std::vector<GEntity*> entities;
   GModel::current()->getEntitiesInBox(entities, box, dim);
-  for(unsigned int i = 0; i < entities.size(); i++){
+  for(std::size_t i = 0; i < entities.size(); i++){
     double d = entities[i]->tag();
     List_Add(out, &d);
   }
@@ -7002,7 +7002,7 @@ void setVisibility(int dim, int visible, bool recursive)
 
   std::vector<GEntity*> entities;
   GModel::current()->getEntities(entities, dim);
-  for(unsigned int i = 0; i < entities.size(); i++){
+  for(std::size_t i = 0; i < entities.size(); i++){
     entities[i]->setVisibility(visible);
   }
 }
@@ -7016,7 +7016,7 @@ void setVisibility(const std::vector<std::pair<int, int> > &dimTags,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  for(unsigned int i = 0; i < dimTags.size(); i++){
+  for(std::size_t i = 0; i < dimTags.size(); i++){
     GEntity *ge = GModel::current()->getEntityByTag
       (dimTags[i].first, std::abs(dimTags[i].second));
     if(ge) ge->setVisibility(visible, recursive);
@@ -7032,7 +7032,7 @@ void setColor(const std::vector<std::pair<int, int> > &dimTags,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  for(unsigned int i = 0; i < dimTags.size(); i++){
+  for(std::size_t i = 0; i < dimTags.size(); i++){
     GEntity *ge = GModel::current()->getEntityByTag
       (dimTags[i].first, std::abs(dimTags[i].second));
     if(ge) ge->setColor(val, recursive);
@@ -7140,7 +7140,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfFloat
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(double));
-    for(unsigned int i = 0; i < out_vector->size(); i++) {
+    for(std::size_t i = 0; i < out_vector->size(); i++) {
       val_ = out_vector->at(i);
       List_Add(out, &val_);
     }
@@ -7257,7 +7257,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfString
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(char *));
-    for(unsigned int i = 0; i < out_vector->size(); i++) {
+    for(std::size_t i = 0; i < out_vector->size(); i++) {
       val_ = strsave((char*)out_vector->at(i).c_str());
       List_Add(out, &val_);
     }
diff --git a/Parser/Parser.h b/Parser/Parser.h
index fd310e0cda7a071f8635ad808a09142d658a7fd0..b5c3d0f22fe24d36383dd9bb8a7da383759c8b41 100644
--- a/Parser/Parser.h
+++ b/Parser/Parser.h
@@ -143,7 +143,7 @@ public:
       str += it_attrib->first + " ";
       char tmp[32];
       if (it_attrib->second.size() > 1) str += "{ ";
-      for (unsigned int i = 0; i < it_attrib->second.size(); i++) {
+      for (std::size_t i = 0; i < it_attrib->second.size(); i++) {
         if (i) str += ", ";
         sprintf(tmp, "%g", it_attrib->second[i]); str += tmp;
       }
@@ -156,7 +156,7 @@ public:
       if (flag_comma) str += ", ";
       str += it_attrib->first + " ";
       if (it_attrib->second.size() > 1) str += "Str[{ ";
-      for (unsigned int i = 0; i < it_attrib->second.size(); i++) {
+      for (std::size_t i = 0; i < it_attrib->second.size(); i++) {
         if (i) str += ", ";
         str += "\"" + it_attrib->second[i] + "\"";
       }
diff --git a/Plugin/AnalyseCurvedMesh.cpp b/Plugin/AnalyseCurvedMesh.cpp
index 65ceb0822898e73a7a0ebd19dcfae96e7bf78f3c..9dc19aa0a0068a76aec03e95b2240e0cb0047472 100644
--- a/Plugin/AnalyseCurvedMesh.cpp
+++ b/Plugin/AnalyseCurvedMesh.cpp
@@ -201,7 +201,7 @@ PView *GMSH_AnalyseCurvedMeshPlugin::execute(PView *v)
         if(!_PViewJac[dim - 1] && computeJac) {
           _PViewJac[dim - 1] = true;
           std::map<int, std::vector<double> > dataPV;
-          for(unsigned int i = 0; i < _data.size(); ++i) {
+          for(std::size_t i = 0; i < _data.size(); ++i) {
             MElement *const el = _data[i].element();
             if(el->getDim() == dim) {
               double q = 0;
@@ -221,7 +221,7 @@ PView *GMSH_AnalyseCurvedMeshPlugin::execute(PView *v)
         if(!_PViewIGE[dim - 1] && computeIGE) {
           _PViewIGE[dim - 1] = true;
           std::map<int, std::vector<double> > dataPV;
-          for(unsigned int i = 0; i < _data.size(); ++i) {
+          for(std::size_t i = 0; i < _data.size(); ++i) {
             MElement *const el = _data[i].element();
             if(el->getDim() == dim)
               dataPV[el->getNum()].push_back(_data[i].minS());
@@ -235,7 +235,7 @@ PView *GMSH_AnalyseCurvedMeshPlugin::execute(PView *v)
         if(!_PViewICN[dim - 1] && computeICN) {
           _PViewICN[dim - 1] = true;
           std::map<int, std::vector<double> > dataPV;
-          for(unsigned int i = 0; i < _data.size(); ++i) {
+          for(std::size_t i = 0; i < _data.size(); ++i) {
             MElement *const el = _data[i].element();
             if(el->getDim() == dim)
               dataPV[el->getNum()].push_back(_data[i].minI());
@@ -389,7 +389,7 @@ void GMSH_AnalyseCurvedMeshPlugin::_computeMinIGE(int dim)
 
   MsgProgressStatus progress(_data.size());
 
-  for(unsigned int i = 0; i < _data.size(); ++i) {
+  for(std::size_t i = 0; i < _data.size(); ++i) {
     MElement *const el = _data[i].element();
     if(el->getDim() != dim) continue;
     if(_data[i].minJ() <= 0 && _data[i].maxJ() > 0) {
@@ -410,7 +410,7 @@ void GMSH_AnalyseCurvedMeshPlugin::_computeMinICN(int dim)
 
   MsgProgressStatus progress(_data.size());
 
-  for(unsigned int i = 0; i < _data.size(); ++i) {
+  for(std::size_t i = 0; i < _data.size(); ++i) {
     MElement *const el = _data[i].element();
     if(el->getDim() != dim) continue;
     if(_data[i].minJ() <= 0 && _data[i].maxJ() > 0) {
@@ -433,7 +433,7 @@ int GMSH_AnalyseCurvedMeshPlugin::_hideWithThreshold(int askedDim,
 
   int nHidden = 0;
 
-  for(unsigned int i = 0; i < _data.size(); ++i) {
+  for(std::size_t i = 0; i < _data.size(); ++i) {
     MElement *const el = _data[i].element();
     const int dim = el->getDim();
     if((askedDim == 4 && dim > 1) || dim == askedDim) {
@@ -470,7 +470,7 @@ void GMSH_AnalyseCurvedMeshPlugin::_printStatJacobian()
   supminJ = supratJ = -1e10;
   avgminJ = avgratJ = avgratJc = 0;
 
-  for(unsigned int i = 0; i < _data.size(); ++i) {
+  for(std::size_t i = 0; i < _data.size(); ++i) {
     infminJ = std::min(infminJ, _data[i].minJ());
     supminJ = std::max(supminJ, _data[i].minJ());
     avgminJ += _data[i].minJ();
@@ -513,7 +513,7 @@ void GMSH_AnalyseCurvedMeshPlugin::_printStatIGE()
   double infminS, supminS, avgminS;
   infminS = supminS = avgminS = _data[0].minS();
 
-  for(unsigned int i = 1; i < _data.size(); ++i) {
+  for(std::size_t i = 1; i < _data.size(); ++i) {
     infminS = std::min(infminS, _data[i].minS());
     supminS = std::max(supminS, _data[i].minS());
     avgminS += _data[i].minS();
@@ -533,7 +533,7 @@ void GMSH_AnalyseCurvedMeshPlugin::_printStatICN()
   double infminI, supminI, avgminI;
   infminI = supminI = avgminI = _data[0].minI();
 
-  for(unsigned int i = 1; i < _data.size(); ++i) {
+  for(std::size_t i = 1; i < _data.size(); ++i) {
     infminI = std::min(infminI, _data[i].minI());
     supminI = std::max(supminI, _data[i].minI());
     avgminI += _data[i].minI();
diff --git a/Plugin/Annotate.cpp b/Plugin/Annotate.cpp
index 9aa328a2d63f283086a12c1c4959d10ddcb8abf9..12ec2fb3e1f264538fe0fa1098c1b130a69c333f 100644
--- a/Plugin/Annotate.cpp
+++ b/Plugin/Annotate.cpp
@@ -238,7 +238,7 @@ PView *GMSH_AnnotatePlugin::execute(PView *v)
     data2->T3D.push_back(Z);
     data2->T3D.push_back(style);
     data2->T3D.push_back(data2->T3C.size());
-    for(unsigned int i = 0; i < text.size(); i++) data2->T3C.push_back(text[i]);
+    for(std::size_t i = 0; i < text.size(); i++) data2->T3C.push_back(text[i]);
     data2->T3C.push_back('\0');
     data2->NbT3++;
   }
@@ -247,7 +247,7 @@ PView *GMSH_AnnotatePlugin::execute(PView *v)
     data2->T2D.push_back(Y);
     data2->T2D.push_back(style);
     data2->T2D.push_back(data2->T2C.size());
-    for(unsigned int i = 0; i < text.size(); i++) data2->T2C.push_back(text[i]);
+    for(std::size_t i = 0; i < text.size(); i++) data2->T2C.push_back(text[i]);
     data2->T2C.push_back('\0');
     data2->NbT2++;
   }
diff --git a/Plugin/Bubbles.cpp b/Plugin/Bubbles.cpp
index f00556486e8df3f117bb24685a06ae9db8dc7ef6..6a5e3806b6de233d0c3ebaf95d3dbee363ea643e 100644
--- a/Plugin/Bubbles.cpp
+++ b/Plugin/Bubbles.cpp
@@ -116,7 +116,7 @@ PView *GMSH_BubblesPlugin::execute(PView *v)
 
     // compute vertex-to-triangle_barycenter map
     std::map<MVertex *, std::vector<SPoint3> > v2t;
-    for(unsigned int i = 0; i < (*fit)->triangles.size(); i++)
+    for(std::size_t i = 0; i < (*fit)->triangles.size(); i++)
       for(int j = 0; j < 3; j++)
         v2t[(*fit)->triangles[i]->getVertex(j)].push_back(
           (*fit)->triangles[i]->barycenter());
@@ -135,13 +135,13 @@ PView *GMSH_BubblesPlugin::execute(PView *v)
       if(it->second.size() > 2) {
         // get barycenter of cell boundary points and order them
         SPoint3 bc;
-        for(unsigned int i = 0; i < it->second.size(); i++) bc += it->second[i];
+        for(std::size_t i = 0; i < it->second.size(); i++) bc += it->second[i];
         bc *= 1. / (double)it->second.size();
         compareAngle comp(bc);
         std::sort(it->second.begin(), it->second.end(), comp);
         // shrink cells
         if(shrink) {
-          for(unsigned int i = 0; i < it->second.size(); i++) {
+          for(std::size_t i = 0; i < it->second.size(); i++) {
             double dir[3] = {it->second[i].x() - bc.x(),
                              it->second[i].y() - bc.y(),
                              it->second[i].z() - bc.z()};
diff --git a/Plugin/CVTRemesh.cpp b/Plugin/CVTRemesh.cpp
index 2e57ccd62906d08bb8c0b05cc4081eea747fb919..9faebfa434ba114c58212974852079746875436c 100644
--- a/Plugin/CVTRemesh.cpp
+++ b/Plugin/CVTRemesh.cpp
@@ -89,13 +89,13 @@ PView *GMSH_CVTRemeshPlugin::execute(PView *v)
   unsigned int offset = 0;
   for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it) {
     (*it)->buildSTLTriangulation();
-    for(unsigned int i = 0; i < (*it)->stl_vertices.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->stl_vertices.size(); ++i) {
       GPoint p = (*it)->point((*it)->stl_vertices[i]);
       vertices.push_back(p.x());
       vertices.push_back(p.y());
       vertices.push_back(p.z());
     }
-    for(unsigned int i = 0; i < (*it)->stl_triangles.size(); ++i) {
+    for(std::size_t i = 0; i < (*it)->stl_triangles.size(); ++i) {
       faces.push_back((*it)->stl_triangles[i] + offset);
     }
     offset += (*it)->stl_vertices.size();
@@ -117,7 +117,7 @@ PView *GMSH_CVTRemeshPlugin::execute(PView *v)
 
   // lifted vertices
   std::vector<double> lifted_vertices(6 * mesh.vertices_size(), 0);
-  for(unsigned int vertex = 0; vertex < mesh.vertices_size(); ++vertex) {
+  for(std::size_t vertex = 0; vertex < mesh.vertices_size(); ++vertex) {
     std::copy(mesh.vertex(vertex), mesh.vertex(vertex) + 3,
               lifted_vertices.data() + 6 * vertex);
     std::copy(normals.data() + 3 * vertex, normals.data() + 3 * vertex + 3,
@@ -134,7 +134,7 @@ PView *GMSH_CVTRemeshPlugin::execute(PView *v)
   // face ratios
   std::vector<double> triangle_weights(lifted_mesh.faces_size());
   if(twfactor > 0) {
-    for(unsigned int f = 0; f < lifted_mesh.faces_size(); ++f) {
+    for(std::size_t f = 0; f < lifted_mesh.faces_size(); ++f) {
       // vertices of the initial triangle
       const unsigned int *fverts = mesh.face(f);
 
@@ -221,7 +221,7 @@ PView *GMSH_CVTRemeshPlugin::execute(PView *v)
   ;
 
   // weight the normal component by the provided factor
-  for(unsigned int i = 0; i < lifted_mesh.vertices_size(); ++i) {
+  for(std::size_t i = 0; i < lifted_mesh.vertices_size(); ++i) {
     double *v = lifted_vertices.data() + 6 * i;
     v[3] *= nfactor;
     v[4] *= nfactor;
@@ -293,14 +293,14 @@ PView *GMSH_CVTRemeshPlugin::execute(PView *v)
 
   // scale back and transfer to gmsh
   std::vector<MVertex *> m_verts(nsites);
-  for(unsigned int i = 0; i < nsites; ++i) {
+  for(std::size_t i = 0; i < nsites; ++i) {
     m_verts[i] =
       new MVertex(lifted_sites[6 * i] * mesh_scale + mesh_center[0],
                   lifted_sites[6 * i + 1] * mesh_scale + mesh_center[1],
                   lifted_sites[6 * i + 2] * mesh_scale + mesh_center[2]);
     res_face->addMeshVertex(m_verts[i]);
   }
-  for(unsigned int i = 0; i < rdt_triangles.size() / 3; ++i) {
+  for(std::size_t i = 0; i < rdt_triangles.size() / 3; ++i) {
     res_face->addTriangle(new MTriangle(m_verts[rdt_triangles[3 * i]],
                                         m_verts[rdt_triangles[3 * i + 1]],
                                         m_verts[rdt_triangles[3 * i + 2]]));
diff --git a/Plugin/Crack.cpp b/Plugin/Crack.cpp
index 2f0af92f9e5b3c3d8511f412e52d4dca048bd4c6..e1125889f54de5b328ed329a6bad96abbb543839 100644
--- a/Plugin/Crack.cpp
+++ b/Plugin/Crack.cpp
@@ -111,14 +111,14 @@ PView *GMSH_CrackPlugin::execute(PView *view)
 
   // get crack elements
   std::vector<MElement *> crackElements;
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++)
+  for(std::size_t i = 0; i < entities.size(); i++)
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++)
       crackElements.push_back(entities[i]->getMeshElement(j));
 
   // get internal crack vertices and boundary vertices
   std::set<MVertex *> crackVertices, bndVertices;
   if(dim == 1) {
-    for(unsigned int i = 0; i < crackElements.size(); i++) {
+    for(std::size_t i = 0; i < crackElements.size(); i++) {
       for(std::size_t j = 0; j < crackElements[i]->getNumVertices(); j++) {
         MVertex *v = crackElements[i]->getVertex(j);
         crackVertices.insert(v);
@@ -134,7 +134,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   }
   else {
     std::set<EdgeData, Less_EdgeData> bnd;
-    for(unsigned int i = 0; i < crackElements.size(); i++) {
+    for(std::size_t i = 0; i < crackElements.size(); i++) {
       for(std::size_t j = 0; j < crackElements[i]->getNumVertices(); j++) {
         MVertex *v = crackElements[i]->getVertex(j);
         crackVertices.insert(v);
@@ -155,8 +155,8 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   }
 
   // get (forced) open boundary vertices and remove them from boundary vertices
-  for(unsigned int i = 0; i < openEntities.size(); i++) {
-    for(unsigned int j = 0; j < openEntities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < openEntities.size(); i++) {
+    for(std::size_t j = 0; j < openEntities[i]->getNumMeshElements(); j++) {
       MElement *e = openEntities[i]->getMeshElement(j);
       for(std::size_t k = 0; k < e->getNumVertices(); k++) {
         MVertex *v = e->getVertex(k);
@@ -172,9 +172,9 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   std::set<MElement *> oneside;
   std::vector<GEntity *> allentities;
   m->getEntities(allentities);
-  for(unsigned int ent = 0; ent < allentities.size(); ent++) {
+  for(std::size_t ent = 0; ent < allentities.size(); ent++) {
     if(crackEntities.find(allentities[ent]) != crackEntities.end()) continue;
-    for(unsigned int i = 0; i < allentities[ent]->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < allentities[ent]->getNumMeshElements(); i++) {
       MElement *e = allentities[ent]->getMeshElement(i);
       for(std::size_t j = 0; j < e->getNumVertices(); j++) {
         if(crackVertices.find(e->getVertex(j)) != crackVertices.end()) {
@@ -182,7 +182,7 @@ PView *GMSH_CrackPlugin::execute(PView *view)
           SPoint3 b = e->barycenter();
           double d = 1e200;
           MElement *ce = 0;
-          for(unsigned int k = 0; k < crackElements.size(); k++) {
+          for(std::size_t k = 0; k < crackElements.size(); k++) {
             double d2 = b.distance(crackElements[k]->barycenter());
             if(d2 < d) {
               d = d2;
@@ -241,11 +241,11 @@ PView *GMSH_CrackPlugin::execute(PView *view)
   }
 
   // duplicate crack elements
-  for(unsigned int i = 0; i < crackElements.size(); i++) {
+  for(std::size_t i = 0; i < crackElements.size(); i++) {
     MElement *e = crackElements[i];
     std::vector<MVertex *> verts;
     e->getVertices(verts);
-    for(unsigned int j = 0; j < verts.size(); j++) {
+    for(std::size_t j = 0; j < verts.size(); j++) {
       if(vxv.count(verts[j])) verts[j] = vxv[verts[j]];
     }
     MElementFactory f;
diff --git a/Plugin/CutParametric.cpp b/Plugin/CutParametric.cpp
index 0f60e442ddb3ca0c019553fadf6d19457cab1342..644d5ed6db5c606cf325797a161965991e84a34c 100644
--- a/Plugin/CutParametric.cpp
+++ b/Plugin/CutParametric.cpp
@@ -111,7 +111,7 @@ void GMSH_CutParametricPlugin::draw(void *context)
   if(CutParametricOptions_Number[6].def && x.size() > 1) {
     if(nbU == 1 || nbV == 1) {
       glBegin(GL_LINES);
-      for(unsigned int i = 1; i < x.size(); ++i) {
+      for(std::size_t i = 1; i < x.size(); ++i) {
         glVertex3d(x[i - 1], y[i - 1], z[i - 1]);
         glVertex3d(x[i], y[i], z[i]);
       }
@@ -136,7 +136,7 @@ void GMSH_CutParametricPlugin::draw(void *context)
   }
   else {
     drawContext *ctx = (drawContext *)context;
-    for(unsigned int i = 0; i < x.size(); ++i)
+    for(std::size_t i = 0; i < x.size(); ++i)
       ctx->drawSphere(CTX::instance()->pointSize, x[i], y[i], z[i], 1);
   }
 #endif
@@ -351,7 +351,7 @@ PView *GMSH_CutParametricPlugin::execute(PView *v)
   for(int k = 0; k < 9 * numSteps; ++k) res0[k] = res1[k] = 0.;
 
   if(nbU == 1 || nbV == 1 || !connect) {
-    for(unsigned int i = 0; i < x.size(); ++i) {
+    for(std::size_t i = 0; i < x.size(); ++i) {
       if(i && connect) {
         x0 = x1;
         y0 = y1;
diff --git a/Plugin/Distance.cpp b/Plugin/Distance.cpp
index e9b1c2d8021349cbfd7e929cbb3f5fc176cd4530..d04e413b5340b9b31dacc11ab46c067f2aae83bd 100644
--- a/Plugin/Distance.cpp
+++ b/Plugin/Distance.cpp
@@ -117,9 +117,9 @@ void GMSH_DistancePlugin::printView(std::vector<GEntity *> _entities,
   }
   fprintf(fName, "View \"distance \"{\n");
 
-  for(unsigned int ii = 0; ii < _entities.size(); ii++) {
+  for(std::size_t ii = 0; ii < _entities.size(); ii++) {
     if(_entities[ii]->dim() == _maxDim) {
-      for(unsigned int i = 0; i < _entities[ii]->getNumMeshElements(); i++) {
+      for(std::size_t i = 0; i < _entities[ii]->getNumMeshElements(); i++) {
         MElement *e = _entities[ii]->getMeshElement(i);
         int numNodes = e->getNumPrimaryVertices();
         if(e->getNumChildren())
@@ -174,7 +174,7 @@ void GMSH_DistancePlugin::printView(std::vector<GEntity *> _entities,
         }
 
         fprintf(fName, "){");
-        for(unsigned int i = 0; i < dist.size(); i++) {
+        for(std::size_t i = 0; i < dist.size(); i++) {
           if(_minScale > 0 && _maxScale > 0)
             dist[i] = _minScale + ((dist[i] - minDist) / (maxDist - minDist)) *
                                     (_maxScale - _minScale);
@@ -231,7 +231,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
   int integrationPointTetra[2] = {0, 0};
 
   int numnodes = 0;
-  for(unsigned int i = 0; i < _entities.size() - 1; i++)
+  for(std::size_t i = 0; i < _entities.size() - 1; i++)
     numnodes += _entities[i]->mesh_vertices.size();
   int totNodes =
     numnodes + _entities[_entities.size() - 1]->mesh_vertices.size();
@@ -265,10 +265,10 @@ PView *GMSH_DistancePlugin::execute(PView *v)
   }
 
   int k = 0;
-  for(unsigned int i = 0; i < _entities.size(); i++) {
+  for(std::size_t i = 0; i < _entities.size(); i++) {
     GEntity *ge = _entities[i];
     _maxDim = std::max(_maxDim, ge->dim());
-    for(unsigned int j = 0; j < ge->mesh_vertices.size(); j++) {
+    for(std::size_t j = 0; j < ge->mesh_vertices.size(); j++) {
       MVertex *v = ge->mesh_vertices[j];
       pts.push_back(SPoint3(v->x(), v->y(), v->z()));
       _distance_map.insert(std::make_pair(v, 0.0));
@@ -286,12 +286,12 @@ PView *GMSH_DistancePlugin::execute(PView *v)
   if(type < 0.0) {
     bool existEntity = false;
 
-    for(unsigned int i = 0; i < _entities.size(); i++) {
+    for(std::size_t i = 0; i < _entities.size(); i++) {
       GEntity *g2 = _entities[i];
       int gDim = g2->dim();
       std::vector<int> phys = g2->getPhysicalEntities();
       bool computeForEntity = false;
-      for(unsigned int k = 0; k < phys.size(); k++) {
+      for(std::size_t k = 0; k < phys.size(); k++) {
         int tagp = phys[k];
         if(id_pt == 0 && id_line == 0 && id_face == 0 && gDim == _maxDim - 1)
           computeForEntity = true;
@@ -302,7 +302,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
       }
       if(computeForEntity) {
         existEntity = true;
-        for(unsigned int k = 0; k < g2->getNumMeshElements(); k++) {
+        for(std::size_t k = 0; k < g2->getNumMeshElements(); k++) {
           std::vector<double> iDistances;
           std::vector<SPoint3> iClosePts;
           std::vector<double> iDistancesE;
@@ -323,7 +323,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
             signedDistancesPointsTriangle(iDistances, iClosePts, pts, p1, p2,
                                           p3);
           }
-          for(unsigned int kk = 0; kk < pts.size(); kk++) {
+          for(std::size_t kk = 0; kk < pts.size(); kk++) {
             if(std::abs(iDistances[kk]) < distances[kk]) {
               distances[kk] = std::abs(iDistances[kk]);
               MVertex *v = pt2Vertex[kk];
@@ -357,12 +357,12 @@ PView *GMSH_DistancePlugin::execute(PView *v)
 
     bool existEntity = false;
     SBoundingBox3d bbox;
-    for(unsigned int i = 0; i < _entities.size(); i++) {
+    for(std::size_t i = 0; i < _entities.size(); i++) {
       GEntity *ge = _entities[i];
       int gDim = ge->dim();
       bool fixForEntity = false;
       std::vector<int> phys = ge->getPhysicalEntities();
-      for(unsigned int k = 0; k < phys.size(); k++) {
+      for(std::size_t k = 0; k < phys.size(); k++) {
         int tagp = phys[k];
         if(id_pt == 0 && id_line == 0 && id_face == 0 && gDim == _maxDim - 1)
           fixForEntity = true;
@@ -373,7 +373,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
       }
       if(fixForEntity) {
         existEntity = true;
-        for(unsigned int i = 0; i < ge->getNumMeshElements(); ++i) {
+        for(std::size_t i = 0; i < ge->getNumMeshElements(); ++i) {
           MElement *t = ge->getMeshElement(i);
           for(std::size_t k = 0; k < t->getNumVertices(); k++) {
             MVertex *v = t->getVertex(k);
@@ -391,10 +391,10 @@ PView *GMSH_DistancePlugin::execute(PView *v)
     }
     else {
       std::vector<MElement *> allElems;
-      for(unsigned int ii = 0; ii < _entities.size(); ii++) {
+      for(std::size_t ii = 0; ii < _entities.size(); ii++) {
         if(_entities[ii]->dim() == _maxDim) {
           GEntity *ge = _entities[ii];
-          for(unsigned int i = 0; i < ge->getNumMeshElements(); ++i) {
+          for(std::size_t i = 0; i < ge->getNumMeshElements(); ++i) {
             MElement *t = ge->getMeshElement(i);
             allElems.push_back(t);
             for(std::size_t k = 0; k < t->getNumVertices(); k++)
@@ -457,10 +457,10 @@ PView *GMSH_DistancePlugin::execute(PView *v)
     double dMax = 1.0; // EMI TO CHANGE
 
     std::vector<MElement *> allElems;
-    for(unsigned int ii = 0; ii < _entities.size(); ii++) {
+    for(std::size_t ii = 0; ii < _entities.size(); ii++) {
       if(_entities[ii]->dim() == _maxDim) {
         GEntity *ge = _entities[ii];
-        for(unsigned int i = 0; i < ge->getNumMeshElements(); ++i) {
+        for(std::size_t i = 0; i < ge->getNumMeshElements(); ++i) {
           MElement *t = ge->getMeshElement(i);
           double vMean = 0.0;
           for(std::size_t k = 0; k < t->getNumVertices(); k++) {
@@ -575,7 +575,7 @@ PView *GMSH_DistancePlugin::execute(PView *v)
         orth.push_back(value);
       }
       fprintf(f5, "){");
-      for(unsigned int i = 0; i < orth.size(); i++) {
+      for(std::size_t i = 0; i < orth.size(); i++) {
         out2->push_back(orth[i]);
         if(i)
           fprintf(f5, ",%g", orth[i]);
diff --git a/Plugin/ExtractEdges.cpp b/Plugin/ExtractEdges.cpp
index 90527c5a1345e5039d1f3d63b6fae70847915e24..9b27beeca4c833ee38f7ec0bb71ea71ccf9fca33 100644
--- a/Plugin/ExtractEdges.cpp
+++ b/Plugin/ExtractEdges.cpp
@@ -77,13 +77,13 @@ PView *GMSH_ExtractEdgesPlugin::execute(PView *v)
   buildListOfEdgeAngle(adj, edges_detected, edges_lonly);
 
   double threshold = ExtractEdgesOptions_Number[0].def / 180. * M_PI;
-  for(unsigned int i = 0; i < edges_detected.size(); i++) {
+  for(std::size_t i = 0; i < edges_detected.size(); i++) {
     if(edges_detected[i].angle <= threshold) break;
     add_edge(edges_detected[i], data2);
   }
 
   if(ExtractEdgesOptions_Number[1].def) {
-    for(unsigned int i = 0; i < edges_lonly.size(); i++) {
+    for(std::size_t i = 0; i < edges_lonly.size(); i++) {
       add_edge(edges_lonly[i], data2);
     }
   }
diff --git a/Plugin/FaultZone.cpp b/Plugin/FaultZone.cpp
index c318be17b70b5a8d33d183586117b1244daf1b15..316905bbe574860c817e50c20e9883b4704e51f0 100644
--- a/Plugin/FaultZone.cpp
+++ b/Plugin/FaultZone.cpp
@@ -136,7 +136,7 @@ PView *GMSH_FaultZonePlugin::execute(PView *view)
 
   for(itl = embeddedEdges.begin(); itl != embeddedEdges.end(); ++itl) {
     GEdge *gEdge = *itl;
-    unsigned int i = 0;
+    std::size_t i = 0;
     for(; i < gEdge->getNumMeshElements(); i++)
       if(gEdge->getMeshElement(i)->getNumVertices() == 3) break;
     if(i == gEdge->getNumMeshElements()) break;
@@ -189,7 +189,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace *gFace)
   for(std::vector<GEdge *>::const_iterator itl = embeddedEdges.begin();
       itl != embeddedEdges.end(); ++itl) {
     GEdge *gEdge = *itl;
-    for(unsigned int i = 0; i < gEdge->getNumMeshVertices(); i++) {
+    for(std::size_t i = 0; i < gEdge->getNumMeshVertices(); i++) {
       allFissuresVertices.insert(gEdge->getMeshVertex(i));
     }
     allFissuresVertices.insert(gEdge->getBeginVertex()->getMeshVertex(0));
@@ -199,7 +199,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace *gFace)
   // set with all quadratic MVertex of the fissures connected to the surface
   std::set<MVertex *> allConnectedQuadraticVertices;
   // fill _connectedElements
-  for(unsigned int i = 0; i < gFace->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gFace->getNumMeshElements(); i++) {
     MElement *mElem = gFace->getMeshElement(i);
     for(std::size_t j = 0; j < mElem->getNumVertices(); j++) {
       MVertex *mVert = mElem->getVertex(j);
@@ -215,7 +215,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace *gFace)
   for(std::vector<GEdge *>::const_iterator itl = edges.begin();
       itl != edges.end(); ++itl) {
     GEdge *gEdge = *itl;
-    for(unsigned int i = 0; i < gEdge->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gEdge->getNumMeshElements(); i++) {
       MElement *mElem = gEdge->getMeshElement(i);
       for(std::size_t j = 0; j < mElem->getNumVertices(); j++) {
         MVertex *mVert = mElem->getVertex(j);
@@ -249,7 +249,7 @@ void GMSH_FaultZoneMesher::RetriveFissuresInfos(GFace *gFace)
     if(!norm) Msg::Error("norm == 0 in Plugin(FaultZone)");
 
     // fill _jointElements and _fissureByHeavNode
-    for(unsigned int i = 0; i < gEdge->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gEdge->getNumMeshElements(); i++) {
       MElement *mElem = gEdge->getMeshElement(i);
       assert(mElem->getNumVertices() == 3);
       elementsIt its;
@@ -340,7 +340,7 @@ void GMSH_FaultZoneMesher::DuplicateNodes()
     MVertex *mVert = itm->first;
     std::vector<GEdge *> fissures = itm->second;
 
-    unsigned int nbFiss = fissures.size();
+    std::size_t nbFiss = fissures.size();
     if(nbFiss == 1) { // if only one fissure, the node will be treated in
                       // _fissureByHeavNode
       _fissureByHeavNode[mVert] = fissures.front();
@@ -351,7 +351,7 @@ void GMSH_FaultZoneMesher::DuplicateNodes()
     else {
       std::vector<MVertex *> mVertices;
       mVertices.push_back(mVert);
-      for(unsigned int i = 0; i < nbFiss - 1; i++) {
+      for(std::size_t i = 0; i < nbFiss - 1; i++) {
         MVertex *mVertJonc = new MVertex(mVert->x(), mVert->y(), mVert->z());
         mVertices.push_back(mVertJonc);
       }
@@ -400,7 +400,7 @@ void GMSH_FaultZoneMesher::ComputeHeavisideFunction()
       itm != _fissuresByJunctionNode.end(); itm++) {
     MVertex *mVert = itm->first;
     std::vector<GEdge *> fissures = itm->second;
-    unsigned int size = fissures.size();
+    std::size_t size = fissures.size();
     assert(size >= 2);
     std::vector<SVector3> vectsTan = _vectsTanByJunctionNode[mVert];
     assert(vectsTan.size() == size);
@@ -413,7 +413,7 @@ void GMSH_FaultZoneMesher::ComputeHeavisideFunction()
     assert(vectsNor.size() == size);
     std::vector<std::vector<int> > heavFunc;
 
-    for(unsigned int i = 0; i < size; i++) {
+    for(std::size_t i = 0; i < size; i++) {
       std::vector<int> heav(size, 0);
 
       if(i == 0) {
@@ -424,7 +424,7 @@ void GMSH_FaultZoneMesher::ComputeHeavisideFunction()
       // upper = 1, under = -1, both = 0
       bool upper = false;
       bool under = false;
-      for(unsigned int j = 0; j < i; j++) {
+      for(std::size_t j = 0; j < i; j++) {
         double lsn = -dot(vectsNor[i], vectsTan[j]);
         upper = (upper || lsn > tolerance);
         under = (under || lsn < -tolerance);
@@ -434,7 +434,7 @@ void GMSH_FaultZoneMesher::ComputeHeavisideFunction()
 
       // compute the heaviside functions of the precedent fissures for a point
       // located on fissure i
-      for(unsigned int j = 0; j < i; j++) {
+      for(std::size_t j = 0; j < i; j++) {
         double lsn = -dot(vectsNor[j], vectsTan[i]);
         if(fabs(lsn) < tolerance) {
           lsn = dot(vectsNor[j], vectsNor[i]) * heav[i];
@@ -478,7 +478,7 @@ void GMSH_FaultZoneMesher::ComputeHeavisideFunction()
         //                                             Fissure2
         //
         bool isDomain = false;
-        for(unsigned int j = 0; j < i; j++) {
+        for(std::size_t j = 0; j < i; j++) {
           isDomain = compareHeav(heavFunc[j], heav);
           if(isDomain) {
             heavFunc.insert(heavFunc.begin() + j, heavFunc[j]);
@@ -524,8 +524,8 @@ std::vector<int> GMSH_FaultZoneMesher::HeavisideFunc(MVertex *mVert,
   else if(_nodesByJunctionNode.find(mVert) != _nodesByJunctionNode.end()) {
     // if it is a junction node
     std::vector<GEdge *> fissures = _fissuresByJunctionNode[mVert];
-    unsigned int size = fissures.size();
-    for(unsigned int i = 0; i < size; i++) {
+    std::size_t size = fissures.size();
+    for(std::size_t i = 0; i < size; i++) {
       SVector3 vectNorm = _vectNormByFissure[fissures[i]];
       double lsn = dot(vectPoint, vectNorm);
       if(fabs(lsn) > tolerance) // tolerance seems to be ok
@@ -572,7 +572,7 @@ void GMSH_FaultZoneMesher::CreateJointElements(GModel *gModel, GFace *gFace,
 
     // for each MElement in the GEdge, a new MElement is created and inserted in
     // GFace
-    for(unsigned int i = 0; i < gEdge->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gEdge->getNumMeshElements(); i++) {
       MElement *mElem = gEdge->getMeshElement(i);
       elementsIt its = _jointElements.find(mElem);
       if(its == _jointElements.end()) continue;
@@ -603,7 +603,7 @@ void GMSH_FaultZoneMesher::CreateJointElements(GModel *gModel, GFace *gFace,
         }
         else {
           std::vector<int> heav = HeavisideFunc(mVert, bary);
-          unsigned int size = heav.size();
+          std::size_t size = heav.size();
           assert(size > 1);
           std::vector<GEdge *> fissures = _fissuresByJunctionNode[mVert];
           assert(fissures.size() == size);
@@ -613,7 +613,7 @@ void GMSH_FaultZoneMesher::CreateJointElements(GModel *gModel, GFace *gFace,
           std::vector<MVertex *> nodes = _nodesByJunctionNode[mVert];
           assert(nodes.size() == size);
 
-          unsigned int k;
+          std::size_t k;
           for(k = 0; k < size; k++) {
             if(fissures[k]->tag() == gEdge->tag()) break;
           }
@@ -732,7 +732,7 @@ void GMSH_FaultZoneMesher::ModifyElementsConnectivity(GFace *gFace)
         continue;
 
       std::vector<int> heav = HeavisideFunc(mVert, bary);
-      unsigned int size = heav.size();
+      std::size_t size = heav.size();
       if(size == 1) { // if it is a pure heaviside node
         if(heav[0] == 1) // modifying connectivity only if upper side
           mElem->setVertex(j, _nodeByHeavNode[mVert]);
@@ -741,7 +741,7 @@ void GMSH_FaultZoneMesher::ModifyElementsConnectivity(GFace *gFace)
         std::vector<std::vector<int> > heavFunc =
           _heavFuncByJunctionNode[mVert];
         assert(heavFunc.size() == size);
-        int i = findMatchingHeav(heavFunc, heav);
+        std::size_t i = findMatchingHeav(heavFunc, heav);
         std::vector<MVertex *> nodes = _nodesByJunctionNode[mVert];
         assert(nodes.size() == size);
         assert(nodes[i]->onWhat() != 0);
@@ -784,7 +784,7 @@ void GMSH_FaultZoneMesher::ModifyJointNodePosition(double eps)
         _nodesByJunctionNode.begin();
       itm != _nodesByJunctionNode.end(); itm++) {
     std::vector<MVertex *> nodes = itm->second;
-    for(unsigned int i = 0; i < nodes.size(); i++) {
+    for(std::size_t i = 0; i < nodes.size(); i++) {
       std::set<MElement *> mElements;
       connectedElementsByJunctionNode[nodes[i]] = mElements;
     }
diff --git a/Plugin/FaultZone.h b/Plugin/FaultZone.h
index d2b6aff0885dab56b322d076ec07fb789b38566c..1475f37de31263d3c270b315533299ca49f832fa 100644
--- a/Plugin/FaultZone.h
+++ b/Plugin/FaultZone.h
@@ -82,7 +82,7 @@ inline bool compareHeav(const std::vector<int> heav1,
                         const std::vector<int> heav2)
 {
   assert(heav1.size() >= heav2.size());
-  for(unsigned int i = 0; i < heav2.size(); i++) {
+  for(std::size_t i = 0; i < heav2.size(); i++) {
     if(heav1[i] != 0 && heav1[i] != heav2[i] && heav2[i] != 0) {
       return false;
     }
@@ -95,10 +95,10 @@ inline bool compareHeav(const std::vector<int> heav1,
  * \brief Find the matching heaviside function heav, in the vector heavFunc
  */
 //=============================================================================
-inline int findMatchingHeav(const std::vector<std::vector<int> > &heavFunc,
-                            const std::vector<int> &heav)
+inline std::size_t findMatchingHeav(const std::vector<std::vector<int> > &heavFunc,
+                                    const std::vector<int> &heav)
 {
-  unsigned int i = 0;
+  std::size_t i = 0;
   for(; i < heavFunc.size(); i++)
     if(compareHeav(heavFunc[i], heav)) break;
   assert(i < heavFunc.size());
diff --git a/Plugin/FieldFromAmplitudePhase.cpp b/Plugin/FieldFromAmplitudePhase.cpp
index 5f0bd93394ae887e3f80dfaa266dfde8bc7e4247..ac13fc6ec27c97503f5fae742a34e07dbbeb6e80 100644
--- a/Plugin/FieldFromAmplitudePhase.cpp
+++ b/Plugin/FieldFromAmplitudePhase.cpp
@@ -110,8 +110,8 @@ PView *GMSH_FieldFromAmplitudePhasePlugin::execute(PView *v)
   std::map<int, std::vector<double> > dataR;
   std::map<int, std::vector<double> > dataI;
 
-  for(unsigned int ent = 0; ent < _entities.size(); ent++)
-    for(unsigned int ele = 0; ele < _entities[ent]->getNumMeshElements();
+  for(std::size_t ent = 0; ent < _entities.size(); ent++)
+    for(std::size_t ele = 0; ele < _entities[ent]->getNumMeshElements();
         ele++) {
       MElement *e = _entities[ent]->getMeshElement(ele);
       for(std::size_t nod = 0; nod < e->getNumVertices(); nod++)
diff --git a/Plugin/GaussPoints.cpp b/Plugin/GaussPoints.cpp
index 50d354165ca6103786a5ce073617ccda3210a993..22b0d33c7514d9fbd443b4ab6d2f95df0ea1111e 100644
--- a/Plugin/GaussPoints.cpp
+++ b/Plugin/GaussPoints.cpp
@@ -63,8 +63,8 @@ PView *GMSH_GaussPointsPlugin::execute(PView *v)
 
   PView *v2 = new PView();
   PViewDataList *data2 = getDataList(v2);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++) {
       MElement *e = entities[i]->getMeshElement(j);
       int npts;
       IntPt *gp;
diff --git a/Plugin/HomologyComputation.cpp b/Plugin/HomologyComputation.cpp
index 1a1f7d1979959b21348c2ed3d5c4f24057412408..855b0cc2bcae2da1475701f7d53691b8702d3b51 100644
--- a/Plugin/HomologyComputation.cpp
+++ b/Plugin/HomologyComputation.cpp
@@ -129,14 +129,14 @@ PView *GMSH_HomologyComputationPlugin::execute(PView *v)
   if(hom != 0) homology->findHomologyBasis(dimsave);
   if(coh != 0) homology->findCohomologyBasis(dimsave);
 
-  for(unsigned int i = 0; i < dimsave.size(); i++) {
+  for(std::size_t i = 0; i < dimsave.size(); i++) {
     int dim = dimsave.at(i);
     if(dim > -1 && dim < 4 && hom != 0) {
       homology->addChainsToModel(dim, pviews, hompg);
       if(hompg != -1) hompg += homology->betti(dim);
     }
   }
-  for(unsigned int i = 0; i < dimsave.size(); i++) {
+  for(std::size_t i = 0; i < dimsave.size(); i++) {
     int dim = dimsave.at(i);
     if(dim > -1 && dim < 4 && coh != 0) {
       homology->addCochainsToModel(dim, pviews, cohpg);
diff --git a/Plugin/HomologyPostProcessing.cpp b/Plugin/HomologyPostProcessing.cpp
index 52acaadf45d04e44d80f5fe1a07c72f4bf3cc616..e62194be1f5d9fba46f405d43cc5f7db7b19ae4e 100644
--- a/Plugin/HomologyPostProcessing.cpp
+++ b/Plugin/HomologyPostProcessing.cpp
@@ -228,7 +228,7 @@ PView *GMSH_HomologyPostProcessingPlugin::execute(PView *v)
   if(!parseStringOpt(4, projectPhysicals)) return 0;
 
   std::vector<Chain<int> > curBasis;
-  for(unsigned int i = 0; i < basisPhysicals.size(); i++) {
+  for(std::size_t i = 0; i < basisPhysicals.size(); i++) {
     curBasis.push_back(Chain<int>(m, basisPhysicals.at(i)));
   }
   if(curBasis.empty()) {
@@ -238,7 +238,7 @@ PView *GMSH_HomologyPostProcessingPlugin::execute(PView *v)
   int dim = curBasis.at(0).getDim();
 
   std::vector<Chain<int> > curBasis2;
-  for(unsigned int i = 0; i < basisPhysicals2.size(); i++) {
+  for(std::size_t i = 0; i < basisPhysicals2.size(); i++) {
     curBasis2.push_back(Chain<int>(m, basisPhysicals2.at(i)));
   }
 
@@ -287,27 +287,27 @@ PView *GMSH_HomologyPostProcessingPlugin::execute(PView *v)
 
   if(bd) {
     Msg::Info("Applying boundary operator to the result %d-chains", dim);
-    for(unsigned int i = 0; i < newBasis.size(); i++)
+    for(std::size_t i = 0; i < newBasis.size(); i++)
       newBasis.at(i) = newBasis.at(i).getBoundary();
   }
 
   if(!tracePhysicals.empty()) {
     Msg::Info("Taking trace of result %d-chains to domain %s", dim,
               traceString.c_str());
-    for(unsigned int i = 0; i < newBasis.size(); i++)
+    for(std::size_t i = 0; i < newBasis.size(); i++)
       newBasis.at(i) = newBasis.at(i).getTrace(m, tracePhysicals);
   }
   if(!projectPhysicals.empty()) {
     Msg::Info("Taking projection of result %d-chains to the complement of the "
               "domain %s",
               dim, projectString.c_str());
-    for(unsigned int i = 0; i < newBasis.size(); i++)
+    for(std::size_t i = 0; i < newBasis.size(); i++)
       newBasis.at(i) = newBasis.at(i).getProject(m, projectPhysicals);
   }
   if(!tracePhysicals.empty() || !projectPhysicals.empty())
     ElemChain::clearVertexCache();
 
-  for(unsigned int i = 0; i < newBasis.size(); i++) {
+  for(std::size_t i = 0; i < newBasis.size(); i++) {
     std::string dims = convertInt(newBasis.at(i).getDim());
     std::string nums = convertInt(i + 1);
     newBasis.at(i).setName("C" + dims + " " + cname + nums);
diff --git a/Plugin/Lambda2.cpp b/Plugin/Lambda2.cpp
index 739a6630fc01ef7fc986557eee7922df2c9b33ce..f8fba1fcef8af2a2597dfd81c471232975ae9382 100644
--- a/Plugin/Lambda2.cpp
+++ b/Plugin/Lambda2.cpp
@@ -73,7 +73,7 @@ static void eigen(std::vector<double> &inList, int inNb,
 
   // loop on elements
   int nb = inList.size() / inNb;
-  for(unsigned int i = 0; i < inList.size(); i += nb) {
+  for(std::size_t i = 0; i < inList.size(); i += nb) {
     // copy node coordinates
     for(int j = 0; j < 3 * nbNod; j++) outList.push_back(inList[i + j]);
 
diff --git a/Plugin/MakeSimplex.cpp b/Plugin/MakeSimplex.cpp
index 444f8b863df23d9fc7deb102dc9d28e1260a9e10..0576419f06ab08ec4676138a120f3dc39687e96a 100644
--- a/Plugin/MakeSimplex.cpp
+++ b/Plugin/MakeSimplex.cpp
@@ -44,7 +44,7 @@ static void decomposeList(PViewDataList *data, int nbNod, int nbComp,
   MakeSimplex dec(nbNod, nbComp, data->getNumTimeSteps());
 
   int nb = listIn.size() / (*nbIn);
-  for(unsigned int i = 0; i < listIn.size(); i += nb) {
+  for(std::size_t i = 0; i < listIn.size(); i += nb) {
     double *x = &listIn[i];
     double *y = &listIn[i + nbNod];
     double *z = &listIn[i + 2 * nbNod];
diff --git a/Plugin/MathEval.cpp b/Plugin/MathEval.cpp
index 0d8bf4a9bd2e444937fee843f359946d6c3b0ed3..497eaa2350d0aa43bdfafb2940340e4fd8622511 100644
--- a/Plugin/MathEval.cpp
+++ b/Plugin/MathEval.cpp
@@ -151,9 +151,9 @@ PView *GMSH_MathEvalPlugin::execute(PView *view)
   const char *names[] = {"x",  "y",  "z",  "v0", "v1", "v2", "v3",
                          "v4", "v5", "v6", "v7", "v8", "w0", "w1",
                          "w2", "w3", "w4", "w5", "w6", "w7", "w8"};
-  unsigned int numVariables = sizeof(names) / sizeof(names[0]);
+  std::size_t numVariables = sizeof(names) / sizeof(names[0]);
   std::vector<std::string> variables(numVariables);
-  for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i];
+  for(std::size_t i = 0; i < numVariables; i++) variables[i] = names[i];
   mathEvaluator f(expr, variables);
   if(expr.empty()) return view;
   std::vector<double> values(numVariables), res(numComp2);
diff --git a/Plugin/MeshSubEntities.cpp b/Plugin/MeshSubEntities.cpp
index 610352d9fdea4b4538b87f00f51e7497ff7dfabe..2bf673035c30acd656c1d412148902ec508a734e 100644
--- a/Plugin/MeshSubEntities.cpp
+++ b/Plugin/MeshSubEntities.cpp
@@ -76,13 +76,13 @@ PView *GMSH_MeshSubEntitiesPlugin::execute(PView *view)
 
   // get input elements
   std::vector<MElement *> elements;
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++)
+  for(std::size_t i = 0; i < entities.size(); i++)
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++)
       elements.push_back(entities[i]->getMeshElement(j));
 
   if(outputdim == 0) { // create point elements for mesh vertices
     std::set<MVertex *> vertices;
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       for(std::size_t j = 0; j < elements[i]->getNumVertices(); j++) {
         MVertex *v = elements[i]->getVertex(j);
         vertices.insert(v);
@@ -107,7 +107,7 @@ PView *GMSH_MeshSubEntitiesPlugin::execute(PView *view)
   }
   else if(outputdim == 1) { // create line elements for mesh edges
     std::set<MEdge, Less_Edge> edges;
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       for(int j = 0; j < elements[i]->getNumEdges(); j++) {
         MEdge e = elements[i]->getEdge(j);
         edges.insert(e);
diff --git a/Plugin/MeshVolume.cpp b/Plugin/MeshVolume.cpp
index 0a6709c6e544ed113737354ddc5f0698d74fcb8b..125f3b8b552568929bc5ccf9cf82a8f0ca0f6c19 100644
--- a/Plugin/MeshVolume.cpp
+++ b/Plugin/MeshVolume.cpp
@@ -66,8 +66,8 @@ void GMSH_MeshVolumePlugin::run(){
   // Iterate on elements and compute the volume //
   ////////////////////////////////////////////////
   double vol = 0;
-  for(unsigned int i = 0; i < entities.size(); i++)
-    for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++)
+  for(std::size_t i = 0; i < entities.size(); i++)
+    for(std::size_t j = 0; j < entities[i]->getNumMeshElements(); j++)
       vol += entities[i]->getMeshElement(j)->getVolume();
 
   // Display volume as a message //
diff --git a/Plugin/ModifyComponents.cpp b/Plugin/ModifyComponents.cpp
index 537b2ce8f5e8e0e16d9e2f30cfea54e021bc7744..ae40cd9f4f2e9d1955d4d56fab49da3e1ebbad76 100644
--- a/Plugin/ModifyComponents.cpp
+++ b/Plugin/ModifyComponents.cpp
@@ -141,9 +141,9 @@ PView *GMSH_ModifyComponentsPlugin::execute(PView *view)
   const char *names[] = {"x",  "y",  "z",  "Time", "TimeStep", "v0", "v1", "v2",
                          "v3", "v4", "v5", "v6",   "v7",       "v8", "w0", "w1",
                          "w2", "w3", "w4", "w5",   "w6",       "w7", "w8"};
-  unsigned int numVariables = sizeof(names) / sizeof(names[0]);
+  std::size_t numVariables = sizeof(names) / sizeof(names[0]);
   std::vector<std::string> variables(numVariables);
-  for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i];
+  for(std::size_t i = 0; i < numVariables; i++) variables[i] = names[i];
   mathEvaluator f(expressions0, variables);
 
   std::vector<double> values(numVariables), res(9);
diff --git a/Plugin/NearToFarField.cpp b/Plugin/NearToFarField.cpp
index ba93c3d1cfe5641f21d4f5afadafde31cb34cece..1e486591c4fc760431ed5657615b6cb71aa9ba88 100644
--- a/Plugin/NearToFarField.cpp
+++ b/Plugin/NearToFarField.cpp
@@ -112,7 +112,7 @@ double GMSH_NearToFarFieldPlugin::getFarFieldJin(
   }
 
   int i = 0;
-  for(unsigned int ele = 0; ele < allElems.size(); ele++) {
+  for(std::size_t ele = 0; ele < allElems.size(); ele++) {
     element *e = allElems[ele];
     int numNodes = e->getNumNodes();
 
@@ -213,7 +213,7 @@ double GMSH_NearToFarFieldPlugin::getFarFieldMonk(
 
   double integral_r[3] = {0., 0., 0.}, integral_i[3] = {0., 0., 0.};
   int i = 0;
-  for(unsigned int ele = 0; ele < allElems.size(); ele++) {
+  for(std::size_t ele = 0; ele < allElems.size(); ele++) {
     element *e = allElems[ele];
     int numNodes = e->getNumNodes();
     std::vector<double> integrand_r(numNodes * 3), integrand_i(numNodes * 3);
@@ -269,8 +269,8 @@ static void printVector(FILE *fp, const std::string &name,
                         std::vector<std::vector<double> > &vec)
 {
   fprintf(fp, "%s = [", name.c_str());
-  for(unsigned int i = 0; i < vec.size(); i++)
-    for(unsigned int j = 0; j < vec[i].size(); j++)
+  for(std::size_t i = 0; i < vec.size(); i++)
+    for(std::size_t j = 0; j < vec[i].size(); j++)
       fprintf(fp, "%.16g ", vec[i][j]);
   fprintf(fp, "];\n");
 }
@@ -449,7 +449,7 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView *v)
     }
     Msg::ProgressMeter(i, _NbPhi, true, "Computing far field");
   }
-  for(unsigned int i = 0; i < allElems.size(); i++) delete allElems[i];
+  for(std::size_t i = 0; i < allElems.size(); i++) delete allElems[i];
 
   if(_normalize) {
     if(!ffmax)
diff --git a/Plugin/NewView.cpp b/Plugin/NewView.cpp
index 6c728c07ca9c996240cabed96acd7995603f36e9..2e5034620e30ee6a1b4c9bcd0639d420539f6711 100644
--- a/Plugin/NewView.cpp
+++ b/Plugin/NewView.cpp
@@ -69,8 +69,8 @@ PView *GMSH_NewViewPlugin::execute(PView *v)
   std::map<int, std::vector<double> > d;
   std::vector<GEntity *> entities;
   GModel::current()->getEntities(entities);
-  for(unsigned int i = 0; i < entities.size(); i++) {
-    for(unsigned int 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 *ve = entities[i]->mesh_vertices[j];
       d[ve->getNum()].resize(numComp);
     }
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
index 045aead5f67e49bc559efeb6457534a121444f34..54fe0da2581f20478a394e16e6382c8f24946299 100644
--- a/Plugin/Plugin.cpp
+++ b/Plugin/Plugin.cpp
@@ -57,7 +57,7 @@ std::string GMSH_Plugin::serialize()
 PView *GMSH_PostPlugin::executeRemote(PView *view)
 {
   int j = -1, remoteIndex = -1;
-  for(unsigned int i = 0; i < PView::list.size(); i++) {
+  for(std::size_t i = 0; i < PView::list.size(); i++) {
     if(PView::list[i]->getData()->isRemote()) j++;
     if(PView::list[i]->getTag() == view->getTag()) {
       remoteIndex = j;
diff --git a/Plugin/SimplePartition.cpp b/Plugin/SimplePartition.cpp
index f4422dcd80422899ffc83b7c8a7536e0610f1a2c..8068c8eeb6f8fcab2a5b1bab54c6f42e3424a908 100644
--- a/Plugin/SimplePartition.cpp
+++ b/Plugin/SimplePartition.cpp
@@ -105,9 +105,9 @@ void GMSH_SimplePartitionPlugin::run()
   std::vector<GEntity *> entities;
   m->getEntities(entities);
   hashmap<MElement *, unsigned int> elmToPartition;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *ge = entities[i];
-    for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+    for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
       MElement *e = ge->getMeshElement(j);
       SPoint3 point = e->barycenter();
       for(int k = 0; k < numSlices; k++) {
diff --git a/Plugin/Skin.cpp b/Plugin/Skin.cpp
index 1652aeee70731cfa78ed6c35cd7f9521e5f6e92f..dbe0b4cf944eeaace28239e00967643550dc9c0d 100644
--- a/Plugin/Skin.cpp
+++ b/Plugin/Skin.cpp
@@ -137,10 +137,10 @@ public:
       break;
     }
     if(!vec) return;
-    for(unsigned int i = 0; i < x.size(); i++) vec->push_back(x[i]);
-    for(unsigned int i = 0; i < y.size(); i++) vec->push_back(y[i]);
-    for(unsigned int i = 0; i < z.size(); i++) vec->push_back(z[i]);
-    for(unsigned int i = 0; i < v.size(); i++) vec->push_back(v[i]);
+    for(std::size_t i = 0; i < x.size(); i++) vec->push_back(x[i]);
+    for(std::size_t i = 0; i < y.size(); i++) vec->push_back(y[i]);
+    for(std::size_t i = 0; i < z.size(); i++) vec->push_back(z[i]);
+    for(std::size_t i = 0; i < v.size(); i++) vec->push_back(v[i]);
   }
 };
 
@@ -193,11 +193,11 @@ static void getBoundaryFromMesh(GModel *m, int visible)
   m->getEntities(entities);
   std::set<MFace, Less_Face> bndFaces;
   std::set<MEdge, Less_Edge> bndEdges;
-  for(unsigned int i = 0; i < entities.size(); i++) {
+  for(std::size_t i = 0; i < entities.size(); i++) {
     GEntity *ge = entities[i];
     if(ge->dim() != dim) continue;
     if(visible && !ge->getVisibility()) continue;
-    for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+    for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
       MElement *e = ge->getMeshElement(j);
       if(dim == 2) {
         for(int i = 0; i < e->getNumEdges(); i++) {
diff --git a/Plugin/Tetrahedralize.cpp b/Plugin/Tetrahedralize.cpp
index 0d33e6980206873ccc3f5fbaf60f0879e5869227..d6722a186c9a43a43bf348f2dfbe5c5f433d15da 100644
--- a/Plugin/Tetrahedralize.cpp
+++ b/Plugin/Tetrahedralize.cpp
@@ -86,7 +86,7 @@ PView *GMSH_TetrahedralizePlugin::execute(PView *v)
 
   if(points.size() < 4) {
     Msg::Error("Need at least 4 points to tetrahedralize");
-    for(unsigned int i = 0; i < points.size(); i++) delete points[i];
+    for(std::size_t i = 0; i < points.size(); i++) delete points[i];
     return v1;
   }
 
@@ -96,7 +96,7 @@ PView *GMSH_TetrahedralizePlugin::execute(PView *v)
   // create output
   PView *v2 = new PView();
   PViewDataList *data2 = getDataList(v2);
-  for(unsigned int i = 0; i < tets.size(); i++) {
+  for(std::size_t i = 0; i < tets.size(); i++) {
     bool ok = true;
     PointData *p[4];
     for(int j = 0; j < 4; j++){
@@ -146,8 +146,8 @@ PView *GMSH_TetrahedralizePlugin::execute(PView *v)
           vec->push_back(p[nod]->val[numComp * step + comp]);
   }
 
-  for(unsigned int i = 0; i < tets.size(); i++) delete tets[i];
-  for(unsigned int i = 0; i < points.size(); i++) delete points[i];
+  for(std::size_t i = 0; i < tets.size(); i++) delete tets[i];
+  for(std::size_t i = 0; i < points.size(); i++) delete points[i];
 
   for(int i = 0; i < data1->getNumTimeSteps(); i++)
     data2->Time.push_back(data1->getTime(i));
diff --git a/Plugin/ThinLayerFixMesh.cpp b/Plugin/ThinLayerFixMesh.cpp
index b6032e8d04d631739c5b387031f87cad3deb55e6..91b91c709798c7475b1b467270aaceb5a5876828 100644
--- a/Plugin/ThinLayerFixMesh.cpp
+++ b/Plugin/ThinLayerFixMesh.cpp
@@ -35,22 +35,7 @@ const double GMSH_ThinLayerFixMeshPlugin::epsilon = 0.00000000001;
 const double GMSH_ThinLayerFixMeshPlugin::angleMax = 0.9;
 const double GMSH_ThinLayerFixMeshPlugin::distP2PMax = 5.0;
 
-CorrespVerticesFixMesh::CorrespVerticesFixMesh()
-{
-  //	std::cout<<"started init CorrespVerticesFixMesh"<<std::endl;
-  //	this->EndTriangle = faceXtetFM();
-  //	this->StartPoint = 0;
-  //	this->EndPoint = SPoint3(0.0,0.0,0.0);
-  //	this->StartNormal = SVector3(0.0,0.0,0.0);
-  //	this->EndNormal = SVector3(0.0,0.0,0.0);
-  //	this->distP2P = 0.0;
-  //	this->angleProd = 0.0;
-  //	this->Active = false;
-  //	this->EndTriangleActive = false;
-  //	this->IsMaster = false;
-  //	this->tagMaster = 0;
-  //	std::cout<<"completed init CorrespVerticesFixMesh"<<std::endl;
-}
+CorrespVerticesFixMesh::CorrespVerticesFixMesh() {}
 CorrespVerticesFixMesh::~CorrespVerticesFixMesh() {}
 void CorrespVerticesFixMesh::setStartPoint(MVertex *v) { this->StartPoint = v; }
 void CorrespVerticesFixMesh::setEndPoint(SPoint3 p) { this->EndPoint = p; }
@@ -59,9 +44,6 @@ void CorrespVerticesFixMesh::setStartNormal(SVector3 v)
   this->StartNormal = v;
 }
 void CorrespVerticesFixMesh::setEndNormal(SVector3 v) { this->EndNormal = v; }
-// void CorrespVerticesFixMesh::setEndTriangle(faceXtetFM f){
-//	this->EndTriangle(f.t1,f.i1);
-//}
 void CorrespVerticesFixMesh::setEndTrianglePoint1(MVertex *v)
 {
   this->EndTrianglePoint1 = v;
@@ -87,9 +69,6 @@ MVertex *CorrespVerticesFixMesh::getStartPoint() { return StartPoint; }
 SPoint3 CorrespVerticesFixMesh::getEndPoint() { return EndPoint; }
 SVector3 CorrespVerticesFixMesh::getStartNormal() { return StartNormal; }
 SVector3 CorrespVerticesFixMesh::getEndNormal() { return EndNormal; }
-// faceXtetFM CorrespVerticesFixMesh::getEndTriangle(){
-//	return EndTriangle;
-//}
 MVertex *CorrespVerticesFixMesh::getEndTrianglePoint1()
 {
   return EndTrianglePoint1;
@@ -114,14 +93,7 @@ int CorrespVerticesFixMesh::getTagMaster() { return tagMaster; }
 
 PView *GMSH_ThinLayerFixMeshPlugin::execute(PView *view)
 {
-  // GModel *m = GModel::current();
   GMSH_ThinLayerFixMeshPlugin::perform();
-  //	if (m->getDim() == 3){
-  //		view = GMSH_DuplicateBoundariesPlugin::executeDuplicate(view);
-  //	}
-  //	else if (m->getDim() == 2){
-  //		view = GMSH_DuplicateBoundariesPlugin::execute2DWithBound(view);
-  //	}
   return view;
 }
 
@@ -133,38 +105,14 @@ void GMSH_ThinLayerFixMeshPlugin::perform()
   vecOfThinSheets.clear();
   GMSH_ThinLayerFixMeshPlugin::fillVertexToTets();
   GMSH_ThinLayerFixMeshPlugin::fillTetToTet4();
-  // std::cout<<"computeAllDistToOppSide"<<std::endl;
   std::map<MVertex *, double> AllDist =
     GMSH_ThinLayerFixMeshPlugin::computeAllDistToOppSide();
-  for(std::map<MVertex *, double>::iterator allDistIt = AllDist.begin();
-      allDistIt != AllDist.end(); allDistIt++) {
-    // std::cout<<"allDist of point "<<(*allDistIt).first->getNum()<<" with Pos
-    // "<<(*allDistIt).first->x()<<" ; "<<(*allDistIt).first->z()<<" ;
-    // "<<(*allDistIt).first->y()<<" is "<<(*allDistIt).second<<std::endl;
-    // std::cout<<"   Size of vertexToCorresp
-    // "<<VertexToCorresp[(*allDistIt).first].size()<<std::endl;
-    //		//std::cout<<"      Testing FaceXTet out of while fourth time
-    //"<<VertexToCorresp[(*allDistIt).first][VertexToCorresp[(*allDistIt).first].size()
-    //- 1]->getEndTriangle().t1->tet()->getNum()<<std::endl;  std::cout<<"
-    // Testing StartPoint
-    // "<<VertexToCorresp[(*allDistIt).first][VertexToCorresp[(*allDistIt).first].size()
-    // - 1]->getStartPoint()->getNum()<<std::endl;  std::cout<<"      Testing
-    // StartNormal
-    // "<<VertexToCorresp[(*allDistIt).first][VertexToCorresp[(*allDistIt).first].size()
-    // - 1]->getStartNormal().norm()<<std::endl;
-  }
-  // std::cout<<"checkOppositeTriangles
-  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<std::endl;
   GMSH_ThinLayerFixMeshPlugin::checkOppositeTriangles();
-  // std::cout<<"fillvecOfThinSheets
-  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<std::endl;
   GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets();
-  // std::cout<<"Out of fillvecOfThinSheets"<<std::endl;
-  //	std::set<MVertex*> constr_vertices;
-  for(unsigned int i = 0; i < vecOfThinSheets.size(); i++) {
+  for(std::size_t i = 0; i < vecOfThinSheets.size(); i++) {
     if(vecOfThinSheets[i].size() > 1) {
       GFace *OnSurf;
-      for(unsigned int j = 0; j < vecOfThinSheets[i].size(); j++) {
+      for(std::size_t j = 0; j < vecOfThinSheets[i].size(); j++) {
         // find a point on the surface
         MVertex *vertOnSurf = vecOfThinSheets[i][j]->getEndTrianglePoint1();
         if(vertOnSurf->onWhat()->dim() < 2) {
@@ -181,13 +129,6 @@ void GMSH_ThinLayerFixMeshPlugin::perform()
         double param2 = 0.0;
         StartPo->getParameter(0, param1);
         StartPo->getParameter(1, param2);
-        // std::cout<<" PointBegin is "<<StartPo->x()<<" ; "<<StartPo->y()<<" ;
-        // "<<StartPo->z()<<" with param "<<param1<<" ; "<<param2<<std::endl;
-        // std::cout<<"insertion of point
-        // "<<vecOfThinSheets[i][j]->getEndPoint().x()<<" ;
-        // "<<vecOfThinSheets[i][j]->getEndPoint().y()<<" ;
-        // "<<vecOfThinSheets[i][j]->getEndPoint().z()<<" with param
-        // "<<ParOnSurf.x()<<" ; "<<ParOnSurf.y()<<std::endl;
         MFaceVertex *v =
           new MFaceVertex(vecOfThinSheets[i][j]->getEndPoint().x(),
                           vecOfThinSheets[i][j]->getEndPoint().y(),
@@ -195,30 +136,14 @@ void GMSH_ThinLayerFixMeshPlugin::perform()
                           ParOnSurf.x(), ParOnSurf.y());
         OnSurf->setMeshingAlgo(ALGO_2D_PACK_PRLGRMS_CSTR);
         OnSurf->constr_vertices.insert(v);
-        //				OnSurf->addMeshVertex(v);
-        //				constr_vertices.insert(v);
-        // std::cout<<"inserted point with tag "<<v->getNum()<<" on surface
-        // "<<OnSurf->tag()<<std::endl;
       }
-      //			OnSurf->setMeshingAlgo(ALGO_2D_PACK_PRLGRMS_CSTR);
-      //			OnSurf->GFace::deleteMesh();
-      //			buildBackGroundMesh (OnSurf);
-      //			meshGFace::modifyInitialMeshForTakingIntoAccountBoundaryLayers(OnSurf);
-      //			OnSurf->meshStatistics.status = GFace::PENDING;
-      //			OnSurf->meshStatistics.nbTriangle =
-      //OnSurf->meshStatistics.nbEdge = 0;
-      //			OnSurf->correspondingVertices.clear();
-      //			std::map<MVertex* , MVertex*>* equivalence;
-      //			std::map<MVertex*, SPoint2> * parametricCoordinates;
-      //			bowyerWatsonParallelogramsConstrained(OnSurf,constr_vertices);
     }
-    //		constr_vertices.clear();
   }
   for(std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it1 = VertexToCorresp.begin();
       it1 != VertexToCorresp.end(); it1++) {
     std::vector<CorrespVerticesFixMesh *> vecCorr = (*it1).second;
-    for(unsigned int i = 0; i < vecCorr.size(); i++) {
+    for(std::size_t i = 0; i < vecCorr.size(); i++) {
       delete vecCorr[i];
     }
   }
@@ -230,77 +155,35 @@ void GMSH_ThinLayerFixMeshPlugin::checkOppositeTriangles()
   for(std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it1 = VertexToCorresp.begin();
       it1 != VertexToCorresp.end(); it1++) {
-    //		std::cout<<"   Entering For"<<std::endl;
-    // MVertex* vertTmp = (*it1).first;
-    // std::cout<<"   Vert Tested is "<<vertTmp->getNum()<<" and its vector size
-    // is "<<(*it1).second.size()<<" pos "<<vertTmp->x()<<" ; "<<vertTmp->y()<<"
-    // ; "<<vertTmp->z()<<std::endl;
     std::vector<CorrespVerticesFixMesh *> vecCorr = (*it1).second;
-    for(unsigned int i = 0; i < vecCorr.size(); i++) {
-      // std::cout<<"      Entering deeper For"<<std::endl;
+    for(std::size_t i = 0; i < vecCorr.size(); i++) {
       CorrespVerticesFixMesh *currentCorr = vecCorr[i];
-      //			std::cout<<"      Step 1"<<std::endl;
-      //			faceXtetFM currentEndTri =
-      //(*(currentCorr->getEndTriangle())); 			std::cout<<"      Step
-      //2"<<std::endl;
       MVertex *endP0 = currentCorr->getEndTrianglePoint1();
-      //			std::cout<<"      Step 3"<<std::endl;
       MVertex *endP1 = currentCorr->getEndTrianglePoint2();
-      //			std::cout<<"      Step 4"<<std::endl;
       MVertex *endP2 = currentCorr->getEndTrianglePoint3();
-      //			std::cout<<"      Step 5"<<std::endl;
       std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it2 = VertexToCorresp.find(endP0);
-      //			std::cout<<"      Step 6 ?"<<std::endl;
-      //			std::cout<<"      Tet is
-      //"<<currentCorr->getEndTriangle().t1->tet()->getNum()<<std::endl;
-      //			std::cout<<"      Face number is
-      //"<<currentCorr->getEndTriangle().i1<<std::endl; 			std::cout<<"
-      //Tet is made of vertex 0
-      //"<<currentCorr->getEndTriangle().t1->tet()->getVertex(0)->getNum()<<std::endl;
-      //			std::cout<<"      Tet is made of vertex 1
-      //"<<currentCorr->getEndTriangle().t1->tet()->getVertex(1)->getNum()<<std::endl;
-      //			std::cout<<"      Tet is made of vertex 2
-      //"<<currentCorr->getEndTriangle().t1->tet()->getVertex(2)->getNum()<<std::endl;
-      //			std::cout<<"      Tet is made of vertex 3
-      //"<<currentCorr->getEndTriangle().t1->tet()->getVertex(3)->getNum()<<std::endl;
-      //			std::cout<<"      Adresses of endP0 "<<endP0<<" and endP1
-      //"<<endP1<<" and endP2 "<<endP2<<std::endl;  std::cout<<"      endP0 is
-      // "<<endP0->getNum()<<" pos "<<endP0->x()<<" ; "<<endP0->y()<<" ;
-      // "<<endP0->z()<<std::endl; 			std::cout<<"      Step
-      //6"<<std::endl;
       std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it3 = VertexToCorresp.find(endP1);
-      // std::cout<<"      endP1 is "<<endP1->getNum()<<" pos "<<endP1->x()<<" ;
-      // "<<endP1->y()<<" ; "<<endP1->z()<<std::endl; 			std::cout<<"
-      //Step 7"<<std::endl;
       std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it4 = VertexToCorresp.find(endP2);
-      // std::cout<<"      endP2 is "<<endP2->getNum()<<" pos "<<endP2->x()<<" ;
-      // "<<endP2->y()<<" ; "<<endP2->z()<<std::endl; 			std::cout<<"
-      //Step 8"<<std::endl;
       (*it1).second[i]->setEndTriangleActive(false);
-      // std::cout<<"      Starting tests"<<std::endl;
       bool test0 = false;
       bool test1 = false;
       bool test2 = false;
       if(endP0->onWhat()->dim() < 2) {
         test0 = true;
-        // std::cout<<"         test0 true by dim"<<std::endl;
       }
       if(endP1->onWhat()->dim() < 2) {
         test1 = true;
-        // std::cout<<"         test1 true by dim"<<std::endl;
       }
       if(endP2->onWhat()->dim() < 2) {
         test2 = true;
-        // std::cout<<"         test2 true by dim"<<std::endl;
       }
       if(it2 != VertexToCorresp.end()) {
         if((*it2).second.size() > 0) {
           if((*it2).second[0]->getActive()) {
             test0 = true;
-            // std::cout<<"         test0 true by active"<<std::endl;
           }
         }
       }
@@ -308,7 +191,6 @@ void GMSH_ThinLayerFixMeshPlugin::checkOppositeTriangles()
         if((*it3).second.size() > 0) {
           if((*it3).second[0]->getActive()) {
             test1 = true;
-            // std::cout<<"         test1 true by active"<<std::endl;
           }
         }
       }
@@ -316,7 +198,6 @@ void GMSH_ThinLayerFixMeshPlugin::checkOppositeTriangles()
         if((*it4).second.size() > 0) {
           if((*it4).second[0]->getActive()) {
             test2 = true;
-            // std::cout<<"         test2 true by active"<<std::endl;
           }
         }
       }
@@ -324,53 +205,10 @@ void GMSH_ThinLayerFixMeshPlugin::checkOppositeTriangles()
         if(test1) {
           if(test2) {
             (*it1).second[i]->setEndTriangleActive(true);
-            // std::cout<<"                        EndTriangle
-            // Activated"<<std::endl;
           }
         }
       }
-      //			if (it2 != VertexToCorresp.end()){
-      ////				std::cout<<"         Passed Number 1"<<std::endl;
-      //				if (it3 != VertexToCorresp.end()){
-      ////					std::cout<<"            Passed Number 2"<<std::endl;
-      //					if (it4 != VertexToCorresp.end()){
-      ////						std::cout<<"               Passed Number
-      ///3"<<std::endl;
-      //						if (((*it2).second.size() > 0)  ||
-      //(endP0->onWhat()->dim() < 2)){
-      //							std::cout<<"         Passed Number 1
-      //Bis"<<std::endl;
-      //							if (((*it3).second.size() > 0)  ||
-      //(endP1->onWhat()->dim() < 2)){
-      //								std::cout<<"            Passed Number 2
-      //Bis"<<std::endl;
-      //								if (((*it4).second.size() > 0)  ||
-      //(endP2->onWhat()->dim() < 2)){
-      //									std::cout<<"               Passed
-      //Number 3 Bis"<<std::endl; 									if
-      //(((*it2).second[0]->getActive()) || (endP0->onWhat()->dim() < 2)){
-      //										std::cout<<"
-      //Passed Number 4"<<std::endl; 										if
-      //(((*it3).second[0]->getActive()) || (endP1->onWhat()->dim() < 2)){
-      //											std::cout<<"
-      //Passed Number 5"<<std::endl;
-      //											if
-      //(((*it4).second[0]->getActive()) || (endP2->onWhat()->dim() < 2)){
-      //												std::cout<<"
-      //Passed Number 6"<<std::endl;
-      //												(*it1).second[i]->setEndTriangleActive(true);
-      //											}
-      //										}
-      //									}
-      //								}
-      //							}
-      //						}
-      //					}
-      //				}
-      //			}
-      // std::cout<<"      Exiting out of deeper For"<<std::endl;
     }
-    //		std::cout<<"   Getting Out Of For"<<std::endl;
   }
 }
 
@@ -379,37 +217,21 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
   for(std::map<MVertex *, std::vector<CorrespVerticesFixMesh *> >::iterator
         it1 = VertexToCorresp.begin();
       it1 != VertexToCorresp.end(); it1++) {
-    // MVertex* vertTmp = (*it1).first;
     std::vector<CorrespVerticesFixMesh *> vecCorr = (*it1).second;
-    for(unsigned int i = 0; i < vecCorr.size(); i++) {
+    for(std::size_t i = 0; i < vecCorr.size(); i++) {
       CorrespVerticesFixMesh *currentCorr = vecCorr[i];
-      // std::cout<<"going to test vecCorr["<<i<<"]"<<" vertex
-      // "<<currentCorr->getStartPoint()->getNum()<<" and pos
-      // "<<currentCorr->getStartPoint()->x()<<" ;
-      // "<<currentCorr->getStartPoint()->y()<<" ;
-      // "<<currentCorr->getStartPoint()->z()<<std::endl;
       if(currentCorr->getStartPoint()->onWhat()->dim() == 2)
-        // std::cout<<"On a surface ; ";
         if(currentCorr->getActive())
-          // std::cout<<"Is active ; ";
           if(currentCorr->getEndTriangleActive())
-            // std::cout<<"End Triangle active ; ";
             if(currentCorr->getTagMaster() == (-2))
-              // std::cout<<"Has yet to be used ; ";
-              // std::cout<<std::endl;
               if((currentCorr->getStartPoint()->onWhat()->dim() == 2) &&
                  (currentCorr->getActive()) &&
                  (currentCorr->getEndTriangleActive()) &&
                  (currentCorr->getTagMaster() == (-2))) {
                 // Found the first node of a new master sheet
-                // std::cout<<"entering a new master sheet !"<<std::endl;
                 std::vector<CorrespVerticesFixMesh *> MasterSheet;
                 MasterSheet.clear();
                 (*it1).second[i]->setTagMaster(-1);
-                //				faceXtetFM faceEndSlave =
-                //(*((*it1).second[i]->getEndTriangle()));
-                //				faceXtetFM faceEndSlave =
-                //((*it1).second[i]->getEndTriangle());
                 {
                   std::map<MVertex *,
                            std::vector<CorrespVerticesFixMesh *> >::iterator
@@ -456,16 +278,6 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                     }
                   }
                 }
-                //				for (unsigned int j = 0;j < 3;j++){
-                //					std::map<MVertex*,std::vector<CorrespVerticesFixMesh*>
-                //>::iterator it2 = VertexToCorresp.find(faceEndSlave.v[j]);
-                //					if (it2 != VertexToCorresp.end()){
-                //						if (faceEndSlave.v[j]->onWhat()->dim() ==
-                //2){
-                //							(*it2).second[0]->setTagMaster((*it1).second[i]->getStartPoint()->onWhat()->tag());
-                //						}
-                //					}
-                //				}
                 MasterSheet.push_back((*it1).second[i]);
                 std::set<MVertex *> CurrentSheet;
                 CurrentSheet.clear();
@@ -474,7 +286,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(std::size_t j = 0; j < surroundingTet.size(); j++) {
                     for(std::size_t k = 0;
                         k < surroundingTet[j]->getNumVertices(); k++) {
                       MVertex *ToInsertTmp = surroundingTet[j]->getVertex(k);
@@ -488,20 +300,12 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                           if((*it2).second.size() > 0) {
                             CorrespVerticesFixMesh *correspToInsert =
                               ((*it2).second)[0];
-                            // std::cout<<"      Testing
-                            // "<<((*it2).second)[0]->getStartPoint()->getNum()<<"
-                            // with ";
                             if(correspToInsert->getStartPoint()
                                  ->onWhat()
                                  ->dim() == 2)
-                              // std::cout<<"On a surface ; ";
                               if(correspToInsert->getActive())
-                                // std::cout<<"Is active ; ";
                                 if(correspToInsert->getEndTriangleActive())
-                                  // std::cout<<"End Triangle active ; ";
                                   if(correspToInsert->getTagMaster() == (-2))
-                                    // std::cout<<"Has yet to be used ; ";
-                                    // std::cout<<std::endl;
                                     if((correspToInsert->getStartPoint()
                                           ->onWhat()
                                           ->dim() == 2) &&
@@ -512,12 +316,6 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                                         (-2))) {
                                       MasterSheet.push_back((*it2).second[0]);
                                       (*it2).second[0]->setTagMaster(-1);
-                                      //										faceXtetFM
-                                      //faceEndSlave2 =
-                                      //(*((*it2).second[0]->getEndTriangle()));
-                                      //										faceXtetFM
-                                      //faceEndSlave2 =
-                                      //((*it2).second[0]->getEndTriangle());
                                       {
                                         std::map<
                                           MVertex *,
@@ -584,20 +382,6 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                                           }
                                         }
                                       }
-                                      //										for
-                                      //(unsigned int j = 0;j < 3;j++){
-                                      //											std::map<MVertex*,std::vector<CorrespVerticesFixMesh*>
-                                      //>::iterator it3 =
-                                      //VertexToCorresp.find(faceEndSlave2.v[j]);
-                                      //											if
-                                      //(it3 != VertexToCorresp.end()){
-                                      //												if
-                                      //(faceEndSlave2.v[j]->onWhat()->dim() ==
-                                      //2){
-                                      //													(*it3).second[0]->setTagMaster((*it2).second[i]->getStartPoint()->onWhat()->tag());
-                                      //												}
-                                      //											}
-                                      //										}
                                       CurrentSheet.insert(ToInsertTmp);
                                     }
                           }
@@ -608,15 +392,6 @@ void GMSH_ThinLayerFixMeshPlugin::fillvecOfThinSheets()
                   CurrentSheet.erase(VToDo);
                 }
                 vecOfThinSheets.push_back(MasterSheet);
-                // std::cout<<"describing new MasterSheet !"<<std::endl;
-                for(unsigned int j = 0; j < MasterSheet.size(); j++) {
-                  // std::cout<<"Number "<<j<<" is
-                  // "<<MasterSheet[j]->getStartPoint()->getNum()<<" with
-                  // position "<<MasterSheet[j]->getStartPoint()->x()<<" ;
-                  // "<<MasterSheet[j]->getStartPoint()->y()<<" ;
-                  // "<<MasterSheet[j]->getStartPoint()->z()<<std::endl;
-                }
-                // std::cout<<"exiting the master sheet !"<<std::endl;
               }
     }
   }
@@ -627,268 +402,38 @@ GMSH_ThinLayerFixMeshPlugin::computeAllDistToOppSide()
   std::map<MVertex *, double> AllDistToOppSide;
   AllDistToOppSide.clear();
   GModel *m = GModel::current();
-  //	std::vector<MElement*> crackElements;
   std::set<MVertex *> BoundaryVertices;
   int countdown = 0;
 
   for(GModel::riter itr = m->firstRegion(); itr != m->lastRegion(); itr++) {
     GRegion *rTmp = (*itr);
-    // std::cout<<"   Entering region "<<rTmp->tag()<<std::endl;
-    for(unsigned int i = 0; i < rTmp->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < rTmp->tetrahedra.size(); i++) {
       countdown++;
-      // std::cout<<"      Entering tet "<<rTmp->tetrahedra[i]->getNum()<<" its
-      // the "<<countdown<<"st"<<std::endl;
       MTet4 *tet4Tmp = TetToTet4[rTmp->tetrahedra[i]];
-      // std::cout<<"      Neighbours 0: "<<tet4Tmp->getNeigh(0)<<" Neighbours
-      // 1: "<<tet4Tmp->getNeigh(1)<<" Neighbours 2: "<<tet4Tmp->getNeigh(2)<<"
-      // Neighbours 3: "<<tet4Tmp->getNeigh(3)<<std::endl;
-      for(unsigned int j = 0; j < 4; j++) {
-        // std::cout<<"         Entering neighbour "<<j<<std::endl;
+      for(std::size_t j = 0; j < 4; j++) {
         if(tet4Tmp->getNeigh(j) == 0) {
-          // std::cout<<"         Test Passed "<<std::endl;
-          // find the 4th point,and fill the two vector of the boundary triangle
           faceXtetFM fxtTmp(tet4Tmp, j);
-          // std::cout<<"         fxtTmp created "<<std::endl;
           for(int k = 0; k < 3; k++) {
-            // std::cout<<"            Entering Point "<<k<<std::endl;
             MVertex *toTest = fxtTmp.v[k];
             if(toTest->onWhat()->dim() == 2) {
-              // std::cout<<"               Passed First test "<<std::endl;
               if(BoundaryVertices.find(toTest) == BoundaryVertices.end()) {
-                // std::cout<<"                  Passed Second test
-                // "<<std::endl;
                 BoundaryVertices.insert(toTest);
               }
             }
-            // std::cout<<"            Exiting Point "<<k<<std::endl;
           }
-          //			crackElements.push_back(rTmp->getMeshElement(j));
         }
-        // std::cout<<"         Exiting neighbour "<<j<<std::endl;
       }
-      // std::cout<<"      Exiting tet
-      // "<<rTmp->tetrahedra[i]->getNum()<<std::endl;
     }
-    // std::cout<<"   Exiting region "<<rTmp->tag()<<std::endl;
   }
-  // std::cout<<"Entering computeDistToOppSide"<<std::endl;
   countdown = 0;
   for(std::set<MVertex *>::iterator it = BoundaryVertices.begin();
       it != BoundaryVertices.end(); it++) {
     countdown++;
-    // std::cout<<"   entering Bound Vert "<<(*it)->getNum()<<" it's the
-    // "<<countdown<<"st"<<std::endl;
     MVertex *toCompute = (*it);
     double resultTmp = computeDistToOppSide(toCompute);
-    // int lastTmp = VertexToCorresp[toCompute].size() - 1;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    //		std::cout<<"         Testing FaceXTet out of while third time
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-    // std::cout<<"            LastTmp is "<<lastTmp<<std::endl;
-    // std::cout<<"            ToCompute is "<<toCompute->getNum()<<std::endl;
-    // std::cout<<"               ToCompute adress is "<<toCompute<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
-    //		std::cout<<"         Testing FaceXTet out of while popo
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-    // std::cout<<"     size of AllDistToOppSide is
-    // "<<AllDistToOppSide.size()<<std::endl;  std::cout<<"            LastTmp is
-    // "<<lastTmp<<std::endl;  std::cout<<"            ToCompute is
-    // "<<toCompute->getNum()<<std::endl;  std::cout<<"               ToCompute
-    // adress is "<<toCompute<<std::endl;  std::cout<<"
-    // VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"               ToCompute adress is "<<toCompute<<std::endl;
-    //		std::cout<<"         Testing FaceXTet out of while popo 2
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()->getNum()<<std::endl;
     AllDistToOppSide.insert(std::make_pair(toCompute, resultTmp));
-    // std::cout<<"     AllDistToOppSide[toCompute] is
-    // "<<AllDistToOppSide[toCompute]<<std::endl;  std::cout<<"
-    // ToCompute adress is "<<toCompute<<std::endl;  std::cout<<"
-    // VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal()<<std::endl;
-    // std::cout<<"            getEndNormal is
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().x()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().y()<<" ;
-    // "<<VertexToCorresp[toCompute][lastTmp]->getEndNormal().z()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"               ToCompute adress is "<<toCompute<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"     AllDistToOppSide[toCompute] adress is
-    // "<<&AllDistToOppSide[toCompute]<<std::endl;  std::cout<<"
-    // VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"
-    //VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1 adress is
-    //"<<&(VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1)<<std::endl;
-    // std::cout<<"            LastTmp is "<<lastTmp<<std::endl;
-    // std::cout<<"            ToCompute is "<<toCompute->getNum()<<std::endl;
-    // std::cout<<"               ToCompute adress is "<<toCompute<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
-    //		std::cout<<"         Testing FaceXTet out of while popo 3
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-    //		AllDistToOppSide[toCompute] = 0.0;
-    //		std::cout<<"            LastTmp is "<<lastTmp<<std::endl;
-    //		std::cout<<"            ToCompute is
-    //"<<toCompute->getNum()<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
-    //		std::cout<<"     size of AllDistToOppSide is
-    //"<<AllDistToOppSide.size()<<std::endl; 		std::cout<<"
-    //LastTmp is "<<lastTmp<<std::endl; 		std::cout<<"
-    //ToCompute is "<<toCompute->getNum()<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
     AllDistToOppSide[toCompute] = resultTmp;
-    // std::cout<<" observation "<<countdown<<std::endl;
-    // std::cout<<"            LastTmp is "<<lastTmp<<std::endl;
-    // std::cout<<"            ToCompute is "<<toCompute->getNum()<<std::endl;
-    // std::cout<<"            VertexToCorresp[toCompute][lastTmp] is
-    // "<<VertexToCorresp[toCompute][lastTmp]<<std::endl; 		std::cout<<"
-    //getEndTriangle is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle()<<std::endl;
-    //		std::cout<<"            t1 is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1<<std::endl;
-    //		std::cout<<"            tet is
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()<<std::endl;
-    //		std::cout<<"         Testing FaceXTet out of while bis repetita
-    //"<<VertexToCorresp[toCompute][lastTmp]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-    for(std::map<MVertex *, double>::iterator allDistIt =
-          AllDistToOppSide.begin();
-        allDistIt != AllDistToOppSide.end(); allDistIt++) {
-      // std::cout<<"allDist of point "<<(*allDistIt).first->getNum()<<" with
-      // Pos "<<(*allDistIt).first->x()<<" ; "<<(*allDistIt).first->z()<<" ;
-      // "<<(*allDistIt).first->y()<<" is "<<(*allDistIt).second<<std::endl;
-      // std::cout<<"   Size of vertexToCorresp
-      // "<<VertexToCorresp[(*allDistIt).first].size()<<std::endl;
-      // MVertex* toComputeTest = (*allDistIt).first;
-      // std::cout<<"   ToComputeTest is "<<toComputeTest->getNum()<<std::endl;
-      // int lastTmpTest = VertexToCorresp[toComputeTest].size() - 1;
-      //			std::cout<<"         Testing FaceXTet out of while ter
-      //repetita
-      //"<<VertexToCorresp[toComputeTest][lastTmpTest]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-      //			std::cout<<"      Testing FaceXTet out of while fourth time
-      //"<<VertexToCorresp[(*allDistIt).first][VertexToCorresp[(*allDistIt).first].size()
-      //- 1]->getEndTriangle().t1->tet()->getNum()<<std::endl;
-    }
-  }
-
-  // std::cout<<"first observation"<<std::endl;
-  for(std::map<MVertex *, double>::iterator allDistIt =
-        AllDistToOppSide.begin();
-      allDistIt != AllDistToOppSide.end(); allDistIt++) {
-    // std::cout<<"allDist of point "<<(*allDistIt).first->getNum()<<" with Pos
-    // "<<(*allDistIt).first->x()<<" ; "<<(*allDistIt).first->z()<<" ;
-    // "<<(*allDistIt).first->y()<<" is "<<(*allDistIt).second<<std::endl;
-    // std::cout<<"   Size of vertexToCorresp
-    // "<<VertexToCorresp[(*allDistIt).first].size()<<std::endl;
-    //		std::cout<<"      Testing FaceXTet out of while fourth time
-    //"<<VertexToCorresp[(*allDistIt).first][VertexToCorresp[(*allDistIt).first].size()
-    //- 1]->getEndTriangle().t1->tet()->getNum()<<std::endl;
   }
-
   return AllDistToOppSide;
 }
 
@@ -897,53 +442,30 @@ double GMSH_ThinLayerFixMeshPlugin::computeDistToOppSide(MVertex *v)
   double DistToOppSide = 0.0;
   // We assume v is on the boundary
   // First we need to get the internal normal
-  // std::cout<<"      Entering ComputeDistToOppSide Function"<<std::endl;
   SVector3 InteriorNormal =
     GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(v);
-  // std::cout<<"      Normal computed"<<std::endl;
   // Then we find the first triangle
   MTet4 *FirstTet =
     GMSH_ThinLayerFixMeshPlugin::getTetFromPoint(v, InteriorNormal);
-  // std::cout<<"   FirstTet is tet "<<FirstTet->tet()->getNum()<<std::endl;
-  // std::cout<<"      got FirstTet"<<std::endl;
   MTet4 *CurrentTet = FirstTet;
-  // std::cout<<"      set currentTet"<<std::endl;
   MTet4 *PastTet = FirstTet;
-  // std::cout<<"      set PastTet"<<std::endl;
   SPoint3 CurrentPos = SPoint3(v->x(), v->y(), v->z());
-  // std::cout<<"      set CurrentPos"<<std::endl;
   SPoint3 LastPos = CurrentPos;
-  // std::cout<<"      set LasPos"<<std::endl;
   int CurrentTriValue = 0;
   int *CurrentTri = &CurrentTriValue;
-  // std::cout<<"      set CurrentTri"<<std::endl;
   CorrespVerticesFixMesh *CVTemp = new CorrespVerticesFixMesh();
-  // std::cout<<"      Created CVTemp"<<std::endl;
   CorrespVerticesFixMesh CVTemp2;
-  // std::cout<<"      Created CVTemp2"<<std::endl;
   CVTemp->setStartPoint(v);
   CVTemp2.setStartPoint(v);
-  // std::cout<<"      setStartPoint"<<std::endl;
   CVTemp->setStartNormal(InteriorNormal);
   CVTemp2.setStartNormal(InteriorNormal);
-  // std::cout<<"      setStartNormal"<<std::endl;
   FindNewPoint((&CurrentPos), CurrentTri, &CurrentTet, InteriorNormal);
   DistToOppSide += CurrentPos.distance(LastPos);
   LastPos = CurrentPos;
-  // std::cout<<"      Found New Point"<<std::endl;
-  //	faceXtetFM fxtCV(PastTet,(*CurrentTri));
-  //	CVTemp->setEndTriangle(&fxtCV);
-  //	while(CurrentTet->getNeigh((*CurrentTri)) != 0){
   int countWhile = 0;
   int prevprevtet = 1;
   int prevtet = 2;
   while((CurrentTet != 0) && (countWhile < 50)) {
-    // std::cout<<"                                    Entering
-    // While"<<std::endl;  std::cout<<"CurrentTet is
-    // "<<CurrentTet->tet()->getNum()<< "adress "<<CurrentTet<< " and currentTri
-    // "<<(*CurrentTri)<<std::endl;  std::cout<<"currentPos is
-    // "<<CurrentPos.x()<<" ; "<<CurrentPos.y()<<" ;
-    // "<<CurrentPos.z()<<std::endl;
     countWhile++;
     faceXtetFM fxtCVtmp(PastTet, (*CurrentTri));
     PastTet = CurrentTet;
@@ -959,39 +481,22 @@ double GMSH_ThinLayerFixMeshPlugin::computeDistToOppSide(MVertex *v)
       PastTet->tet()->getVertex(faces[(*CurrentTri)][1]));
     CVTemp2.setEndTrianglePoint3(
       PastTet->tet()->getVertex(faces[(*CurrentTri)][2]));
-    //		CVTemp->setEndTriangle(fxtCVtmp);
-    //		CVTemp2.setEndTriangle(fxtCVtmp);
-    // std::cout<<"         FaceXTetCreated"<<std::endl;
-    // std::cout<<"         Testing FaceXTet in while
-    // "<<fxtCVtmp.t1->tet()->getNum()<<std::endl;  std::cout<<"
-    // CurrentTet before FindNewPoint "<<CurrentTet<<std::endl;
     FindNewPoint((&CurrentPos), CurrentTri, &CurrentTet, InteriorNormal);
-    // std::cout<<"            CurrentTet after FindNewPoint
-    // "<<CurrentTet<<std::endl;  std::cout<<"         FoundNewPoint
-    // While"<<std::endl; 		CurrentTet =
-    //CurrentTet->getNeigh((*CurrentTri));
-    //		//std::cout<<"         GotNeigh While"<<std::endl;
     DistToOppSide += CurrentPos.distance(LastPos);
     LastPos = CurrentPos;
 
     if(CurrentTet != 0) {
       if((CurrentTet->tet()->getNum()) == prevprevtet) {
-        // std::cout<<"reached standstill"<<std::endl;
         while(1) {
         }
       }
       prevprevtet = prevtet;
       prevtet = CurrentTet->tet()->getNum();
     }
-    // std::cout<<"                                    Exiting
-    // While"<<std::endl;
   }
-  // std::cout<<"      Out Of While"<<std::endl;
   CVTemp->setEndPoint(LastPos);
   CVTemp2.setEndPoint(LastPos);
   faceXtetFM fxtCV(PastTet, (*CurrentTri));
-  // std::cout<<"         Testing FaceXTet out of while
-  // "<<fxtCV.t1->tet()->getNum()<<std::endl;
   CVTemp->setEndTrianglePoint1(
     PastTet->tet()->getVertex(faces[(*CurrentTri)][0]));
   CVTemp->setEndTrianglePoint2(
@@ -1004,20 +509,6 @@ double GMSH_ThinLayerFixMeshPlugin::computeDistToOppSide(MVertex *v)
     PastTet->tet()->getVertex(faces[(*CurrentTri)][1]));
   CVTemp2.setEndTrianglePoint3(
     PastTet->tet()->getVertex(faces[(*CurrentTri)][2]));
-  //	CVTemp->setEndTriangle(fxtCV);
-  //	CVTemp2.setEndTriangle(fxtCV);
-  //	//std::cout<<"         Testing FaceXTet out of while second time
-  //"<<CVTemp->getEndTriangle().t1->tet()->getNum()<<std::endl;
-  //	//std::cout<<"         Testing FaceXTet out of while second time CVTemp2
-  //"<<CVTemp2.getEndTriangle().t1->tet()->getNum()<<std::endl;
-  //	CVTemp->setEndTriangle(&fxtCV);
-  //	SVector3 EndDir1(fxtCV.v[1]->x() - fxtCV.v[0]->x(),fxtCV.v[1]->y() -
-  //fxtCV.v[0]->y(),fxtCV.v[1]->z() - fxtCV.v[0]->z()); 	SVector3
-  //EndDir2(fxtCV.v[2]->x() - fxtCV.v[0]->x(),fxtCV.v[2]->y() -
-  //fxtCV.v[0]->y(),fxtCV.v[2]->z() - fxtCV.v[0]->z()); 	SVector3
-  //EndNormal(EndDir1.y() * EndDir2.z() - EndDir1.z() * EndDir2.y(),EndDir1.z()
-  //* EndDir2.x() - EndDir1.x() * EndDir2.z(),EndDir1.x() * EndDir2.y() -
-  //EndDir1.y() * EndDir2.x());
   SVector3 EndNormal(-InteriorNormal.x(), -InteriorNormal.y(),
                      -InteriorNormal.z());
   EndNormal.normalize();
@@ -1049,56 +540,24 @@ double GMSH_ThinLayerFixMeshPlugin::computeDistToOppSide(MVertex *v)
   }
   CVTemp->setTagMaster(-2);
   CVTemp2.setTagMaster(-2);
-  // std::cout<<"            getEndNormal is "<<CVTemp2.getEndNormal().x()<<" ;
-  // "<<CVTemp2.getEndNormal().y()<<" ; "<<CVTemp2.getEndNormal().z()<<std::endl;
-  // std::cout<<"            getEndNormal is "<<CVTemp2.getEndNormal().x()<<" ;
-  // "<<CVTemp2.getEndNormal().y()<<" ; "<<CVTemp2.getEndNormal().z()<<std::endl;
-
   VertexToCorresp[v].push_back(CVTemp);
-  //	VertexToCorresp[v].push_back(&CVTemp2);
-  // std::cout<<"              getEndNormal test is
-  // "<<VertexToCorresp[v][VertexToCorresp[v].size() - 1]->getEndNormal().x()<<"
-  // ; "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().y()<<" ; "<<VertexToCorresp[v][VertexToCorresp[v].size()
-  // - 1]->getEndNormal().z()<<std::endl;  std::cout<<"              getEndNormal
-  // is "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().x()<<" ; "<<VertexToCorresp[v][VertexToCorresp[v].size()
-  // - 1]->getEndNormal().y()<<" ;
-  // "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().z()<<std::endl;  std::cout<<"              getEndNormal is
-  // "<<VertexToCorresp[v][VertexToCorresp[v].size() - 1]->getEndNormal().x()<<"
-  // ; "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().y()<<" ; "<<VertexToCorresp[v][VertexToCorresp[v].size()
-  // - 1]->getEndNormal().z()<<std::endl;  std::cout<<"              getEndNormal
-  // is "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().x()<<" ; "<<VertexToCorresp[v][VertexToCorresp[v].size()
-  // - 1]->getEndNormal().y()<<" ;
-  // "<<VertexToCorresp[v][VertexToCorresp[v].size() -
-  // 1]->getEndNormal().z()<<std::endl;
-
   return DistToOppSide;
 }
 
 SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
 {
   SPoint3 InteriorNormal(0.0, 0.0, 0.0);
-  // std::cout<<"         Entering computeInteriorNormal"<<std::endl;
   std::vector<MTetrahedron *> currentVecTet = VertexToTets[v];
   std::vector<SPoint3> vecInteriorNodes;
   std::vector<SPoint3> vecFirstDir;
   std::vector<SPoint3> vecSecondDir;
-  for(unsigned int i = 0; i < currentVecTet.size(); i++) {
-    // std::cout<<"            Entering for "<<i<<std::endl;
+  for(std::size_t i = 0; i < currentVecTet.size(); i++) {
     MTet4 *tet4Tmp = TetToTet4[currentVecTet[i]];
     for(int j = 0; j < 4; j++) {
-      // std::cout<<"            Entering for "<<j<<std::endl;
       if(tet4Tmp->getNeigh(j) == 0) {
-        // std::cout<<"               Test Passed neigh zero "<<std::endl;
         // find the 4th point,and fill the two vector of the boundary triangle
         faceXtetFM fxtTmp(tet4Tmp, j);
-        // std::cout<<"               Face Created "<<j<<std::endl;
         for(int k = 0; k < 4; k++) {
-          // std::cout<<"                  Entering for "<<k<<std::endl;
           bool foundInteriorPoint = true;
           for(int l = 0; l < 3; l++) {
             if(tet4Tmp->tet()->getVertex(k) == fxtTmp.v[l]) {
@@ -1123,26 +582,17 @@ SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
       }
     }
   }
-  // std::cout<<"         Out of loop for "<<std::endl;
   // at this point we have all the info necessary.
   SPoint3 pointInteriorAverage(0.0, 0.0, 0.0);
-  for(unsigned int i = 0; i < vecInteriorNodes.size(); i++) {
+  for(std::size_t i = 0; i < vecInteriorNodes.size(); i++) {
     pointInteriorAverage +=
       SPoint3(vecInteriorNodes[i].x(), vecInteriorNodes[i].y(),
               vecInteriorNodes[i].z());
-    //		pointInteriorAverage.x() += vecInteriorNodes[i].x();
-    //		pointInteriorAverage.y() += vecInteriorNodes[i].y();
-    //		pointInteriorAverage.z() += vecInteriorNodes[i].z();
   }
   pointInteriorAverage =
     SPoint3(pointInteriorAverage.x() / (double(vecInteriorNodes.size())),
             pointInteriorAverage.y() / (double(vecInteriorNodes.size())),
             pointInteriorAverage.z() / (double(vecInteriorNodes.size())));
-  //	pointInteriorAverage.x() = pointInteriorAverage.x() /
-  //(double(vecInteriorNodes.size())); 	pointInteriorAverage.y() =
-  //pointInteriorAverage.y() / (double(vecInteriorNodes.size()));
-  //	pointInteriorAverage.z() = pointInteriorAverage.z() /
-  //(double(vecInteriorNodes.size()));
   SPoint3 dirInteriorAverage(pointInteriorAverage.x() - v->x(),
                              pointInteriorAverage.y() - v->y(),
                              pointInteriorAverage.z() - v->z());
@@ -1152,11 +602,8 @@ SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
   dirInteriorAverage =
     SPoint3(dirInteriorAverage.x() / norme, dirInteriorAverage.y() / norme,
             dirInteriorAverage.z() / norme);
-  //	dirInteriorAverage.x() = dirInteriorAverage.x() / norme;
-  //	dirInteriorAverage.y() = dirInteriorAverage.y() / norme;
-  //	dirInteriorAverage.z() = dirInteriorAverage.z() / norme;
   std::vector<SPoint3> vecOrthogDir;
-  for(unsigned int i = 0; i < vecFirstDir.size(); i++) {
+  for(std::size_t i = 0; i < vecFirstDir.size(); i++) {
     SPoint3 pointTmp(vecFirstDir[i].y() * vecSecondDir[i].z() -
                        vecFirstDir[i].z() * vecSecondDir[i].y(),
                      vecFirstDir[i].z() * vecSecondDir[i].x() -
@@ -1165,16 +612,13 @@ SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
                        vecFirstDir[i].y() * vecSecondDir[i].x());
     vecOrthogDir.push_back(pointTmp);
   }
-  for(unsigned int i = 0; i < vecOrthogDir.size(); i++) {
+  for(std::size_t i = 0; i < vecOrthogDir.size(); i++) {
     double prodScalTmp = vecOrthogDir[i].x() * dirInteriorAverage.x() +
                          vecOrthogDir[i].y() * dirInteriorAverage.y() +
                          vecOrthogDir[i].z() * dirInteriorAverage.z();
     if(prodScalTmp < 0.0) {
       vecOrthogDir[i] = SPoint3(-vecOrthogDir[i].x(), -vecOrthogDir[i].y(),
                                 -vecOrthogDir[i].z());
-      //			vecOrthogDir[i].x() = - vecOrthogDir[i].x();
-      //			vecOrthogDir[i].y() = - vecOrthogDir[i].y();
-      //			vecOrthogDir[i].z() = - vecOrthogDir[i].z();
     }
     double normeTmp = sqrt(vecOrthogDir[i].x() * vecOrthogDir[i].x() +
                            vecOrthogDir[i].y() * vecOrthogDir[i].y() +
@@ -1182,14 +626,8 @@ SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
     vecOrthogDir[i] =
       SPoint3(vecOrthogDir[i].x() / normeTmp, vecOrthogDir[i].y() / normeTmp,
               vecOrthogDir[i].z() / normeTmp);
-    //		vecOrthogDir[i].x() = vecOrthogDir[i].x() / normeTmp;
-    //		vecOrthogDir[i].y() = vecOrthogDir[i].y() / normeTmp;
-    //		vecOrthogDir[i].z() = vecOrthogDir[i].z() / normeTmp;
     InteriorNormal +=
       SPoint3(vecOrthogDir[i].x(), vecOrthogDir[i].y(), vecOrthogDir[i].z());
-    //		InteriorNormal.x() += vecOrthogDir[i].x();
-    //		InteriorNormal.y() += vecOrthogDir[i].y();
-    //		InteriorNormal.z() += vecOrthogDir[i].z();
   }
   norme = sqrt(InteriorNormal.x() * InteriorNormal.x() +
                InteriorNormal.y() * InteriorNormal.y() +
@@ -1197,9 +635,6 @@ SVector3 GMSH_ThinLayerFixMeshPlugin::computeInteriorNormal(MVertex *v)
   InteriorNormal =
     SPoint3(InteriorNormal.x() / norme, InteriorNormal.y() / norme,
             InteriorNormal.z() / norme);
-  //	InteriorNormal.x() = InteriorNormal.x() / norme;
-  //	InteriorNormal.y() = InteriorNormal.y() / norme;
-  //	InteriorNormal.z() = InteriorNormal.z() / norme;
   return InteriorNormal;
 }
 
@@ -1208,10 +643,7 @@ MTet4 *GMSH_ThinLayerFixMeshPlugin::getTetFromPoint(MVertex *v,
 {
   MTet4 *TetToGet = 0;
   std::vector<MTetrahedron *> currentVecTet = VertexToTets[v];
-  // std::cout<<"   entering getTetFromPoint, vertex "<<v->x()<<" ; "<<v->y()<<"
-  // ; "<<v->z()<<" and dir "<<InteriorNormal.x()<<" ; "<<InteriorNormal.y()<<" ;
-  // "<<InteriorNormal.z()<<std::endl;
-  for(unsigned int i = 0; i < currentVecTet.size(); i++) {
+  for(std::size_t i = 0; i < currentVecTet.size(); i++) {
     std::vector<SVector3> vecDir;
     for(int j = 0; j < 4; j++) {
       if(currentVecTet[i]->getVertex(j) != v) {
@@ -1242,16 +674,11 @@ MTet4 *GMSH_ThinLayerFixMeshPlugin::getTetFromPoint(MVertex *v,
       if(isPositiv2) {
         if(isPositiv3) {
           TetToGet = TetToTet4[currentVecTet[i]];
-          // std::cout<<"      Found one fitting !
-          // "<<TetToGet->tet()->getNum()<<std::endl;
-        }
+         }
       }
     }
   }
-  // std::cout<<"   exiting getTetFromPoint with result "<<TetToGet<<std::endl;
-  // std::cout<<"   getTetFromPoint is tet
-  // "<<TetToGet->tet()->getNum()<<std::endl;
-  return TetToGet;
+   return TetToGet;
 }
 
 bool GMSH_ThinLayerFixMeshPlugin::IsPositivOrientation(SVector3 a, SVector3 b,
@@ -1278,8 +705,7 @@ void GMSH_ThinLayerFixMeshPlugin::FindNewPoint(SPoint3 *CurrentPoint,
   double betaMax = 0.0;
   SPoint3 ResultPoint;
   int triToGet = -1;
-  // std::cout<<"   Entered FindNewPoint"<<std::endl;
-  for(unsigned int n = 0; n < 4; n++) {
+  for(std::size_t n = 0; n < 4; n++) {
     // calculer matrice a inverser
     faceXtetFM fxt((*CurrentTet), n);
     double a = fxt.v[1]->x() - fxt.v[0]->x();
@@ -1300,16 +726,12 @@ void GMSH_ThinLayerFixMeshPlugin::FindNewPoint(SPoint3 *CurrentPoint,
     double di = f * g - d * i;
     double ei = a * i - c * g;
     double fi = c * d - a * f;
-    //		double gi = d * h - e * g;
-    //		double hi = b * g - a * h;
-    //		double ii = a * e - b * d;
     double oppx = (*CurrentPoint).x() - fxt.v[0]->x();
     double oppy = (*CurrentPoint).y() - fxt.v[0]->y();
     double oppz = (*CurrentPoint).z() - fxt.v[0]->z();
     double alpha = ai / detMat * oppx + bi / detMat * oppy + ci / detMat * oppz;
     double beta = di / detMat * oppx + ei / detMat * oppy + fi / detMat * oppz;
-    //		double gamma = gi / detMat * oppx + hi / detMat * oppy + ii / detMat *
-    //oppz;  Test si poids entre 0 et 1 et si length maximale
+    // Test si poids entre 0 et 1 et si length maximale
     if((alpha >= (0.0 - epsilon)) && (alpha <= (1.0 + epsilon))) {
       if((beta >= (0.0 - epsilon)) && (beta <= (1.0 + epsilon))) {
         if(((1.0 - alpha - beta) >= (0.0 - epsilon)) &&
@@ -1333,16 +755,14 @@ void GMSH_ThinLayerFixMeshPlugin::FindNewPoint(SPoint3 *CurrentPoint,
       }
     }
   }
-  // std::cout<<"   End of For loop"<<std::endl;
   // test si trop proche d'un point / une arete
   if(((alphaMax < epsilon) && (betaMax < epsilon)) ||
      ((alphaMax < epsilon) && ((1.0 - alphaMax - betaMax) < epsilon)) ||
      (((1.0 - alphaMax - betaMax) < epsilon) && (betaMax < epsilon))) {
     // proche d'un point
-    // std::cout<<"      Close to point"<<std::endl;
     double DistMinTmp = 10000000.0;
     int indexMinTmp = 0;
-    for(unsigned int i = 0; i < 4; i++) {
+    for(std::size_t i = 0; i < 4; i++) {
       double distanceTmp =
         sqrt(((*CurrentTet)->tet()->getVertex(i)->x() - ResultPoint.x()) *
                ((*CurrentTet)->tet()->getVertex(i)->x() - ResultPoint.x()) +
@@ -1355,10 +775,8 @@ void GMSH_ThinLayerFixMeshPlugin::FindNewPoint(SPoint3 *CurrentPoint,
         indexMinTmp = i;
       }
     }
-    ////std::cout<<"NewTet before is "<<NewTet<<std::endl;
     MTet4 *NewTet = GMSH_ThinLayerFixMeshPlugin::getTetFromPoint(
       (*CurrentTet)->tet()->getVertex(indexMinTmp), InteriorNormal);
-    // std::cout<<"NewTet after is "<<NewTet<<std::endl;
     SPoint3 PointTmp((*CurrentTet)->tet()->getVertex(indexMinTmp)->x(),
                      (*CurrentTet)->tet()->getVertex(indexMinTmp)->y(),
                      (*CurrentTet)->tet()->getVertex(indexMinTmp)->z());
@@ -1368,29 +786,12 @@ void GMSH_ThinLayerFixMeshPlugin::FindNewPoint(SPoint3 *CurrentPoint,
   else if((alphaMax < epsilon) || (betaMax < epsilon) ||
           ((1.0 - alphaMax - betaMax) < epsilon)) {
     // trop proche d'une arete
-    // std::cout<<"      Close to edge"<<std::endl;
   }
   else {
-    // std::cout<<"      Close to nothing"<<std::endl;
-    // std::cout<<"      ResultPoint is "<<ResultPoint.x()<<";
-    // "<<ResultPoint.y()<<"; "<<ResultPoint.z()<<"; "<<" and tritoget is
-    // "<<triToGet<<std::endl;  std::cout<<"      CurrentPoint is
-    // "<<(*CurrentPoint).x()<<"; "<<(*CurrentPoint).y()<<";
-    // "<<(*CurrentPoint).z()<<std::endl;
     (*CurrentPoint) = ResultPoint;
-    // std::cout<<"      test 1"<<std::endl;
-    // std::cout<<"      CurrentTri is "<<(*CurrentTri)<<std::endl;
     (*CurrentTri) = triToGet;
-    // std::cout<<"      test 2"<<std::endl;
-    // std::cout<<"      CurrentTet is "<<(*CurrentTet)<<" and has neighbours
-    // "<< (*CurrentTet)->getNeigh(0)<<" ; "<< (*CurrentTet)->getNeigh(1)<<" ;
-    // "<< (*CurrentTet)->getNeigh(2)<<" ; "<<
-    // (*CurrentTet)->getNeigh(3)<<std::endl;
     (*CurrentTet) = (*CurrentTet)->getNeigh(triToGet);
-    // std::cout<<"      CurrentTet has been changed to
-    // "<<(*CurrentTet)<<std::endl;  std::cout<<"      test 3"<<std::endl;
   }
-  // std::cout<<"   Exit FindNewPoint"<<std::endl;
 }
 
 void GMSH_ThinLayerFixMeshPlugin::fillVertexToTets()
@@ -1398,9 +799,9 @@ void GMSH_ThinLayerFixMeshPlugin::fillVertexToTets()
   GModel *m = GModel::current();
   for(GModel::riter itr = m->firstRegion(); itr != m->lastRegion(); itr++) {
     GRegion *rTmp = (*itr);
-    for(unsigned int i = 0; i < rTmp->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < rTmp->tetrahedra.size(); i++) {
       MTetrahedron *elem = rTmp->tetrahedra[i];
-      for(unsigned int j = 0; j < 4; j++) {
+      for(std::size_t j = 0; j < 4; j++) {
         std::vector<MTetrahedron *> emptyTetVec;
         emptyTetVec.clear();
         VertexToTets[elem->getVertex(j)] = emptyTetVec;
@@ -1412,9 +813,9 @@ void GMSH_ThinLayerFixMeshPlugin::fillVertexToTets()
   }
   for(GModel::riter itr = m->firstRegion(); itr != m->lastRegion(); itr++) {
     GRegion *rTmp = (*itr);
-    for(unsigned int i = 0; i < rTmp->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < rTmp->tetrahedra.size(); i++) {
       MTetrahedron *elem = rTmp->tetrahedra[i];
-      for(unsigned int j = 0; j < 4; j++) {
+      for(std::size_t j = 0; j < 4; j++) {
         VertexToTets[elem->getVertex(j)].push_back(elem);
       }
     }
@@ -1483,11 +884,11 @@ void GMSH_ThinLayerFixMeshPlugin::fillTetToTet4()
       for(GModel::fiter it = gr->model()->firstFace();
           it != gr->model()->lastFace(); ++it) {
         GFace *gf = *it;
-        for(unsigned int i = 0; i < gf->triangles.size(); i++) {
+        for(std::size_t i = 0; i < gf->triangles.size(); i++) {
           setLcsFM(gf->triangles[i], vSizesMap, bndVertices);
         }
       }
-      for(unsigned int i = 0; i < gr->tetrahedra.size(); i++)
+      for(std::size_t i = 0; i < gr->tetrahedra.size(); i++)
         setLcsFM(gr->tetrahedra[i], vSizesMap, bndVertices);
       for(std::map<MVertex *, double>::iterator it = vSizesMap.begin();
           it != vSizesMap.end(); ++it) {
@@ -1496,7 +897,7 @@ void GMSH_ThinLayerFixMeshPlugin::fillTetToTet4()
         vSizesBGM.push_back(it->second);
       }
     }
-    for(unsigned int i = 0; i < gr->tetrahedra.size(); i++) {
+    for(std::size_t i = 0; i < gr->tetrahedra.size(); i++) {
       MTet4 *currentTet4 =
         myFactory.Create(gr->tetrahedra[i], vSizes, vSizesBGM);
       TetToTet4[gr->tetrahedra[i]] = currentTet4;
@@ -1512,25 +913,8 @@ void GMSH_ThinLayerFixMeshPlugin::fillTetToTet4()
     //		//std::cout<<"inserted "<<(*itTp)->tet()->getNum()<<std::endl;
   }
   connectTets(vecAllTet4);
-
-  //	GModel *m = GModel::current();
-  //	std::vector<MTet4*> vecAllTet4;
-  //	vecAllTet4.clear();
-  //	for (GModel::riter itr= m->firstRegion();itr != m->lastRegion();itr++){
-  //		GRegion* rTmp = (*itr);
-  //		for (unsigned int i = 0; i < rTmp->tetrahedra.size();i++){
-  //			MTetrahedron* elem = rTmp->tetrahedra[i];
-  //			MTet4 tet4tmp = MTet4(elem,0.0);
-  //			MTet4* currentTet4 = &tet4tmp;
-  //			TetToTet4[elem] = currentTet4;
-  //			vecAllTet4.push_back(currentTet4);
-  //		}
-  //	}
-  //	connectTets(vecAllTet4);
 }
 
-/****************static declarations****************/
-
 std::map<MVertex *, std::vector<MTetrahedron *> >
   GMSH_ThinLayerFixMeshPlugin::VertexToTets;
 std::map<MTetrahedron *, MTet4 *> GMSH_ThinLayerFixMeshPlugin::TetToTet4;
diff --git a/Plugin/Triangulate.cpp b/Plugin/Triangulate.cpp
index 25b10970a3fed5f49f9f3ab4331150b2dffd4578..d681e6103bfddb4b246f905736e723b7e79e9d32 100644
--- a/Plugin/Triangulate.cpp
+++ b/Plugin/Triangulate.cpp
@@ -98,13 +98,13 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
 
   if(points.size() < 3) {
     Msg::Error("Need at least 3 points to triangulate");
-    for(unsigned int i = 0; i < points.size(); i++) delete points[i];
+    for(std::size_t i = 0; i < points.size(); i++) delete points[i];
     return v1;
   }
 
   // get bounding box
   SBoundingBox3d bbox;
-  for(unsigned int i = 0; i < points.size(); i++) bbox += points[i]->point();
+  for(std::size_t i = 0; i < points.size(); i++) bbox += points[i]->point();
   double lc = 10 * norm(SVector3(bbox.max(), bbox.min()));
 
   // project points onto plane
@@ -113,7 +113,7 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
   s->computeMeanPlane(points);
   double x, y, z, VX[3], VY[3];
   s->getMeanPlaneData(VX, VY, x, y, z);
-  for(unsigned int i = 0; i < points.size(); i++) {
+  for(std::size_t i = 0; i < points.size(); i++) {
     double vec[3] = {points[i]->x() - x, points[i]->y() - y,
                      points[i]->z() - z};
     double u = prosca(vec, VX);
@@ -131,7 +131,7 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
 
     // build a point record structure for the divide and conquer algorithm
     DocRecord doc(points.size());
-    for(unsigned int i = 0; i < points.size(); i++) {
+    for(std::size_t i = 0; i < points.size(); i++) {
       double XX = CTX::instance()->mesh.randFactor * lc * (double)rand() /
                   (double)RAND_MAX;
       double YY = CTX::instance()->mesh.randFactor * lc * (double)rand() /
@@ -199,7 +199,7 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
 
     Msg::Info("Using new triangulation code");
     std::vector<MTriangle *> tris;
-    for(unsigned int i = 0; i < points.size(); i++) {
+    for(std::size_t i = 0; i < points.size(); i++) {
       double XX = 1.e-12 * lc * (double)rand() / (double)RAND_MAX;
       double YY = 1.e-12 * lc * (double)rand() / (double)RAND_MAX;
       points[i]->x() += XX;
@@ -209,7 +209,7 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
 
     v2 = new PView();
     data2 = getDataList(v2);
-    for(unsigned int i = 0; i < tris.size(); i++) {
+    for(std::size_t i = 0; i < tris.size(); i++) {
       PointData *p[3];
       p[0] = (PointData *)tris[i]->getVertex(0);
       p[1] = (PointData *)tris[i]->getVertex(1);
@@ -246,7 +246,7 @@ PView *GMSH_TriangulatePlugin::execute(PView *v)
     }
   }
 
-  for(unsigned int i = 0; i < points.size(); i++) delete points[i];
+  for(std::size_t i = 0; i < points.size(); i++) delete points[i];
 
   for(int i = 0; i < data1->getNumTimeSteps(); i++)
     data2->Time.push_back(data1->getTime(i));
diff --git a/Plugin/VoroMetal.cpp b/Plugin/VoroMetal.cpp
index 86bdac471a33d61ba34438a8dd119d426edf2a2e..93e7626edec7d4bc621bdadb9f7d4c33f8627fa4 100644
--- a/Plugin/VoroMetal.cpp
+++ b/Plugin/VoroMetal.cpp
@@ -81,7 +81,7 @@ void voroMetal3D::execute(GRegion *gr, double h)
   std::set<MVertex *> vertices;
   std::set<MVertex *>::iterator it;
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
     for(std::size_t j = 0; j < element->getNumVertices(); j++) {
       MVertex *vertex = element->getVertex(j);
@@ -107,7 +107,7 @@ void voroMetal3D::execute(GRegion *gr, double h)
 void voroMetal3D::execute(std::vector<double> &properties, int radical,
                           double h, double xMax, double yMax, double zMax)
 {
-  unsigned int i;
+  std::size_t i;
   std::vector<SPoint3> vertices;
   std::vector<double> radii;
   for(i = 0; i < properties.size() / 4; i++) {
@@ -122,11 +122,11 @@ void voroMetal3D::execute(std::vector<SPoint3> &vertices,
                           std::vector<double> &radii, int radical, double h,
                           double xMax, double yMax, double zMax)
 {
-  unsigned int i;
-  unsigned int j;
-  unsigned int k;
+  std::size_t i;
+  std::size_t j;
+  std::size_t k;
   int start;
-  unsigned int end;
+  std::size_t end;
   int index1;
   int index2;
   int val;
@@ -448,7 +448,7 @@ void voroMetal3D::print_geo_line_loop(int index, std::vector<int> &indices,
                                       std::vector<int> &orientations,
                                       std::ofstream &file)
 {
-  unsigned int i;
+  std::size_t i;
   file << "Line Loop(" << index << ")={";
   for(i = 0; i < indices.size(); i++) {
     if(orientations[i] == 1) file << "-";
@@ -461,7 +461,7 @@ void voroMetal3D::print_geo_line_loop(int index, std::vector<int> &indices,
 void voroMetal3D::print_geo_face_loop(int index, std::vector<int> &indices,
                                       std::ofstream &file)
 {
-  unsigned int i;
+  std::size_t i;
   file << "Surface Loop(" << index << ")={";
   for(i = 0; i < indices.size(); i++) {
     file << indices[i];
@@ -473,8 +473,8 @@ void voroMetal3D::print_geo_face_loop(int index, std::vector<int> &indices,
 void voroMetal3D::correspondance(double e, double xMax, double yMax,
                                  double zMax)
 {
-  unsigned int i;
-  unsigned int j;
+  std::size_t i;
+  std::size_t j;
   int count;
   int val;
   int phase;
@@ -1108,7 +1108,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1149,7 +1149,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1190,7 +1190,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1231,7 +1231,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1272,7 +1272,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1313,7 +1313,7 @@ static void computeBestSeeds(const char *filename)
         propertiesModified.clear();
         propertiesModified.resize(4 * max);
         std::cout << "before assign propModif" << std::endl;
-        for(unsigned int k = 0; k < properties.size(); k++) {
+        for(std::size_t k = 0; k < properties.size(); k++) {
           propertiesModified[k] = properties[k];
         }
         std::cout << "after assign propModif" << std::endl;
@@ -1380,12 +1380,12 @@ static void computeBestSeeds(const char *filename)
     GModel::current()->load("MicrostructurePolycrystal3D.geo");
     voroMetal3D vm2;
     vm2.correspondance(0.00001, xMax, yMax, zMax);
-    for(unsigned int iTmp = 0; iTmp < listDistances.size(); iTmp++) {
+    for(std::size_t iTmp = 0; iTmp < listDistances.size(); iTmp++) {
       std::cout << "distMinGlobal " << iTmp << " egale a "
                 << listDistances[iTmp] << std::endl;
     }
     std::cout << "liste des nouveaux seeds :" << std::endl;
-    for(unsigned int iTmp = 0; iTmp < max; iTmp++) {
+    for(std::size_t iTmp = 0; iTmp < max; iTmp++) {
       std::cout << properties[4 * iTmp] << " " << properties[4 * iTmp + 1]
                 << " " << properties[4 * iTmp + 2] << " "
                 << properties[4 * iTmp + 3] << std::endl;
diff --git a/Plugin/VoroMetal.h b/Plugin/VoroMetal.h
index 69512eda39b397f14c3be75333093cba9907cbfd..d9ce656815d7c1ce54609fc43db086cb9192bf0e 100644
--- a/Plugin/VoroMetal.h
+++ b/Plugin/VoroMetal.h
@@ -23,7 +23,7 @@ public:
   ~geo_cell() {}
   int search_line(std::pair<int, int> line)
   {
-    unsigned int i;
+    std::size_t i;
     for(i = 0; i < lines.size(); i++) {
       if(lines[i].first == line.first && lines[i].second == line.second)
         return i;
diff --git a/Post/OctreePost.cpp b/Post/OctreePost.cpp
index 62acf031c28faf2b14e535304af9fe6901cbdd35..498e8de44ab1b4bef597bf172279377d887a69d7 100644
--- a/Post/OctreePost.cpp
+++ b/Post/OctreePost.cpp
@@ -216,7 +216,7 @@ static void pyrCentroid(void *a, double *x)
 
 static void addListOfStuff(Octree *o, std::vector<double> &l, int nbelm)
 {
-  for(unsigned int i = 0; i < l.size(); i += nbelm) Octree_Insert(&l[i], o);
+  for(std::size_t i = 0; i < l.size(); i += nbelm) Octree_Insert(&l[i], o);
 }
 
 // OctreePost implementation
@@ -407,7 +407,7 @@ static void *getElement(double P[3], Octree *octree, int nbNod, int qn,
       // try to use the value from the same geometrical element as the one
       // provided in qx/y/z
       double eps = CTX::instance()->geom.tolerance;
-      for(unsigned int i = 0; i < v.size(); i++) {
+      for(std::size_t i = 0; i < v.size(); i++) {
         double *X = (double *)v[i], *Y = &X[qn], *Z = &X[2 * qn];
         bool ok = true;
         for(int j = 0; j < qn; j++) {
@@ -434,7 +434,7 @@ static MElement *getElement(double P[3], GModel *m, int qn, double *qx,
     // provided in qx/y/z
     double eps = CTX::instance()->geom.tolerance;
     std::vector<MElement *> elements = m->getMeshElementsByCoord(pt);
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       if(qn == static_cast<int>(elements[i]->getNumVertices())) {
         bool ok = true;
         for(int j = 0; j < qn; j++) {
diff --git a/Post/PView.cpp b/Post/PView.cpp
index cb17bcb0dbb03a7f4493c0761842062c6b276845..6f25bec732e3beea24efbdc9a96c677f1f681abe 100644
--- a/Post/PView.cpp
+++ b/Post/PView.cpp
@@ -33,7 +33,7 @@ void PView::_init(int tag)
   va_points = va_lines = va_triangles = va_vectors = va_ellipses = 0;
   normals = 0;
 
-  for(unsigned int i = 0; i < list.size(); i++) {
+  for(std::size_t i = 0; i < list.size(); i++) {
     if(list[i]->getTag() == _tag) {
       // in normal operation this should not happen, but we allow it when
       // programmatically forcing view tags (e.g. when using the views from
@@ -45,7 +45,7 @@ void PView::_init(int tag)
   }
 
   list.push_back(this);
-  for(unsigned int i = 0; i < list.size(); i++) list[i]->setIndex(i);
+  for(std::size_t i = 0; i < list.size(); i++) list[i]->setIndex(i);
 }
 
 PView::PView(int tag)
@@ -173,18 +173,18 @@ PView::~PView()
 
   std::vector<PView *>::iterator it = std::find(list.begin(), list.end(), this);
   if(it != list.end()) list.erase(it);
-  for(unsigned int i = 0; i < list.size(); i++) list[i]->setIndex(i);
+  for(std::size_t i = 0; i < list.size(); i++) list[i]->setIndex(i);
 
   if(!_data) return;
 
   // do not delete if another view is an alias of this one
-  for(unsigned int i = 0; i < list.size(); i++)
+  for(std::size_t i = 0; i < list.size(); i++)
     if(list[i]->getAliasOf() == _tag) return;
 
   // do not delete if this view is an alias and 1) if the original
   // still exists, or 2) if there are other aliases to the same view
   if(_aliasOf >= 0)
-    for(unsigned int i = 0; i < list.size(); i++)
+    for(std::size_t i = 0; i < list.size(); i++)
       if(list[i]->getTag() == _aliasOf || list[i]->getAliasOf() == _aliasOf)
         return;
 
@@ -243,7 +243,7 @@ void PView::combine(bool time, int how, bool remove)
   //        2: try to combine all views having identical names
 
   std::vector<nameData> nds;
-  for(unsigned int i = 0; i < list.size(); i++) {
+  for(std::size_t i = 0; i < list.size(); i++) {
     PView *p = list[i];
     PViewData *data = p->getData();
     if(how || p->getOptions()->visible) {
@@ -256,7 +256,7 @@ void PView::combine(bool time, int how, bool remove)
         nd.name = "__all__";
       else
         nd.name = "__vis__";
-      unsigned int j = 0;
+      std::size_t j = 0;
       while(j < nds.size()) {
         if(nds[j].name == nd.name) {
           nds[j].data.push_back(data);
@@ -274,11 +274,11 @@ void PView::combine(bool time, int how, bool remove)
   }
 
   std::set<PView *> rm;
-  for(unsigned int i = 0; i < nds.size(); i++) {
+  for(std::size_t i = 0; i < nds.size(); i++) {
     if(nds[i].data.size() > 1) { // there's potentially something to combine
       // sanity checks:
       bool allListBased = true, allModelBased = true;
-      for(unsigned int j = 0; j < nds[i].data.size(); j++) {
+      for(std::size_t j = 0; j < nds[i].data.size(); j++) {
         PViewDataList *d1 = dynamic_cast<PViewDataList *>(nds[i].data[j]);
         if(!d1) allListBased = false;
         PViewDataGModel *d2 = dynamic_cast<PViewDataGModel *>(nds[i].data[j]);
@@ -299,7 +299,7 @@ void PView::combine(bool time, int how, bool remove)
       PView *p = new PView(data);
       bool res = time ? data->combineTime(nds[i]) : data->combineSpace(nds[i]);
       if(res) {
-        for(unsigned int j = 0; j < nds[i].indices.size(); j++)
+        for(std::size_t j = 0; j < nds[i].indices.size(); j++)
           rm.insert(list[nds[i].indices[j]]);
         PViewOptions *opt = p->getOptions();
         if(opt->adaptVisualizationGrid) {
@@ -330,7 +330,7 @@ public:
 void PView::sortByName()
 {
   std::sort(list.begin(), list.end(), PViewLessThanName());
-  for(unsigned int i = 0; i < list.size(); i++) list[i]->setIndex(i);
+  for(std::size_t i = 0; i < list.size(); i++) list[i]->setIndex(i);
 }
 
 PView *PView::getViewByName(const std::string &name, int timeStep,
@@ -364,7 +364,7 @@ PView *PView::getViewByFileName(const std::string &fileName, int timeStep,
 
 PView *PView::getViewByTag(int tag, int timeStep, int partition)
 {
-  for(unsigned int i = 0; i < list.size(); i++) {
+  for(std::size_t i = 0; i < list.size(); i++) {
     if(list[i]->getTag() == tag &&
        ((timeStep < 0 || !list[i]->getData()->hasTimeStep(timeStep)) ||
         (partition < 0 ||
diff --git a/Post/PViewData.cpp b/Post/PViewData.cpp
index e5515eb34fcc08ed074b3cffb452cd91f13c7140..d990a1120659ac8ae704e4de47cc0be91de0de02 100644
--- a/Post/PViewData.cpp
+++ b/Post/PViewData.cpp
@@ -20,7 +20,7 @@ PViewData::~PViewData()
   if(_adaptive) delete _adaptive;
   for(interpolationMatrices::iterator it = _interpolation.begin();
       it != _interpolation.end(); it++)
-    for(unsigned int i = 0; i < it->second.size(); i++) delete it->second[i];
+    for(std::size_t i = 0; i < it->second.size(); i++) delete it->second[i];
   if(_octree) delete _octree;
 }
 
@@ -200,7 +200,7 @@ void PViewData::removeInterpolationScheme(const std::string &name)
   if(it != _interpolationSchemes.end()) {
     for(interpolationMatrices::iterator it2 = it->second.begin();
         it2 != it->second.end(); it2++)
-      for(unsigned int i = 0; i < it2->second.size(); i++)
+      for(std::size_t i = 0; i < it2->second.size(); i++)
         delete it2->second[i];
     _interpolationSchemes.erase(it);
   }
@@ -213,7 +213,7 @@ void PViewData::removeAllInterpolationSchemes()
   for(; it != _interpolationSchemes.end(); it++)
     for(interpolationMatrices::iterator it2 = it->second.begin();
         it2 != it->second.end(); it2++)
-      for(unsigned int i = 0; i < it2->second.size(); i++)
+      for(std::size_t i = 0; i < it2->second.size(); i++)
         delete it2->second[i];
   _interpolationSchemes.clear();
   std::map<std::string, interpolationMatrices>().swap(_interpolationSchemes);
diff --git a/Post/PViewDataGModel.cpp b/Post/PViewDataGModel.cpp
index c9c1bd8817073a7b71c7691de8f1e440c2d80aef..fafa618bcabfaa87ec4ed79cec2b6f2f0276d3d5 100644
--- a/Post/PViewDataGModel.cpp
+++ b/Post/PViewDataGModel.cpp
@@ -24,7 +24,7 @@ PViewDataGModel::PViewDataGModel(DataType type)
 
 PViewDataGModel::~PViewDataGModel()
 {
-  for(unsigned int i = 0; i < _steps.size(); i++) delete _steps[i];
+  for(std::size_t i = 0; i < _steps.size(); i++) delete _steps[i];
 }
 
 static MElement *_getOneElementOfGivenType(GModel *m, int type)
@@ -189,7 +189,7 @@ bool PViewDataGModel::finalize(bool computeMinMax,
     // interpolation: it's constant)
     int types[] = {TYPE_PNT, TYPE_LIN, TYPE_TRI, TYPE_QUA,   TYPE_TET,
                    TYPE_HEX, TYPE_PRI, TYPE_PYR, TYPE_POLYG, TYPE_POLYH};
-    for(unsigned int i = 0; i < sizeof(types) / sizeof(types[0]); i++) {
+    for(std::size_t i = 0; i < sizeof(types) / sizeof(types[0]); i++) {
       if(!haveInterpolationMatrices(types[i])) {
         MElement *e = _getOneElementOfGivenType(model, types[i]);
         if(e) {
@@ -270,7 +270,7 @@ int PViewDataGModel::getNumTimeSteps() { return _steps.size(); }
 
 int PViewDataGModel::getFirstNonEmptyTimeStep(int start)
 {
-  for(unsigned int i = start; i < _steps.size(); i++)
+  for(std::size_t i = start; i < _steps.size(); i++)
     if(_steps[i]->getNumData()) return i;
   return start;
 }
@@ -337,7 +337,7 @@ SBoundingBox3d PViewDataGModel::getBoundingBox(int step)
 {
   if(step < 0 || _steps.empty()) {
     SBoundingBox3d tmp;
-    for(unsigned int i = 0; i < _steps.size(); i++) {
+    for(std::size_t i = 0; i < _steps.size(); i++) {
       if(!_steps[i]->getBoundingBox().empty())
         tmp += _steps[i]->getBoundingBox();
     }
@@ -710,7 +710,7 @@ void PViewDataGModel::smooth()
 {
   if(_type == NodeData || _type == GaussPointData) return;
   std::vector<stepData<double> *> _steps2;
-  for(unsigned int step = 0; step < _steps.size(); step++) {
+  for(std::size_t step = 0; step < _steps.size(); step++) {
     GModel *m = _steps[step]->getModel();
     int numComp = _steps[step]->getNumComponents();
     _steps2.push_back(new stepData<double>(
@@ -746,7 +746,7 @@ void PViewDataGModel::smooth()
       }
     }
   }
-  for(unsigned int i = 0; i < _steps.size(); i++) delete _steps[i];
+  for(std::size_t i = 0; i < _steps.size(); i++) delete _steps[i];
   _steps = _steps2;
   _type = NodeData;
   finalize();
@@ -755,7 +755,7 @@ void PViewDataGModel::smooth()
 double PViewDataGModel::getMemoryInMb()
 {
   double m = 0.;
-  for(unsigned int i = 0; i < _steps.size(); i++)
+  for(std::size_t i = 0; i < _steps.size(); i++)
     m += _steps[i]->getMemoryInMb();
   return m;
 }
@@ -765,7 +765,7 @@ bool PViewDataGModel::combineTime(nameData &nd)
   // sanity checks
   if(nd.data.size() < 2) return false;
   std::vector<PViewDataGModel *> data(nd.data.size());
-  for(unsigned int i = 0; i < nd.data.size(); i++) {
+  for(std::size_t i = 0; i < nd.data.size(); i++) {
     data[i] = dynamic_cast<PViewDataGModel *>(nd.data[i]);
     if(!data[i]) {
       Msg::Error("Cannot combine hybrid data");
@@ -778,13 +778,13 @@ bool PViewDataGModel::combineTime(nameData &nd)
         data[0]->_interpolation.begin();
       it != data[0]->_interpolation.end(); it++)
     if(_interpolation[it->first].empty())
-      for(unsigned int i = 0; i < it->second.size(); i++)
+      for(std::size_t i = 0; i < it->second.size(); i++)
         _interpolation[it->first].push_back(
           new fullMatrix<double>(*it->second[i]));
 
   // (deep) copy step data
-  for(unsigned int i = 0; i < data.size(); i++)
-    for(unsigned int j = 0; j < data[i]->_steps.size(); j++)
+  for(std::size_t i = 0; i < data.size(); i++)
+    for(std::size_t j = 0; j < data[i]->_steps.size(); j++)
       if(data[i]->hasTimeStep(j))
         _steps.push_back(new stepData<double>(*data[i]->_steps[j]));
 
@@ -845,7 +845,7 @@ bool PViewDataGModel::hasMultipleMeshes()
 {
   if(_steps.size() <= 1) return false;
   GModel *m = _steps[0]->getModel();
-  for(unsigned int i = 1; i < _steps.size(); i++)
+  for(std::size_t i = 1; i < _steps.size(); i++)
     if(m != _steps[i]->getModel()) return true;
   return false;
 }
@@ -853,7 +853,7 @@ bool PViewDataGModel::hasMultipleMeshes()
 bool PViewDataGModel::hasModel(GModel *model, int step)
 {
   if(step < 0) {
-    for(unsigned int i = 0; i < _steps.size(); i++)
+    for(std::size_t i = 0; i < _steps.size(); i++)
       if(model == _steps[i]->getModel()) return true;
     return false;
   }
diff --git a/Post/PViewDataGModelIO.cpp b/Post/PViewDataGModelIO.cpp
index db15157433874ca2311e166079327fd39794128c..14f1ba8babd59c02de89a397c785167c7865918f 100644
--- a/Post/PViewDataGModelIO.cpp
+++ b/Post/PViewDataGModelIO.cpp
@@ -56,7 +56,7 @@ bool PViewDataGModel::addData(GModel *model, const std::vector<int> &tags,
 
   if(numComp < 0) {
     numComp = 9;
-    for(unsigned int i = 0; i < data.size(); i++)
+    for(std::size_t i = 0; i < data.size(); i++)
       numComp = std::min(numComp, (int)data[i].size());
   }
 
@@ -70,7 +70,7 @@ bool PViewDataGModel::addData(GModel *model, const std::vector<int> &tags,
                                      model->getNumMeshElements();
   _steps[step]->resizeData(numEnt);
 
-  for(unsigned int i = 0; i < data.size(); i++) {
+  for(std::size_t i = 0; i < data.size(); i++) {
     int mult = data[i].size() / numComp;
     double *d = _steps[step]->getData(tags[i], true, mult);
     for(int j = 0; j < numComp * mult; j++) d[j] = data[i][j];
@@ -82,7 +82,7 @@ bool PViewDataGModel::addData(GModel *model, const std::vector<int> &tags,
 
 void PViewDataGModel::destroyData()
 {
-  for(unsigned int i = 0; i < _steps.size(); i++) _steps[i]->destroyData();
+  for(std::size_t i = 0; i < _steps.size(); i++) _steps[i]->destroyData();
 }
 
 bool PViewDataGModel::readMSH(const std::string &viewName,
@@ -106,7 +106,7 @@ bool PViewDataGModel::readMSH(const std::string &viewName,
   /*
   // if we already have maxSteps for this view, return
   int numSteps = 0, maxSteps = 1000000000;
-  for(unsigned int i = 0; i < _steps.size(); i++)
+  for(std::size_t i = 0; i < _steps.size(); i++)
     numSteps += _steps[i]->getNumData() ? 1 : 0;
   if(numSteps > maxSteps) return true;
   */
@@ -247,7 +247,7 @@ bool PViewDataGModel::writeMSH(const std::string &fileName, double version,
     fprintf(fp, "$EndInterpolationScheme\n");
   }
 
-  for(unsigned int step = 0; step < _steps.size(); step++) {
+  for(std::size_t step = 0; step < _steps.size(); step++) {
     int numEnt = 0, numComp = _steps[step]->getNumComponents();
     for(int i = 0; i < _steps[step]->getNumData(); i++)
       if(_steps[step]->getData(i)) numEnt++;
@@ -257,10 +257,10 @@ bool PViewDataGModel::writeMSH(const std::string &fileName, double version,
         fprintf(fp, "1\n\"%s\"\n", getName().c_str());
         fprintf(fp, "1\n%.16g\n", _steps[step]->getTime());
         if(partitionNum)
-          fprintf(fp, "4\n%d\n%d\n%d\n%d\n", step, numComp, numEnt,
+          fprintf(fp, "4\n%lu\n%d\n%d\n%d\n", step, numComp, numEnt,
                   partitionNum);
         else
-          fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numEnt);
+          fprintf(fp, "3\n%lu\n%d\n%d\n", step, numComp, numEnt);
         for(int i = 0; i < _steps[step]->getNumData(); i++) {
           if(_steps[step]->getData(i)) {
             MVertex *v = _steps[step]->getModel()->getMeshVertexByTag(i);
@@ -298,10 +298,10 @@ bool PViewDataGModel::writeMSH(const std::string &fileName, double version,
 
         fprintf(fp, "1\n%.16g\n", _steps[step]->getTime());
         if(partitionNum)
-          fprintf(fp, "4\n%d\n%d\n%d\n%d\n", step, numComp, numEnt,
+          fprintf(fp, "4\n%lu\n%d\n%d\n%d\n", step, numComp, numEnt,
                   partitionNum);
         else
-          fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numEnt);
+          fprintf(fp, "3\n%lu\n%d\n%d\n", step, numComp, numEnt);
         for(int i = 0; i < _steps[step]->getNumData(); i++) {
           if(_steps[step]->getData(i)) {
             MElement *e = model->getMeshElementByTag(i);
@@ -453,7 +453,7 @@ void PViewDataGModel::importLists(int N[24], std::vector<double> *V[24])
       _steps[step]->computeBoundingBox();
       _steps[step]->setTime(step);
       _steps[step]->resizeData(nbe);
-      for(unsigned int j = 0; j < list->size(); j += stride) {
+      for(std::size_t j = 0; j < list->size(); j += stride) {
         double *tmp = &(*list)[j];
         int num = (int)tmp[0];
         double *d = _steps[step]->getData(num, true, nn);
@@ -623,8 +623,8 @@ bool PViewDataGModel::readMED(const std::string &fileName, int fileIndex)
 #endif
 
   std::vector<std::pair<int, int> > pairs;
-  for(unsigned int i = 0; i < sizeof(entType) / sizeof(entType[0]); i++) {
-    for(unsigned int j = 0; j < sizeof(eleType) / sizeof(eleType[0]); j++) {
+  for(std::size_t i = 0; i < sizeof(entType) / sizeof(entType[0]); i++) {
+    for(std::size_t j = 0; j < sizeof(eleType) / sizeof(eleType[0]); j++) {
       if((!i && !j) || j) {
 #if(MED_MAJOR_NUM >= 3)
         med_int n = numSteps;
@@ -652,7 +652,7 @@ bool PViewDataGModel::readMED(const std::string &fileName, int fileIndex)
     // FIXME: MED3 allows to store multi-step meshes; we should
     // interface this with our own gmodel-per-step structure
 
-    for(unsigned int pair = 0; pair < pairs.size(); pair++) {
+    for(std::size_t pair = 0; pair < pairs.size(); pair++) {
       // get step info
       med_entite_maillage ent = entType[pairs[pair].first];
       med_geometrie_element ele = eleType[pairs[pair].second];
@@ -794,7 +794,7 @@ bool PViewDataGModel::readMED(const std::string &fileName, int fileIndex)
       if(profile.empty()) {
         Msg::Debug("MED profile is empty -- using continuous sequence");
         profile.resize(numVal / mult);
-        for(unsigned int i = 0; i < profile.size(); i++) profile[i] = i + 1;
+        for(std::size_t i = 0; i < profile.size(); i++) profile[i] = i + 1;
       }
 
       // get size of full array and tags (if any) of entities
@@ -850,7 +850,7 @@ bool PViewDataGModel::readMED(const std::string &fileName, int fileIndex)
       }
 
       // compute entity numbers using profile, then fill step data
-      for(unsigned int i = 0; i < profile.size(); i++) {
+      for(std::size_t i = 0; i < profile.size(); i++) {
         int num;
         if(tags.empty()) {
           num = startIndex + profile[i];
@@ -979,8 +979,8 @@ bool PViewDataGModel::writeMED(const std::string &fileName)
     Msg::Error("Could not get valid number of nodes in mesh");
     return false;
   }
-  for(unsigned int step = 0; step < _steps.size(); step++) {
-    unsigned int n = 0;
+  for(std::size_t step = 0; step < _steps.size(); step++) {
+    std::size_t n = 0;
     for(int i = 0; i < _steps[step]->getNumData(); i++)
       if(_steps[step]->getData(i)) n++;
     if(n != profile.size() || numComp != _steps[step]->getNumComponents()) {
@@ -989,7 +989,7 @@ bool PViewDataGModel::writeMED(const std::string &fileName)
     }
     double time = _steps[step]->getTime();
     std::vector<double> val(profile.size() * numComp);
-    for(unsigned int i = 0; i < profile.size(); i++)
+    for(std::size_t i = 0; i < profile.size(); i++)
       for(int k = 0; k < numComp; k++)
         val[i * numComp + k] = _steps[step]->getData(indices[i])[k];
 #if(MED_MAJOR_NUM >= 3)
@@ -1046,7 +1046,7 @@ void PViewDataGModel::sendToServer(const std::string &name)
   }
 
   int numEnt = 0, numComp = 0;
-  for(unsigned int step = 0; step < _steps.size(); step++) {
+  for(std::size_t step = 0; step < _steps.size(); step++) {
     int nc = _steps[step]->getNumComponents();
     int ne = 0;
     for(int i = 0; i < _steps[step]->getNumData(); i++)
@@ -1075,7 +1075,7 @@ void PViewDataGModel::sendToServer(const std::string &name)
       }
       int num = v->getNum();
       exp.push_back(num);
-      for(unsigned int step = 0; step < _steps.size(); step++){
+      for(std::size_t step = 0; step < _steps.size(); step++){
         for(int k = 0; k < numComp; k++){
           double data = _steps[step]->getData(i)[k];
           exp.push_back(data);
diff --git a/Post/PViewDataList.cpp b/Post/PViewDataList.cpp
index 4f4d43fe8e0cb6e77ab1d1721f707647aa7268d0..c81b5593f50afad51ef5bbbec8f98340c259dec1 100644
--- a/Post/PViewDataList.cpp
+++ b/Post/PViewDataList.cpp
@@ -34,7 +34,7 @@ void PViewDataList::setXY(std::vector<double> &x, std::vector<double> &y)
 {
   NbSP = 0;
   SP.clear();
-  for(unsigned int i = 0; i < std::min(x.size(), y.size()); i++) {
+  for(std::size_t i = 0; i < std::min(x.size(), y.size()); i++) {
     SP.push_back(x[i]);
     SP.push_back(0.);
     SP.push_back(0.);
@@ -211,7 +211,7 @@ double PViewDataList::getMax(int step, bool onlyVisible, int tensorRep,
 void PViewDataList::_stat(std::vector<double> &D, std::vector<char> &C, int nb)
 {
   // compute statistics for text lists
-  for(unsigned int i = 0; i < D.size(); i += nb) {
+  for(std::size_t i = 0; i < D.size(); i += nb) {
     double beg = D[i + nb - 1];
     double end;
     if(i + 2 * nb > D.size())
@@ -225,7 +225,7 @@ void PViewDataList::_stat(std::vector<double> &D, std::vector<char> &C, int nb)
     if(nbtime > NbTimeStep) NbTimeStep = nbtime;
   }
   if(nb == 5) {
-    for(unsigned int i = 0; i < D.size(); i += nb)
+    for(std::size_t i = 0; i < D.size(); i += nb)
       BBox += SPoint3(D[i], D[i + 1], D[i + 2]);
   }
 }
@@ -568,10 +568,10 @@ void PViewDataList::reverseElement(int step, int ent, int ele)
 
   // copy data
   std::vector<double> XYZ(3 * _lastNumNodes);
-  for(unsigned int i = 0; i < XYZ.size(); i++) XYZ[i] = _lastXYZ[i];
+  for(std::size_t i = 0; i < XYZ.size(); i++) XYZ[i] = _lastXYZ[i];
 
   std::vector<double> V(_lastNumNodes * _lastNumComponents * getNumTimeSteps());
-  for(unsigned int i = 0; i < V.size(); i++) V[i] = _lastVal[i];
+  for(std::size_t i = 0; i < V.size(); i++) V[i] = _lastVal[i];
 
   // reverse node order
   for(int i = 0; i < _lastNumNodes; i++) {
@@ -596,7 +596,7 @@ static void generateConnectivities(std::vector<double> &list, int nbList,
   if(!nbList) return;
   double *vals = new double[nbTimeStep * nbComp];
   int nb = list.size() / nbList;
-  for(unsigned int i = 0; i < list.size(); i += nb) {
+  for(std::size_t i = 0; i < list.size(); i += nb) {
     double *x = &list[i];
     double *y = &list[i + nbVert];
     double *z = &list[i + 2 * nbVert];
@@ -617,7 +617,7 @@ static void smoothList(std::vector<double> &list, int nbList, int nbTimeStep,
   if(!nbList) return;
   double *vals = new double[nbTimeStep * nbComp];
   int nb = list.size() / nbList;
-  for(unsigned int i = 0; i < list.size(); i += nb) {
+  for(std::size_t i = 0; i < list.size(); i += nb) {
     double *x = &list[i];
     double *y = &list[i + nbVert];
     double *z = &list[i + 2 * nbVert];
@@ -674,7 +674,7 @@ double PViewDataList::getMemoryInMb()
 
 static void dVecMerge(std::vector<double> &v, std::vector<double> &dest)
 {
-  for(unsigned int i = 0; i < v.size(); i++) dest.push_back(v[i]);
+  for(std::size_t i = 0; i < v.size(); i++) dest.push_back(v[i]);
 }
 
 bool PViewDataList::combineSpace(nameData &nd)
@@ -682,14 +682,14 @@ bool PViewDataList::combineSpace(nameData &nd)
   // sanity checks
   if(nd.data.size() < 2) return false;
   int ts = nd.data[0]->getNumTimeSteps();
-  for(unsigned int i = 1; i < nd.data.size(); i++) {
+  for(std::size_t i = 1; i < nd.data.size(); i++) {
     if(!nd.data[i]->empty() && nd.data[i]->getNumTimeSteps() != ts) {
       Msg::Error("Cannot combine views having different number of time steps");
       return false;
     }
   }
 
-  for(unsigned int i = 0; i < nd.data.size(); i++) {
+  for(std::size_t i = 0; i < nd.data.size(); i++) {
     PViewDataList *l = dynamic_cast<PViewDataList *>(nd.data[i]);
     if(!l) {
       Msg::Error("Cannot combine hybrid data");
@@ -701,7 +701,7 @@ bool PViewDataList::combineSpace(nameData &nd)
           l->_interpolation.begin();
         it != l->_interpolation.end(); it++)
       if(_interpolation[it->first].empty())
-        for(unsigned int i = 0; i < it->second.size(); i++)
+        for(std::size_t i = 0; i < it->second.size(); i++)
           _interpolation[it->first].push_back(
             new fullMatrix<double>(*it->second[i]));
 
@@ -764,7 +764,7 @@ bool PViewDataList::combineSpace(nameData &nd)
     NbTR += l->NbTR;
 
     // merge strings
-    for(unsigned int i = 0; i < l->T2D.size(); i += 4) {
+    for(std::size_t i = 0; i < l->T2D.size(); i += 4) {
       T2D.push_back(l->T2D[i]);
       T2D.push_back(l->T2D[i + 1]);
       T2D.push_back(l->T2D[i + 2]);
@@ -779,7 +779,7 @@ bool PViewDataList::combineSpace(nameData &nd)
       for(int j = 0; j < (int)(end - beg); j++) T2C.push_back(c[j]);
       NbT2++;
     }
-    for(unsigned int i = 0; i < l->T3D.size(); i += 5) {
+    for(std::size_t i = 0; i < l->T3D.size(); i += 5) {
       T3D.push_back(l->T3D[i]);
       T3D.push_back(l->T3D[i + 1]);
       T3D.push_back(l->T3D[i + 2]);
@@ -817,7 +817,7 @@ bool PViewDataList::combineTime(nameData &nd)
   // sanity checks
   if(nd.data.size() < 2) return false;
   std::vector<PViewDataList *> data(nd.data.size());
-  for(unsigned int i = 0; i < nd.data.size(); i++) {
+  for(std::size_t i = 0; i < nd.data.size(); i++) {
     data[i] = dynamic_cast<PViewDataList *>(nd.data[i]);
     if(!data[i]) {
       Msg::Error("Cannot combine hybrid data");
@@ -840,7 +840,7 @@ bool PViewDataList::combineTime(nameData &nd)
         data[0]->_interpolation.begin();
       it != data[0]->_interpolation.end(); it++)
     if(_interpolation[it->first].empty())
-      for(unsigned int i = 0; i < it->second.size(); i++)
+      for(std::size_t i = 0; i < it->second.size(); i++)
         _interpolation[it->first].push_back(
           new fullMatrix<double>(*it->second[i]));
 
@@ -848,7 +848,7 @@ bool PViewDataList::combineTime(nameData &nd)
   for(int i = 0; i < 27; i++) {
     _getRawData(i, &list, &nbe, &nbc, &nbn);
     for(int j = 0; j < *nbe; j++) {
-      for(unsigned int k = 0; k < data.size(); k++) {
+      for(std::size_t k = 0; k < data.size(); k++) {
         data[k]->_getRawData(i, &list2, &nbe2, &nbc2, &nbn2);
         if(*nbe && *nbe == *nbe2) {
           int nb2 = list2->size() / *nbe2;
@@ -868,7 +868,7 @@ bool PViewDataList::combineTime(nameData &nd)
 
   // merge 2d strings
   for(int j = 0; j < NbT2; j++) {
-    for(unsigned int k = 0; k < data.size(); k++) {
+    for(std::size_t k = 0; k < data.size(); k++) {
       if(NbT2 == data[k]->NbT2) {
         if(!k) {
           // copy coordinates
@@ -893,7 +893,7 @@ bool PViewDataList::combineTime(nameData &nd)
 
   // merge 3d strings
   for(int j = 0; j < NbT3; j++) {
-    for(unsigned int k = 0; k < data.size(); k++) {
+    for(std::size_t k = 0; k < data.size(); k++) {
       if(NbT3 == data[k]->NbT3) {
         if(!k) {
           // copy coordinates
@@ -918,7 +918,7 @@ bool PViewDataList::combineTime(nameData &nd)
   }
 
   // create the time data
-  for(unsigned int i = 0; i < data.size(); i++) dVecMerge(data[i]->Time, Time);
+  for(std::size_t i = 0; i < data.size(); i++) dVecMerge(data[i]->Time, Time);
 
   // if all the time values are the same, it probably means that the
   // original views didn't have any time data: then we'll just use
@@ -926,7 +926,7 @@ bool PViewDataList::combineTime(nameData &nd)
   if(Time.size()) {
     double t0 = Time[0], ti;
     bool allTheSame = true;
-    for(unsigned int i = 1; i < Time.size(); i++) {
+    for(std::size_t i = 1; i < Time.size(); i++) {
       ti = Time[i];
       if(ti != t0) {
         allTheSame = false;
diff --git a/Post/PViewDataListIO.cpp b/Post/PViewDataListIO.cpp
index c0232170f7318734fb717f817d62eaa5b930a89b..a7eca7595bca4d39ffbd404b97038894eae3fda2 100644
--- a/Post/PViewDataListIO.cpp
+++ b/Post/PViewDataListIO.cpp
@@ -338,7 +338,7 @@ static void writeTimePOS(FILE *fp, std::vector<double> &list)
 {
   if(list.size() > 1) {
     fprintf(fp, "TIME{");
-    for(unsigned int i = 0; i < list.size(); i++) {
+    for(std::size_t i = 0; i < list.size(); i++) {
       if(i) fprintf(fp, ",");
       fprintf(fp, "%.16g", list[i]);
     }
@@ -351,7 +351,7 @@ static void writeElementPOS(FILE *fp, const char *str, int nbnod, int nb,
 {
   if(nb) {
     int n = list.size() / nb;
-    for(unsigned int i = 0; i < list.size(); i += n) {
+    for(std::size_t i = 0; i < list.size(); i += n) {
       double *x = &list[i];
       double *y = &list[i + nbnod];
       double *z = &list[i + 2 * nbnod];
@@ -374,7 +374,7 @@ static void writeTextPOS(FILE *fp, int nbc, int nb, std::vector<double> &TD,
                          std::vector<char> &TC)
 {
   if(!nb || (nbc != 4 && nbc != 5)) return;
-  for(unsigned int j = 0; j < TD.size(); j += nbc) {
+  for(std::size_t j = 0; j < TD.size(); j += nbc) {
     double x = TD[j];
     double y = TD[j + 1];
     double z = (nbc == 5) ? TD[j + 2] : 0.;
@@ -432,7 +432,7 @@ bool PViewDataList::writePOS(const std::string &fileName, bool binary,
   }
 
   std::string str = getName();
-  for(unsigned int i = 0; i < str.size(); i++)
+  for(std::size_t i = 0; i < str.size(); i++)
     if(str[i] == ' ') str[i] = '^';
 
   if(!parsed) {
@@ -529,7 +529,7 @@ static void createVertices(std::vector<double> &list, int nbelm, int nbnod,
 {
   if(!nbelm) return;
   int nb = list.size() / nbelm;
-  for(unsigned int i = 0; i < list.size(); i += nb) {
+  for(std::size_t i = 0; i < list.size(); i += nb) {
     double *x = &list[i];
     double *y = &list[i + nbnod];
     double *z = &list[i + 2 * nbnod];
@@ -614,7 +614,7 @@ static void createElements(std::vector<double> &list, int nbelm, int nbnod,
   }
   MElementFactory factory;
   int nb = list.size() / nbelm;
-  for(unsigned int i = 0; i < list.size(); i += nb) {
+  for(std::size_t i = 0; i < list.size(); i += nb) {
     double *x = &list[i];
     double *y = &list[i + nbnod];
     double *z = &list[i + 2 * nbnod];
@@ -662,7 +662,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
   }
   MVertexRTree pos(eps);
   std::vector<MVertex *> unique;
-  for(unsigned int i = 0; i < vertices.size(); i++) {
+  for(std::size_t i = 0; i < vertices.size(); i++) {
     if(!pos.insert(vertices[i])) unique.push_back(vertices[i]);
   }
   vertices.clear();
@@ -678,7 +678,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
   }
 
   int num = 0;
-  for(unsigned int i = 0; i < unique.size(); i++) unique[i]->setIndex(++num);
+  for(std::size_t i = 0; i < unique.size(); i++) unique[i]->setIndex(++num);
 
   if(version > 2.2)
     Msg::Warning("Mesh-based export of list-based datasets not available with "
@@ -689,7 +689,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
   if(saveMesh) {
     fprintf(fp, "$Nodes\n");
     fprintf(fp, "%d\n", (int)unique.size());
-    for(unsigned int i = 0; i < unique.size(); i++) {
+    for(std::size_t i = 0; i < unique.size(); i++) {
       MVertex *v = unique[i];
       fprintf(fp, "%d %.16g %.16g %.16g\n", v->getIndex(), v->x(), v->y(),
               v->z());
@@ -698,7 +698,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
 
     fprintf(fp, "$Elements\n");
     fprintf(fp, "%d\n", (int)elements.size());
-    for(unsigned int i = 0; i < elements.size(); i++) {
+    for(std::size_t i = 0; i < elements.size(); i++) {
       elements[i]->writeMSH2(fp, 2.2, false, i + 1);
     }
     fprintf(fp, "$EndElements\n");
@@ -747,7 +747,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
       fprintf(fp, "3\n%d\n%d\n%d\n", ts, numComponents, size);
 
     if(forceNodeData) {
-      for(unsigned int i = 0; i < unique.size(); i++) {
+      for(std::size_t i = 0; i < unique.size(); i++) {
         MVertex *v = unique[i];
         fprintf(fp, "%d", v->getIndex());
         int nbnod = vertexData[v].nbnod;
@@ -770,7 +770,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version,
           int mult = numNodes;
           if(_interpolation.count(typ)) mult = _interpolation[typ][0]->size1();
           int nb = list->size() / *numEle;
-          for(unsigned int i = 0; i < list->size(); i += nb) {
+          for(std::size_t i = 0; i < list->size(); i += nb) {
             double *v = &(*list)[i + 3 * numNodes];
             if(forceElementData) { // just keep first vertex value
               fprintf(fp, "%d", ++n);
diff --git a/Post/PViewIO.cpp b/Post/PViewIO.cpp
index 7b8961d72b05f03a2196aa1d4849054210d01d3b..942f6cb0df078b4fb60f465cd0c0960660d05602 100644
--- a/Post/PViewIO.cpp
+++ b/Post/PViewIO.cpp
@@ -276,7 +276,7 @@ bool PView::readMSH(const std::string &fileName, int fileIndex, int partitionToR
           }
         }
         if(partitionToRead == -1 || partitionToRead == partition) {
-          // if default (no particular partition requested from MergeFile -> -1)  or 
+          // if default (no particular partition requested from MergeFile -> -1)  or
           // if current partition corresponds to the requested partition, read the data
           if(numEnt > 0) {
             // either get existing viewData, or create new one
@@ -302,7 +302,7 @@ bool PView::readMSH(const std::string &fileName, int fileIndex, int partitionToR
           }
         }
         else if(blocksize > 0 && partitionToRead != partition) {
-          // if current partition does not correspond to the requested partition and 
+          // if current partition does not correspond to the requested partition and
           // if its blocksise has been read (5th integer in the header), jump over it
           fseek(fp, blocksize, SEEK_CUR);
         }
@@ -326,7 +326,7 @@ bool PView::readMED(const std::string &fileName, int fileIndex)
 {
   std::vector<std::string> fieldNames = medGetFieldNames(fileName);
 
-  for(unsigned int index = 0; index < fieldNames.size(); index++) {
+  for(std::size_t index = 0; index < fieldNames.size(); index++) {
     if(fileIndex < 0 || (int)index == fileIndex) {
       PViewDataGModel *d = 0;
       // we use the filename as a kind of "partition" indicator, allowing to
diff --git a/Post/PViewOptions.cpp b/Post/PViewOptions.cpp
index f9d976f3b03db3fe1f5b2b78dd9005c881f3fc8e..cbc8cd5bcb31946072a5557b093e668aef59eb14 100644
--- a/Post/PViewOptions.cpp
+++ b/Post/PViewOptions.cpp
@@ -121,12 +121,12 @@ void PViewOptions::createGeneralRaise()
 {
   const char *names[] = {"x",  "y",  "z",  "v0", "v1", "v2", "v3",
                          "v4", "v5", "v6", "v7", "v8", "s",  "t"};
-  unsigned int numVariables = sizeof(names) / sizeof(names[0]);
+  std::size_t numVariables = sizeof(names) / sizeof(names[0]);
   std::vector<std::string> expressions(3), variables(numVariables);
   expressions[0] = genRaiseX;
   expressions[1] = genRaiseY;
   expressions[2] = genRaiseZ;
-  for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i];
+  for(std::size_t i = 0; i < numVariables; i++) variables[i] = names[i];
 
   if(genRaiseEvaluator) delete genRaiseEvaluator;
   genRaiseEvaluator = new mathEvaluator(expressions, variables);
diff --git a/Post/PViewX3D.cpp b/Post/PViewX3D.cpp
index ddc472282ceb6555953bf8a640911070ad762547..4903ab2366e5e07e798cbe870d81a287a3ee3dd4 100644
--- a/Post/PViewX3D.cpp
+++ b/Post/PViewX3D.cpp
@@ -74,7 +74,7 @@ bool PView::writeX3D(const std::string &fileName)
   // tags duplicated triangles
   int _size = 1;
   if(!CTX::instance()->print.x3dRemoveInnerBorders) {
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       VertexArray *va = PView::list[i]->va_triangles;
       _size += va->getNumVertices() / 3;
     }
@@ -85,7 +85,7 @@ bool PView::writeX3D(const std::string &fileName)
     // evaluate bbox of each triangle
     std::list<TriangleToSort *> tlist;
     tlist.clear();
-    for(unsigned int ivp = 0; ivp < PView::list.size(); ivp++) {
+    for(std::size_t ivp = 0; ivp < PView::list.size(); ivp++) {
       VertexArray *va = PView::list[ivp]->va_triangles;
       for(int ipt = 0; ipt < va->getNumVertices(); ipt += 3) {
         float *p0 = va->getVertexArray(3 * ipt);
@@ -265,7 +265,7 @@ bool PView::writeX3D(const std::string &fileName)
   double font_size = 0.02;
   if(!CTX::instance()->print.x3dCompatibility) {
     std::vector<PView *> scales;
-    for(unsigned int i = 0; i < PView::list.size(); i++) {
+    for(std::size_t i = 0; i < PView::list.size(); i++) {
       PViewData *data = PView::list[i]->getData();
       PViewOptions *opt = PView::list[i]->getOptions();
       if(!data->getDirty() && opt->visible && opt->showScale &&
@@ -355,7 +355,7 @@ bool PView::writeX3D(const std::string &fileName)
       const double bar_size = tic * 1.6;
       double width = 0., width_prev = 0., width_total = 0.;
 
-      for(unsigned int i = 0; i < scales.size(); i++) {
+      for(std::size_t i = 0; i < scales.size(); i++) {
         PView *p = scales[i];
         PViewData *data = p->getData();
         PViewOptions *opt = p->getOptions();
@@ -434,7 +434,7 @@ bool PView::writeX3D(const std::string &fileName)
 
   // points - NOT TREATED YET
   /*
-    for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++){
+    for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++){
     data = PView::list[ipv]->getData(true);
     opt  = PView::list[ipv]->getOptions();
     if( !data->getDirty() && opt->visible ) {
@@ -464,7 +464,7 @@ bool PView::writeX3D(const std::string &fileName)
   int _ind = 0;
   fprintf(fp, "    <Shape> \n");
   fprintf(fp, "      <IndexedLineSet coordIndex=' ");
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     PViewData *data = PView::list[ipv]->getData(true);
     PViewOptions *opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
@@ -479,7 +479,7 @@ bool PView::writeX3D(const std::string &fileName)
   } // end for loop on PView::list
   fprintf(fp, "'>\n");
   fprintf(fp, "        <Coordinate DEF='TurnPoints' point=' ");
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     PViewData *data = PView::list[ipv]->getData(true);
     PViewOptions *opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
@@ -504,7 +504,7 @@ bool PView::writeX3D(const std::string &fileName)
   fprintf(fp, "    </Shape>\n");
 
   // vectors - colored arrow replaced by colored cones
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     data = PView::list[ipv]->getData(true);
     opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
@@ -556,7 +556,7 @@ bool PView::writeX3D(const std::string &fileName)
               "colorPerVertex='true' \n ");
   fprintf(
     fp, "         normalPerVertex='true'  containerField='geometry' index=' ");
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     data = PView::list[ipv]->getData(true);
     opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
@@ -575,7 +575,7 @@ bool PView::writeX3D(const std::string &fileName)
   fprintf(fp, " ' > \n");
   fprintf(fp, "          <Coordinate point='");
   _count = 0;
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     data = PView::list[ipv]->getData(true);
     opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
@@ -598,7 +598,7 @@ bool PView::writeX3D(const std::string &fileName)
 
   fprintf(fp, "          <Color color='");
   _count = 0;
-  for(unsigned int ipv = 0; ipv < PView::list.size(); ipv++) {
+  for(std::size_t ipv = 0; ipv < PView::list.size(); ipv++) {
     data = PView::list[ipv]->getData(true);
     opt = PView::list[ipv]->getOptions();
     if(!data->getDirty() && opt->visible) {
diff --git a/Post/adaptiveData.cpp b/Post/adaptiveData.cpp
index 7cac252600114b3154360186273eb0b787a193d6..9e0f209f13451f75e02284f28e19d8d4800e310c 100644
--- a/Post/adaptiveData.cpp
+++ b/Post/adaptiveData.cpp
@@ -1490,7 +1490,7 @@ void adaptiveElements<T>::addInView(double tol, int step, PViewData *in,
       }
       if(adapt(tol, numComp, coords, values, out->Min, out->Max, plug)){
         *outNb += coords.size() / T::numNodes;
-        for(unsigned int i = 0; i < coords.size() / T::numNodes; i++) {
+        for(std::size_t i = 0; i < coords.size() / T::numNodes; i++) {
           for(int k = 0; k < T::numNodes; ++k)
             outList->push_back(coords[T::numNodes * i + k].c[0]);
           for(int k = 0; k < T::numNodes; ++k)
@@ -2573,7 +2573,7 @@ void adaptiveElements<T>::addInViewForVTK(int step, PViewData *in,
       myVTKData.vtkLocalCoords.resize(numNodInsert, PCoords(0.0, 0.0, 0.0));
       myVTKData.vtkLocalValues.resize(numNodInsert, PValues(numComp));
 
-      for(unsigned int i = 0; i < coords.size() / T::numNodes; i++) {
+      for(std::size_t i = 0; i < coords.size() / T::numNodes; i++) {
         // Loop over
         //  - all refined elements if refinement level > 0
         //  - single initial element when refinement box is checked for the
diff --git a/Solver/dofManager.h b/Solver/dofManager.h
index e4d1e75d1d3addaa32c55966123435ee2ea1fc54..1e5ce6208ed19378bacbbcd7c76aaaf578172060 100644
--- a/Solver/dofManager.h
+++ b/Solver/dofManager.h
@@ -210,13 +210,13 @@ public:
 
     std::map<Dof, int>::iterator it = unknown.find(key);
     if(it == unknown.end()) {
-      unsigned int size = unknown.size();
+      std::size_t size = unknown.size();
       unknown[key] = size;
     }
   }
   virtual inline void numberDof(const std::vector<Dof> &R)
   {
-    for(unsigned int i = 0; i < R.size(); i++) this->numberDof(R[i]);
+    for(std::size_t i = 0; i < R.size(); i++) this->numberDof(R[i]);
   }
   inline void numberDof(long int ent, int type) { numberDof(Dof(ent, type)); }
   inline void numberVertex(MVertex *v, int iComp, int iField)
@@ -357,8 +357,8 @@ public:
 
   virtual inline void sparsityDof(const std::vector<Dof> &keys)
   {
-    for(unsigned int itR = 0; itR < keys.size(); itR++) {
-      for(unsigned int itC = 0; itC < keys.size(); itC++) {
+    for(std::size_t itR = 0; itR < keys.size(); itR++) {
+      for(std::size_t itC = 0; itC < keys.size(); itC++) {
         insertInSparsityPattern(keys[itR], keys[itC]);
       }
     }
@@ -398,23 +398,23 @@ public:
 
     std::vector<int> NR(R.size()), NC(C.size());
 
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       std::map<Dof, int>::iterator itR = unknown.find(R[i]);
       if(itR != unknown.end())
         NR[i] = itR->second;
       else
         NR[i] = -1;
     }
-    for(unsigned int i = 0; i < C.size(); i++) {
+    for(std::size_t i = 0; i < C.size(); i++) {
       std::map<Dof, int>::iterator itC = unknown.find(C[i]);
       if(itC != unknown.end())
         NC[i] = itC->second;
       else
         NC[i] = -1;
     }
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       if(NR[i] != -1) {
-        for(unsigned int j = 0; j < C.size(); j++) {
+        for(std::size_t j = 0; j < C.size(); j++) {
           if(NC[j] != -1) {
             _current->addToMatrix(NR[i], NC[j], m(i, j));
           }
@@ -433,7 +433,7 @@ public:
         }
       }
       else {
-        for(unsigned int j = 0; j < C.size(); j++) {
+        for(std::size_t j = 0; j < C.size(); j++) {
           assembleLinConst(R[i], C[j], m(i, j));
         }
       }
@@ -446,14 +446,14 @@ public:
     if(_isParallel && !_parallelFinalized) _parallelFinalize();
     if(!_current->isAllocated()) _current->allocate(sizeOfR());
     std::vector<int> NR(R.size());
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       std::map<Dof, int>::iterator itR = unknown.find(R[i]);
       if(itR != unknown.end())
         NR[i] = itR->second;
       else
         NR[i] = -1;
     }
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       if(NR[i] != -1) {
         _current->addToRightHandSide(NR[i], m(i));
       }
@@ -478,16 +478,16 @@ public:
     if(_isParallel && !_parallelFinalized) _parallelFinalize();
     if(!_current->isAllocated()) _current->allocate(sizeOfR());
     std::vector<int> NR(R.size());
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       std::map<Dof, int>::iterator itR = unknown.find(R[i]);
       if(itR != unknown.end())
         NR[i] = itR->second;
       else
         NR[i] = -1;
     }
-    for(unsigned int i = 0; i < R.size(); i++) {
+    for(std::size_t i = 0; i < R.size(); i++) {
       if(NR[i] != -1) {
-        for(unsigned int j = 0; j < R.size(); j++) {
+        for(std::size_t j = 0; j < R.size(); j++) {
           if(NR[j] != -1) {
             _current->addToMatrix(NR[i], NR[j], m(i, j));
           }
@@ -506,7 +506,7 @@ public:
         }
       }
       else {
-        for(unsigned int j = 0; j < R.size(); j++) {
+        for(std::size_t j = 0; j < R.size(); j++) {
           assembleLinConst(R[i], R[j], m(i, j));
         }
       }
diff --git a/Solver/eigenSolver.cpp b/Solver/eigenSolver.cpp
index eab332f3ddc8a3c5e17d841bdc3ff1eb3731fea6..6e6b0ff4cf7d58948497f52467748334691d7230 100644
--- a/Solver/eigenSolver.cpp
+++ b/Solver/eigenSolver.cpp
@@ -207,10 +207,10 @@ bool eigenSolver::solve(int numEigenValues, std::string which,
 void eigenSolver::normalize_mode(std::vector<int> modeView, double scale)
 {
   Msg::Info("Normalize all eigenvectors");
-  for(unsigned int imode = 0; imode < modeView.size(); imode++) {
+  for(std::size_t imode = 0; imode < modeView.size(); imode++) {
     int i = modeView[imode];
     double norm = 0.;
-    for(unsigned int j = 0; j < _eigenVectors[i].size(); j++) {
+    for(std::size_t j = 0; j < _eigenVectors[i].size(); j++) {
       std::complex<double> val = _eigenVectors[i][j];
       double normval = std::abs(val);
       if(normval > norm) norm = normval;
@@ -219,7 +219,7 @@ void eigenSolver::normalize_mode(std::vector<int> modeView, double scale)
       Msg::Error("zero eigenvector");
       return;
     }
-    for(unsigned int j = 0; j < _eigenVectors[i].size(); j++) {
+    for(std::size_t j = 0; j < _eigenVectors[i].size(); j++) {
       _eigenVectors[i][j] *= (scale / norm);
     }
   }
diff --git a/Solver/elasticitySolver.cpp b/Solver/elasticitySolver.cpp
index 3b8d6fa26d3b38cae66a24637a943ff76d8bdb2a..04130e62c9cefeb2a05b61cd3f7434f9083a0ae7 100644
--- a/Solver/elasticitySolver.cpp
+++ b/Solver/elasticitySolver.cpp
@@ -78,7 +78,7 @@ void elasticitySolver::setMesh(const std::string &meshFileName, int dim)
       _tag, VectorLagrangeFunctionSpace::VECTOR_X,
       VectorLagrangeFunctionSpace::VECTOR_Y);
 
-  for(unsigned int i = 0; i < LagrangeMultiplierSpaces.size(); i++)
+  for(std::size_t i = 0; i < LagrangeMultiplierSpaces.size(); i++)
     if(LagrangeMultiplierSpaces[i]) delete LagrangeMultiplierSpaces[i];
   LagrangeMultiplierSpaces.clear();
 }
@@ -133,7 +133,7 @@ void elasticitySolver::solve()
 
   double energ = 0;
   GaussQuadrature Integ_Bulk(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < elasticFields.size(); i++) {
+  for(std::size_t i = 0; i < elasticFields.size(); i++) {
     SolverField<SVector3> Field(pAssembler, LagSpace);
     IsotropicElasticTerm Eterm(Field, elasticFields[i]._E,
                                elasticFields[i]._nu);
@@ -149,7 +149,7 @@ void elasticitySolver::postSolve()
   GaussQuadrature Integ_Bulk(GaussQuadrature::GradGrad);
 
   double energ = 0;
-  for(unsigned int i = 0; i < elasticFields.size(); i++) {
+  for(std::size_t i = 0; i < elasticFields.size(); i++) {
     SolverField<SVector3> Field(pAssembler, LagSpace);
     IsotropicElasticTerm Eterm(Field, elasticFields[i]._E,
                                elasticFields[i]._nu);
@@ -402,7 +402,7 @@ void elasticitySolver::setLagrangeMultipliers(int phys, double tau, SVector3 d,
 
 void elasticitySolver::changeLMTau(int tag, double tau)
 {
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); i++) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); i++) {
     if(LagrangeMultiplierFields[i]._tag == tag) {
       LagrangeMultiplierFields[i]._tau = tau;
     }
@@ -505,15 +505,15 @@ void elasticitySolver::assemble(linearSystem<double> *lsys)
   // numbered afterwards
 
   // Dirichlet conditions
-  for(unsigned int i = 0; i < allDirichlet.size(); i++) {
+  for(std::size_t i = 0; i < allDirichlet.size(); i++) {
     FilterDofComponent filter(allDirichlet[i]._comp);
     FixNodalDofs(*LagSpace, allDirichlet[i].g->begin(),
                  allDirichlet[i].g->end(), *pAssembler, *allDirichlet[i]._f,
                  filter);
   }
   // LagrangeMultipliers
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
-    unsigned int j = 0;
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+    std::size_t j = 0;
     for(; j < LagrangeMultiplierSpaces.size(); j++)
       if(LagrangeMultiplierSpaces[j]->getId() ==
          LagrangeMultiplierFields[i]._tag)
@@ -523,13 +523,13 @@ void elasticitySolver::assemble(linearSystem<double> *lsys)
                LagrangeMultiplierFields[i].g->end(), *pAssembler);
   }
   // Elastic Fields
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     if(elasticFields[i]._E != 0.)
       NumberDofs(*LagSpace, elasticFields[i].g->begin(),
                  elasticFields[i].g->end(), *pAssembler);
   }
   // Voids
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     if(elasticFields[i]._E == 0.)
       FixVoidNodalDofs(*LagSpace, elasticFields[i].g->begin(),
                        elasticFields[i].g->end(), *pAssembler);
@@ -537,7 +537,7 @@ void elasticitySolver::assemble(linearSystem<double> *lsys)
   // Neumann conditions
   GaussQuadrature Integ_Boundary(GaussQuadrature::Val);
 
-  for(unsigned int i = 0; i < allNeumann.size(); i++) {
+  for(std::size_t i = 0; i < allNeumann.size(); i++) {
     LoadTerm<SVector3> Lterm(*LagSpace, allNeumann[i]._f);
     Assemble(Lterm, *LagSpace, allNeumann[i].g->begin(), allNeumann[i].g->end(),
              Integ_Boundary, *pAssembler);
@@ -545,8 +545,8 @@ void elasticitySolver::assemble(linearSystem<double> *lsys)
   // Assemble cross term, laplace term and rhs term for LM
   GaussQuadrature Integ_LagrangeMult(GaussQuadrature::ValVal);
   GaussQuadrature Integ_Laplace(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); i++) {
-    unsigned int j = 0;
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); i++) {
+    std::size_t j = 0;
     for(; j < LagrangeMultiplierSpaces.size(); j++)
       if(LagrangeMultiplierSpaces[j]->getId() ==
          LagrangeMultiplierFields[i]._tag)
@@ -576,7 +576,7 @@ void elasticitySolver::assemble(linearSystem<double> *lsys)
   }
   // Assemble elastic term for
   GaussQuadrature Integ_Bulk(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < elasticFields.size(); i++) {
+  for(std::size_t i = 0; i < elasticFields.size(); i++) {
     printf("Elastic\n");
     IsotropicElasticTerm Eterm(*LagSpace, elasticFields[i]._E,
                                elasticFields[i]._nu);
@@ -592,7 +592,7 @@ void elasticitySolver::computeEffectiveStiffness(std::vector<double> stiff)
 {
   double st[6] = {0., 0., 0., 0., 0., 0.};
   double volTot = 0.;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     double E = elasticFields[i]._E;
     double nu = elasticFields[i]._nu;
     SolverField<SVector3> Field(pAssembler, LagSpace);
@@ -651,7 +651,7 @@ void elasticitySolver::computeEffectiveStrain(std::vector<double> strain)
 {
   double st[6] = {0., 0., 0., 0., 0., 0.};
   double volTot = 0.;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     SolverField<SVector3> Field(pAssembler, LagSpace);
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
@@ -702,7 +702,7 @@ double elasticitySolver::computeDisplacementError(simpleFunction<double> *f0,
   double err = 0.;
   std::set<MVertex *> v;
   std::map<MVertex *, MElement *> vCut;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     if(elasticFields[i]._E == 0.) continue;
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
@@ -753,7 +753,7 @@ double elasticitySolver::computeL2Norm(simpleFunction<double> *f0,
 {
   double val = 0.0;
   SolverField<SVector3> solField(pAssembler, LagSpace);
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
         it != elasticFields[i].g->end(); ++it) {
@@ -800,7 +800,7 @@ PView *elasticitySolver::buildErrorView(const std::string postFileName,
   std::map<int, std::vector<double> > data;
 
   SolverField<SVector3> solField(pAssembler, LagSpace);
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
         it != elasticFields[i].g->end(); ++it) {
@@ -841,7 +841,7 @@ PView *elasticitySolver::buildDisplacementView(const std::string postFileName)
   std::cout << "build Displacement View" << std::endl;
   std::set<MVertex *> v;
   std::map<MVertex *, MElement *> vCut;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     if(elasticFields[i]._E == 0.) continue;
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
@@ -895,7 +895,7 @@ PView *elasticitySolver::buildStressesView(const std::string postFileName)
   double volTot = 0.;
   std::cout << "build stresses view" << std::endl;
   std::map<int, std::vector<double> > data;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     double E = elasticFields[i]._E;
     double nu = elasticFields[i]._nu;
     SolverField<SVector3> Field(pAssembler, LagSpace);
@@ -987,7 +987,7 @@ PView *elasticitySolver::buildStrainView(const std::string postFileName)
 {
   std::cout << "build strain view" << std::endl;
   std::map<int, std::vector<double> > data;
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     SolverField<SVector3> Field(pAssembler, LagSpace);
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
@@ -1036,13 +1036,13 @@ elasticitySolver::buildLagrangeMultiplierView(const std::string postFileName,
                                               int tag)
 {
   std::cout << "build Lagrange Multiplier View" << std::endl;
-  unsigned int t = 0;
+  std::size_t t = 0;
   if(tag != -1)
     for(; t < LagrangeMultiplierSpaces.size(); t++)
       if(LagrangeMultiplierSpaces[t]->getId() == tag) break;
   if(t == LagrangeMultiplierSpaces.size()) return new PView();
   std::set<MVertex *> v;
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           LagrangeMultiplierFields[i].g->begin();
         it != LagrangeMultiplierFields[i].g->end(); ++it) {
@@ -1070,7 +1070,7 @@ PView *elasticitySolver::buildElasticEnergyView(const std::string postFileName)
   std::cout << "build Elastic Energy View" << std::endl;
   std::map<int, std::vector<double> > data;
   GaussQuadrature Integ_Bulk(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     if(elasticFields[i]._E == 0.) continue;
     SolverField<SVector3> Field(pAssembler, LagSpace);
     IsotropicElasticTerm Eterm(Field, elasticFields[i]._E,
@@ -1103,7 +1103,7 @@ PView *elasticitySolver::buildVolumeView(const std::string postFileName)
   double voltot = 0;
   double length = 0;
   GaussQuadrature Integ_Vol(GaussQuadrature::Val);
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     ScalarTermConstant<double> One(1.0);
     for(groupOfElements::elementContainer::const_iterator it =
           elasticFields[i].g->begin();
@@ -1119,7 +1119,7 @@ PView *elasticitySolver::buildVolumeView(const std::string postFileName)
       data[e->getNum()] = vec;
     }
   }
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
     ScalarTermConstant<double> One(1.0);
     for(groupOfElements::elementContainer::const_iterator it =
           LagrangeMultiplierFields[i].g->begin();
@@ -1145,7 +1145,7 @@ PView *elasticitySolver::buildVonMisesView(const std::string postFileName)
   std::cout << "build elastic view" << std::endl;
   std::map<int, std::vector<double> > data;
   GaussQuadrature Integ_Bulk(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < elasticFields.size(); ++i) {
+  for(std::size_t i = 0; i < elasticFields.size(); ++i) {
     SolverField<SVector3> Field(pAssembler, LagSpace);
     IsotropicElasticTerm Eterm(Field, elasticFields[i]._E,
                                elasticFields[i]._nu);
diff --git a/Solver/femTerm.h b/Solver/femTerm.h
index 832a3768ffaa0ab2fa48c546d6b1e94641834dbf..655dfda01799302868983e0be45a1f8c8109a788 100644
--- a/Solver/femTerm.h
+++ b/Solver/femTerm.h
@@ -109,7 +109,7 @@ public:
     std::vector<MVertex *> v;
     GModel *m = _gm;
     m->getMeshVerticesForPhysicalGroup(dim, physical, v);
-    for(unsigned int i = 0; i < v.size(); i++)
+    for(std::size_t i = 0; i < v.size(); i++)
       dm.fixVertex(v[i], comp, field, e(v[i]->x(), v[i]->y(), v[i]->z()));
   }
 
@@ -150,9 +150,9 @@ public:
     std::map<int, std::vector<GEntity *> >::iterator it =
       groups[dim].find(physical);
     if(it == groups[dim].end()) return;
-    for(unsigned int i = 0; i < it->second.size(); ++i) {
+    for(std::size_t i = 0; i < it->second.size(); ++i) {
       GEntity *ge = it->second[i];
-      for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
         MElement *e = ge->getMeshElement(j);
         neumannNodalBC(e, comp, field, fct, dm);
       }
@@ -168,9 +168,9 @@ public:
     std::map<int, std::vector<GEntity *> >::iterator it =
       groups[dim].find(physical);
     if(it == groups[dim].end()) return;
-    for(unsigned int i = 0; i < it->second.size(); ++i) {
+    for(std::size_t i = 0; i < it->second.size(); ++i) {
       GEntity *ge = it->second[i];
-      for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+      for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
         MElement *e = ge->getMeshElement(j);
 
         neumannNodalBC(e, 0, field, fct, dm);
diff --git a/Solver/frameSolver.cpp b/Solver/frameSolver.cpp
index 1f32fa1c2e85ed6b7e79b5c7d816ad66e63363da..2eb99cdc1116ba2cf3b5a68b0b58c564cf0a4f88 100644
--- a/Solver/frameSolver.cpp
+++ b/Solver/frameSolver.cpp
@@ -24,10 +24,10 @@ void frameSolver2d::addFixations(const std::vector<int> &dirs,
                                  const std::vector<int> &modelVertices,
                                  double value)
 {
-  for(unsigned int j = 0; j < modelVertices.size(); j++) {
+  for(std::size_t j = 0; j < modelVertices.size(); j++) {
     GVertex *gv = _myModel->getVertexByTag(modelVertices[j]);
     if(gv) {
-      for(unsigned int i = 0; i < dirs.size(); i++) {
+      for(std::size_t i = 0; i < dirs.size(); i++) {
         _fixations.push_back(gmshFixation(gv, dirs[i], value));
       }
     }
@@ -37,7 +37,7 @@ void frameSolver2d::addFixations(const std::vector<int> &dirs,
 void frameSolver2d::addNodalForces(const std::vector<int> &modelVertices,
                                    const std::vector<double> &force)
 {
-  for(unsigned int j = 0; j < modelVertices.size(); j++) {
+  for(std::size_t j = 0; j < modelVertices.size(); j++) {
     GVertex *gv = _myModel->getVertexByTag(modelVertices[j]);
     if(gv) {
       _nodalForces.push_back(std::make_pair(gv, force));
@@ -50,11 +50,11 @@ void frameSolver2d::addBeamsOrBars(const std::vector<int> &modelEdges, double E,
 {
   int r_middle[2] = {1, 1}, r_left[2] = {r[0], 1}, r_right[2] = {0, r[1]};
   //  printf("adding %d beams\n",modelEdges.size());
-  for(unsigned int i = 0; i < modelEdges.size(); i++) {
+  for(std::size_t i = 0; i < modelEdges.size(); i++) {
     GEdge *ge = _myModel->getEdgeByTag(modelEdges[i]);
     if(ge) {
       //      printf("model edge %d found\n",ge->tag());
-      for(unsigned int j = 0; j < ge->lines.size(); ++j) {
+      for(std::size_t j = 0; j < ge->lines.size(); ++j) {
         MLine *l = ge->lines[j];
         if(j == 0 && j == ge->lines.size() - 1)
           _beams.push_back(gmshBeam2d(l, E, I, A, r));
@@ -95,7 +95,7 @@ void frameSolver2d::addBars(const std::vector<int> &modelEdges, double E,
 void frameSolver2d::createDofs()
 {
   //  printf("coucou %d fixations\n",_fixations.size());
-  for(unsigned int i = 0; i < _fixations.size(); ++i) {
+  for(std::size_t i = 0; i < _fixations.size(); ++i) {
     const gmshFixation &f = _fixations[i];
     //    printf("f._vertex(%d) = %p %d
     //    %g\n",i,f._vertex,f._direction,f._value);
@@ -107,10 +107,10 @@ void frameSolver2d::createDofs()
   //  printf("coucou2\n");
   computeRotationTags();
   //  printf("coucou3\n");
-  for(unsigned int i = 0; i < _beams.size(); i++) {
+  for(std::size_t i = 0; i < _beams.size(); i++) {
     //    printf("beam[%d] rot %d
     //    %d\n",i,_beams[i]._rotationTags[0],_beams[i]._rotationTags[1]);
-    for(unsigned int j = 0; j < 2; j++) {
+    for(std::size_t j = 0; j < 2; j++) {
       MVertex *v = _beams[i]._element->getVertex(j);
       Dof theta(v->getNum(),
                 Dof::createTypeWithTwoInts(2, _beams[i]._rotationTags[j]));
@@ -192,7 +192,7 @@ void frameSolver2d::solve()
   }
 
   // stifness matrix
-  for(unsigned int i = 0; i < _beams.size(); i++) {
+  for(std::size_t i = 0; i < _beams.size(); i++) {
     fullMatrix<double> K(6, 6);
     computeStiffnessMatrix(i, K);
     _beams[i]._stiffness = K;
@@ -216,7 +216,7 @@ void frameSolver2d::solve()
   lsys->systemSolve();
 
   // save the solution
-  for(unsigned int i = 0; i < _beams.size(); i++) {
+  for(std::size_t i = 0; i < _beams.size(); i++) {
     MVertex *v0 = _beams[i]._element->getVertex(0);
     MVertex *v1 = _beams[i]._element->getVertex(1);
     Dof theta0(v0->getNum(),
@@ -241,7 +241,7 @@ void frameSolver2d::exportFrameData(const char *DISPL, const char *M)
 #if defined(HAVE_POST)
   {
     std::map<int, std::vector<double> > data;
-    for(unsigned int i = 0; i < _beams.size(); i++) {
+    for(std::size_t i = 0; i < _beams.size(); i++) {
       std::vector<double> tmp;
       //      tmp.push_back(_beams[i]._E);
       //      tmp.push_back(_beams[i]._I);
@@ -258,7 +258,7 @@ void frameSolver2d::exportFrameData(const char *DISPL, const char *M)
   }
   {
     std::map<int, std::vector<double> > data;
-    for(unsigned int i = 0; i < _beams.size(); i++) {
+    for(std::size_t i = 0; i < _beams.size(); i++) {
       std::vector<double> tmp;
       fullVector<double> d(_beams[i]._displacement, 6), F(6);
       _beams[i]._stiffness.mult(d, F);
@@ -277,7 +277,7 @@ void frameSolver2d::exportFrameData(const char *DISPL, const char *M)
 void frameSolver2d::computeRotationTags()
 {
   std::multimap<MVertex *, gmshBeam2d *> v2b;
-  for(unsigned int i = 0; i < _beams.size(); i++) {
+  for(std::size_t i = 0; i < _beams.size(); i++) {
     v2b.insert(std::make_pair(_beams[i]._element->getVertex(0), &_beams[i]));
     v2b.insert(std::make_pair(_beams[i]._element->getVertex(1), &_beams[i]));
   }
diff --git a/Solver/groupOfElements.cpp b/Solver/groupOfElements.cpp
index f50de50534d99e30fc926519d72fcd099f2cef26..c8c6c530d9b4761de133bbe8ae01d1e447de469b 100644
--- a/Solver/groupOfElements.cpp
+++ b/Solver/groupOfElements.cpp
@@ -33,7 +33,7 @@ groupOfElements::groupOfElements(std::vector<MElement *> &elems)
 
 void groupOfElements::addElementary(GEntity *ge, const elementFilter &filter)
 {
-  for(unsigned int j = 0; j < ge->getNumMeshElements(); j++) {
+  for(std::size_t j = 0; j < ge->getNumMeshElements(); j++) {
     MElement *e = ge->getMeshElement(j);
     if(filter(e)) {
       insert(e);
@@ -47,7 +47,7 @@ void groupOfElements::addPhysical(int dim, int physical,
   std::map<int, std::vector<GEntity *> > groups[4];
   GModel::current()->getPhysicalGroups(groups);
   std::vector<GEntity *> &ent = groups[dim][physical];
-  for(unsigned int i = 0; i < ent.size(); i++) {
+  for(std::size_t i = 0; i < ent.size(); i++) {
     addElementary(ent[i], filter);
   }
 }
diff --git a/Solver/linearSystemCSR.h b/Solver/linearSystemCSR.h
index 92ee0d4c979c99147a30d7bdfc3d754fac1141b1..837b8ccdd8d9f7af5e78c837cf3dc4fe8921bba2 100644
--- a/Solver/linearSystemCSR.h
+++ b/Solver/linearSystemCSR.h
@@ -151,19 +151,19 @@ public:
   virtual void zeroRightHandSide()
   {
     if(!_b) return;
-    for(unsigned int i = 0; i < _b->size(); i++) (*_b)[i] = scalar();
+    for(std::size_t i = 0; i < _b->size(); i++) (*_b)[i] = scalar();
   }
   virtual void zeroSolution()
   {
     if(!_x) return;
-    for(unsigned int i = 0; i < _x->size(); i++) (*_x)[i] = scalar();
+    for(std::size_t i = 0; i < _x->size(); i++) (*_x)[i] = scalar();
   }
   virtual double normInfRightHandSide() const
   {
     if(!_b) return 0.;
     double nor = 0.;
     double temp;
-    for(unsigned int i = 0; i < _b->size(); i++) {
+    for(std::size_t i = 0; i < _b->size(); i++) {
       temp = std::abs((*_b)[i]);
       if(nor < temp) nor = temp;
     }
diff --git a/Solver/linearSystemGMM.h b/Solver/linearSystemGMM.h
index 68963ecb2e3bca552ebf1633b2f2260c1d2630e0..a98e57dad411d19b3324bf2c5b8ddadcbcfc22c7 100644
--- a/Solver/linearSystemGMM.h
+++ b/Solver/linearSystemGMM.h
@@ -75,18 +75,18 @@ public:
   virtual void zeroMatrix() { gmm::clear(*_a); }
   virtual void zeroRightHandSide()
   {
-    for(unsigned int i = 0; i < _b->size(); i++) (*_b)[i] = 0.;
+    for(std::size_t i = 0; i < _b->size(); i++) (*_b)[i] = 0.;
   }
   virtual void zeroSolution()
   {
-    for(unsigned int i = 0; i < _x->size(); i++) (*_x)[i] = 0.;
+    for(std::size_t i = 0; i < _x->size(); i++) (*_x)[i] = 0.;
   }
 
   virtual double normInfRightHandSide() const
   {
     double nor = 0.;
     double temp;
-    for(unsigned int i = 0; i < _b->size(); i++) {
+    for(std::size_t i = 0; i < _b->size(); i++) {
       temp = abs((*_b)[i]); // this is valid also for complex
       // if(temp<0) temp = -temp;
       if(nor < temp) nor = temp;
diff --git a/Solver/linearSystemMUMPS.cpp b/Solver/linearSystemMUMPS.cpp
index b93d697607d251d52e10497b491c56ac3549ba27..d30faf02568514b2d1f495aafc9db037e992850e 100644
--- a/Solver/linearSystemMUMPS.cpp
+++ b/Solver/linearSystemMUMPS.cpp
@@ -76,12 +76,12 @@ void linearSystemMUMPS<double>::zeroMatrix()
 
 void linearSystemMUMPS<double>::zeroRightHandSide()
 {
-  for(unsigned int i = 0; i < _b.size(); i++) _b[i] = 0.;
+  for(std::size_t i = 0; i < _b.size(); i++) _b[i] = 0.;
 }
 
 void linearSystemMUMPS<double>::zeroSolution()
 {
-  for(unsigned int i = 0; i < _x.size(); i++) _x[i] = 0.;
+  for(std::size_t i = 0; i < _x.size(); i++) _x[i] = 0.;
 }
 
 int linearSystemMUMPS<double>::systemSolve()
@@ -110,8 +110,8 @@ int linearSystemMUMPS<double>::systemSolve()
   id.n = _n;
   id.nz = _nz;
   // Fortran indices start from 1
-  for(unsigned int i = 0; i < _irn.size(); i++) _irn[i]++;
-  for(unsigned int i = 0; i < _jcn.size(); i++) _jcn[i]++;
+  for(std::size_t i = 0; i < _irn.size(); i++) _irn[i]++;
+  for(std::size_t i = 0; i < _jcn.size(); i++) _jcn[i]++;
   id.irn = &*_irn.begin();
   id.jcn = &*_jcn.begin();
   id.a = &*_a.begin();
@@ -139,8 +139,8 @@ int linearSystemMUMPS<double>::systemSolve()
   _x.clear();
   _x = _b;
   _b = b;
-  for(unsigned int i = 0; i < _irn.size(); i++) _irn[i]--;
-  for(unsigned int i = 0; i < _jcn.size(); i++) _jcn[i]--;
+  for(std::size_t i = 0; i < _irn.size(); i++) _irn[i]--;
+  for(std::size_t i = 0; i < _jcn.size(); i++) _jcn[i]--;
 
   return 1;
 }
@@ -150,7 +150,7 @@ void linearSystemMUMPS<double>::insertInSparsityPattern(int row, int col) {}
 double linearSystemMUMPS<double>::normInfRightHandSide() const
 {
   DMUMPS_REAL norm = 0.;
-  for(unsigned int i = 0; i < _b.size(); i++) {
+  for(std::size_t i = 0; i < _b.size(); i++) {
     DMUMPS_REAL temp = fabs(_b[i]);
     if(temp > norm) norm = temp;
   }
@@ -160,7 +160,7 @@ double linearSystemMUMPS<double>::normInfRightHandSide() const
 double linearSystemMUMPS<double>::normInfSolution() const
 {
   DMUMPS_REAL norm = 0.;
-  for(unsigned int i = 0; i < _x.size(); i++) {
+  for(std::size_t i = 0; i < _x.size(); i++) {
     DMUMPS_REAL temp = fabs(_x[i]);
     if(temp > norm) norm = temp;
   }
diff --git a/Solver/solverAlgorithms.h b/Solver/solverAlgorithms.h
index 5dd609f9c3bc670107bc580f59a73f9c654464a6..db24329d1ddf9918ba1235e738efbdc4be14e533 100644
--- a/Solver/solverAlgorithms.h
+++ b/Solver/solverAlgorithms.h
@@ -262,7 +262,7 @@ public:
   virtual void addDof(Dof key) { _dofset.insert(key); }
   virtual void addDof(std::vector<Dof> &R)
   {
-    for(unsigned int i = 0; i < R.size(); i++) this->addDof(R[i]);
+    for(std::size_t i = 0; i < R.size(); i++) this->addDof(R[i]);
   }
 };
 
diff --git a/Solver/solverField.h b/Solver/solverField.h
index 78e61060154749067e49c9f6f384c9b681d0bb81..2c362db0d0c957de6feac050715086eb3f3af3c2 100644
--- a/Solver/solverField.h
+++ b/Solver/solverField.h
@@ -60,7 +60,7 @@ public:
     dm->getDofValue(D, DMVals);
     fs->f(ele, u, v, w, SFVals);
     val = ValType();
-    for(unsigned int i = 0; i < D.size(); ++i) val += SFVals[i] * DMVals[i];
+    for(std::size_t i = 0; i < D.size(); ++i) val += SFVals[i] * DMVals[i];
   }
 
   virtual void f(MElement *ele, double u, double v, double w,
@@ -81,7 +81,7 @@ public:
     dm->getDofValue(D, DMVals);
     fs->gradf(ele, u, v, w, SFGrads);
     grad = GradType();
-    for(unsigned int i = 0; i < D.size(); ++i) grad += SFGrads[i] * DMVals[i];
+    for(std::size_t i = 0; i < D.size(); ++i) grad += SFGrads[i] * DMVals[i];
   }
 
   // A quoi sert cette fonction ?? (Evalue le hessien au noeuds
diff --git a/Solver/thermicSolver.cpp b/Solver/thermicSolver.cpp
index 87e5e51ffc1f15892e476e29cb16844c3cc8b82a..d9011aef48da8b101606913716ca68f02f8e1f80 100644
--- a/Solver/thermicSolver.cpp
+++ b/Solver/thermicSolver.cpp
@@ -69,7 +69,7 @@ void thermicSolver::setThermicDomain(int phys, double k)
 
 void thermicSolver::changeLMTau(int tag, double tau)
 {
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); i++) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); i++) {
     if(LagrangeMultiplierFields[i]._tag == tag) {
       LagrangeMultiplierFields[i]._tau = tau;
     }
@@ -117,25 +117,25 @@ void thermicSolver::assemble(linearSystem<double> *lsys)
   // numbered afterwards
 
   // Dirichlet conditions
-  for(unsigned int i = 0; i < allDirichlet.size(); i++) {
+  for(std::size_t i = 0; i < allDirichlet.size(); i++) {
     FilterDofTrivial filter;
     FixNodalDofs(*LagSpace, allDirichlet[i].g->begin(),
                  allDirichlet[i].g->end(), *pAssembler, *allDirichlet[i]._f,
                  filter);
   }
   // LagrangeMultipliers
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
     NumberDofs(*LagrangeMultiplierSpace, LagrangeMultiplierFields[i].g->begin(),
                LagrangeMultiplierFields[i].g->end(), *pAssembler);
   }
   // Thermic Fields
-  for(unsigned int i = 0; i < thermicFields.size(); ++i) {
+  for(std::size_t i = 0; i < thermicFields.size(); ++i) {
     NumberDofs(*LagSpace, thermicFields[i].g->begin(),
                thermicFields[i].g->end(), *pAssembler);
   }
   // Neumann conditions
   GaussQuadrature Integ_Boundary(GaussQuadrature::Val);
-  for(unsigned int i = 0; i < allNeumann.size(); i++) {
+  for(std::size_t i = 0; i < allNeumann.size(); i++) {
     std::cout << "Neumann BC" << std::endl;
     LoadTerm<double> Lterm(*LagSpace, allNeumann[i]._f);
     Assemble(Lterm, *LagSpace, allNeumann[i].g->begin(), allNeumann[i].g->end(),
@@ -144,7 +144,7 @@ void thermicSolver::assemble(linearSystem<double> *lsys)
   // Assemble cross term, laplace term and rhs term for LM
   GaussQuadrature Integ_LagrangeMult(GaussQuadrature::ValVal);
   GaussQuadrature Integ_Laplace(GaussQuadrature::GradGrad);
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); i++) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); i++) {
     printf("Lagrange Mult Lag\n");
     LagrangeMultiplierTerm<double> LagTerm(*LagSpace, *LagrangeMultiplierSpace,
                                            1.);
@@ -167,7 +167,7 @@ void thermicSolver::assemble(linearSystem<double> *lsys)
   }
   // Assemble thermic term
   GaussQuadrature Integ_Bulk(GaussQuadrature::ValVal);
-  for(unsigned int i = 0; i < thermicFields.size(); i++) {
+  for(std::size_t i = 0; i < thermicFields.size(); i++) {
     printf("Thermic Term\n");
     LaplaceTerm<double, double> Tterm(*LagSpace, thermicFields[i]._k);
     Assemble(Tterm, *LagSpace, thermicFields[i].g->begin(),
@@ -191,7 +191,7 @@ double thermicSolver::computeL2Norm(simpleFunction<double> *sol)
 {
   double val = 0.0;
   SolverField<double> solField(pAssembler, LagSpace);
-  for(unsigned int i = 0; i < thermicFields.size(); ++i) {
+  for(std::size_t i = 0; i < thermicFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           thermicFields[i].g->begin();
         it != thermicFields[i].g->end(); ++it) {
@@ -229,7 +229,7 @@ double thermicSolver::computeLagNorm(int tag, simpleFunction<double> *sol)
 {
   double val = 0.0, val2 = 0.0;
   SolverField<double> solField(pAssembler, LagrangeMultiplierSpace);
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
     if(tag != LagrangeMultiplierFields[i]._tag) continue;
     for(groupOfElements::elementContainer::const_iterator it =
           LagrangeMultiplierFields[i].g->begin();
@@ -273,7 +273,7 @@ PView *thermicSolver::buildTemperatureView(const std::string postFileName)
   std::cout << "build Temperature View" << std::endl;
   std::set<MVertex *> v;
   std::map<MVertex *, MElement *> vCut;
-  for(unsigned int i = 0; i < thermicFields.size(); ++i) {
+  for(std::size_t i = 0; i < thermicFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           thermicFields[i].g->begin();
         it != thermicFields[i].g->end(); ++it) {
@@ -322,7 +322,7 @@ thermicSolver::buildLagrangeMultiplierView(const std::string postFileName)
   std::cout << "build Lagrange Multiplier View" << std::endl;
   if(!LagrangeMultiplierSpace) return new PView();
   std::set<MVertex *> v;
-  for(unsigned int i = 0; i < LagrangeMultiplierFields.size(); ++i) {
+  for(std::size_t i = 0; i < LagrangeMultiplierFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           LagrangeMultiplierFields[i].g->begin();
         it != LagrangeMultiplierFields[i].g->end(); ++it) {
@@ -352,7 +352,7 @@ PView *thermicSolver::buildErrorEstimateView(const std::string errorFileName,
   std::map<int, std::vector<double> > data;
 
   SolverField<double> solField(pAssembler, LagSpace);
-  for(unsigned int i = 0; i < thermicFields.size(); ++i) {
+  for(std::size_t i = 0; i < thermicFields.size(); ++i) {
     for(groupOfElements::elementContainer::const_iterator it =
           thermicFields[i].g->begin();
         it != thermicFields[i].g->end(); ++it) {
diff --git a/contrib/domhex/directions3D.cpp b/contrib/domhex/directions3D.cpp
index df87da506311af5ab0676cc10ef35e4af82804ee..dbf196b5067dddac2c0f8263c139175337a83f04 100644
--- a/contrib/domhex/directions3D.cpp
+++ b/contrib/domhex/directions3D.cpp
@@ -1157,7 +1157,7 @@ void Size_field::init_region(GRegion *gr)
   for(it = faces.begin(); it != faces.end(); it++) {
     GFace *gf = *it;
 
-    for(GRegion::size_type i = 0; i < gf->storage1.size(); i++) {
+    for(std::size_t i = 0; i < gf->storage1.size(); i++) {
       SPoint3 point = gf->storage1[i];
       double const h = gf->storage4[i];
 
@@ -1167,7 +1167,7 @@ void Size_field::init_region(GRegion *gr)
 
   ANNpointArray duplicate = annAllocPts(field.size(), 3);
 
-  for(GRegion::size_type i = 0; i < field.size(); i++) {
+  for(std::size_t i = 0; i < field.size(); i++) {
     duplicate[i][0] = field[i].first.x();
     duplicate[i][1] = field[i].first.y();
     duplicate[i][2] = field[i].first.z();
@@ -1187,7 +1187,7 @@ void Size_field::init_region(GRegion *gr)
   for(it = faces.begin(); it != faces.end(); it++) {
     GFace *gf = *it;
 
-    for(GRegion::size_type i = 0; i < gf->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gf->getNumMeshElements(); i++) {
       MElement *element = gf->getMeshElement(i);
       for(std::size_t j = 0; j < element->getNumVertices(); j++) {
         MVertex *vertex = element->getVertex(j);
@@ -1699,9 +1699,9 @@ void Nearest_point::print_field(GRegion *gr)
   std::ofstream file("nearest.pos");
   file << "View \"test\" {\n";
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
-    for(GRegion::size_type j = 0; j < element->getNumVertices(); j++) {
+    for(std::size_t j = 0; j < element->getNumVertices(); j++) {
       MVertex *vertex = element->getVertex(j);
       double x = vertex->x();
       double y = vertex->y();
diff --git a/contrib/domhex/simple3D.cpp b/contrib/domhex/simple3D.cpp
index 5cf4b473622624d0d61294cfb115dcc4de172b08..2685fe035a12b6c32fdc003f958642cf903364e5 100644
--- a/contrib/domhex/simple3D.cpp
+++ b/contrib/domhex/simple3D.cpp
@@ -336,7 +336,7 @@ void Filler::treat_region(GRegion *gr)
   for(it2 = faces.begin(); it2 != faces.end(); it2++) {
     gf = *it2;
     limit = code(gf->tag());
-    for(GFace::size_type i = 0; i < gf->getNumMeshElements(); i++) {
+    for(std::size_t i = 0; i < gf->getNumMeshElements(); i++) {
       MElement *element = gf->getMeshElement(i);
       for(std::size_t j = 0; j < element->getNumVertices(); j++) {
         MVertex *vertex = element->getVertex(j);
diff --git a/contrib/domhex/yamakawa.cpp b/contrib/domhex/yamakawa.cpp
index 0578766bf82acdb38e3e3e3058164d946ebb7c5d..603200fdd3761e5794cbb221bfc026bf0f5915d2 100644
--- a/contrib/domhex/yamakawa.cpp
+++ b/contrib/domhex/yamakawa.cpp
@@ -2864,7 +2864,7 @@ void Supplementary::build_vertex_to_vertices(GRegion *gr)
   std::set<MVertex *> bin;
   vertex_to_vertices.clear();
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
     if(four(element)) {
       for(std::size_t j = 0; j < element->getNumVertices(); j++) {
@@ -2897,7 +2897,7 @@ void Supplementary::build_vertex_to_tetrahedra(GRegion *gr)
   std::set<MElement *> bin;
   vertex_to_tetrahedra.clear();
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
     if(four(element)) {
       for(std::size_t j = 0; j < element->getNumVertices(); j++) {
@@ -5291,7 +5291,7 @@ void PostOp::build_vertex_to_pyramids(GRegion *gr)
 {
   vertex_to_pyramids.clear();
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
     if(five(element)) {
       build_vertex_to_pyramids(element);
@@ -5335,7 +5335,7 @@ void PostOp::build_vertex_to_hexPrism(GRegion *gr)
 {
   vertex_to_hexPrism.clear();
 
-  for(GRegion::size_type i = 0; i < gr->getNumMeshElements(); i++) {
+  for(std::size_t i = 0; i < gr->getNumMeshElements(); i++) {
     MElement *element = gr->getMeshElement(i);
     if(six(element) || eight(element)) {
       build_vertex_to_hexPrism(element);