diff --git a/_setup/geometries/geometry.py b/_setup/geometries/geometry.py
index 33e1bcfe6303233c5c41de00fce9dae47e1b4847..4a8a00af6af9a9c01c7d514c21ae62f0b9b5f377 100644
--- a/_setup/geometries/geometry.py
+++ b/_setup/geometries/geometry.py
@@ -34,6 +34,8 @@ class Geometry:
      meshSize [float]
      scaling [float], e.g., 1e-9 (nm)
      structuedMesh=False
+  in B+D) force the maximum meshSize requirement by
+      forceNetgenMeshSize=True
 
   NOTE:
     The scaling parameter seems artificial. Indeed it is.
@@ -44,11 +46,12 @@ class Geometry:
     than Cuboid((0,0,0), (1e-9, 1e-9, 1e-9)) + scaling=1
   '''
   
-  def __init__(self, geometry=None, meshSize=None, scaling=1.0 \
+  def __init__(self, geometry=None, meshSize=None, forceNetgenMeshSize=False, scaling=1.0 \
     , structuredMesh=False, structuredAbtuseMesh=False):
     
     self._geometry = geometry
     self.meshSize = meshSize
+    self.forceNetgenMeshSize = forceNetgenMeshSize
     self.scaling = scaling
 
     self.structuredMesh = structuredMesh
@@ -68,6 +71,9 @@ class Geometry:
     from ngsolve import Mesh as ngsolveMesh
     from netgen.meshing import Mesh as netgenMesh
     from commics._setup.geometries.standardGeometries import _standardGeometry
+    from ngsolve import ngsglobals
+
+    ngsglobals.msg_level = 0
 
     if not(self._mesh == None):
       print("From Geometry.GetReady(): Nothing to do, mesh is ready.")
@@ -108,7 +114,20 @@ class Geometry:
         geo = CSGeometry()
         geo.Add(ngGeo)
         
-        ngmesh = geo.GenerateMesh( maxh = self.meshSize )
+        if self.forceNetgenMeshSize:
+          from commics._tools.misc import MaximumMeshSize
+          achievedMeshSize = False
+          j = 1
+          print("Netgen meshing ........ Desired meshSize =", self.meshSize) 
+          while not(achievedMeshSize):
+            ngmesh = geo.GenerateMesh( maxh = self.meshSize / j )
+            actualMeshSize = MaximumMeshSize(ngmesh)
+            achievedMeshSize = actualMeshSize <= self.meshSize
+            print("Itaration Nr.%i: Desired meshSize = %g --- Actual meshSize = %g" % (j, self.meshSize/j, actualMeshSize))
+            j += 1
+          print("Appropriate mesh was generated ........") 
+        else:
+          ngmesh = geo.GenerateMesh( maxh = self.meshSize )
       
     self._mesh = ngsolveMesh( ngmesh )
   
@@ -184,6 +203,7 @@ class Geometry:
       string += "Vertices: " + str(self._mesh.nv) + "\n"
       string += "Elements: " + str(self._mesh.ne) + "\n"
       string += "meshSize = " + str(self.meshSize) + "\n"
+      string += "forceNetgenMeshSize = " + str(self.forceNetgenMeshSize) + "\n"
       string += "scaling = " + str(self.scaling) +"\n"
       string += "structuredMesh = " + str(self.structuredMesh) +"\n"
 
@@ -216,7 +236,11 @@ class Geometry:
   
   def Save(self, filename):
     if not(self._mesh == None):
-      self._mesh.ngmesh.Save( filename )
+      ext = ".vol"
+      if(filename[-4:] == ext):
+        ext = ""
+      self._mesh.ngmesh.Save( filename + ext )
+
 # TOECDO
 #      if ( self.boundingBox.IsBoundingBox() ):
 #        tmp = filename.rfind("/")+1
diff --git a/_tools/misc/__init__.py b/_tools/misc/__init__.py
index feda29315547b87c24a1bb3f47f38be3663e562d..def823ef1ed79a1578541f9300a2d1f54f447ca4 100644
--- a/_tools/misc/__init__.py
+++ b/_tools/misc/__init__.py
@@ -4,6 +4,7 @@ if __name__ == "__main__":
   print("Hello, this is the module. Explanation...")
 
 from commics._tools.misc.timeToString import TimeToString
+from commics._tools.misc.maximumMeshSize import MaximumMeshSize
 
 
-__all__ = ['TimeToString']
+__all__ = ['TimeToString', 'MaximumMeshSize']
diff --git a/_tools/misc/maximumMeshSize.py b/_tools/misc/maximumMeshSize.py
new file mode 100644
index 0000000000000000000000000000000000000000..8a20f57cba2e35d8466798884e3aaab496381c73
--- /dev/null
+++ b/_tools/misc/maximumMeshSize.py
@@ -0,0 +1,26 @@
+# return h_max of a ngmesh, object of class netgen.libngpy._meshing.Mesh
+
+
+#------------------------------------------------------------------------------#
+
+
+def MaximumMeshSize(ngmesh):
+  from math import sqrt
+
+  hmax = 0.0
+  for e in range(len(ngmesh.Elements3D())):
+    el = ngmesh.Elements3D()[e]
+    for i in range(4):
+      for j in range(i+1,4):
+        p1 = ngmesh.Points()[el.vertices[i]].p
+        p2 = ngmesh.Points()[el.vertices[j]].p
+  
+        h = sqrt(sum((p1[k]-p2[k])**2 for k in range(3)))
+
+        if h > hmax:
+          hmax = h
+
+  return hmax
+
+
+#------------------------------------------------------------------------------#