diff --git a/min_max_strain.py b/min_max_strain.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d461fb15abe14422d1cc8afab9ce347d8f7459
--- /dev/null
+++ b/min_max_strain.py
@@ -0,0 +1,38 @@
+#! /usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# extract principal strains from results
+# (run this script in the workspace folder)
+
+import gmsh
+import numpy as np
+
+gmsh.initialize()
+gmsh.merge('mesh.msh')
+gmsh.merge('smooth_strain_tensor.msh')
+
+dataType, tags, data, time, numComp = gmsh.view.getModelData(1, 0)
+
+# compute the 3 principal strains from nodal strain tensor
+
+e1s = []
+e2s = []
+e3s = []
+
+for epl in data:
+    [xx, xy, xz, yx, yy, yz, zx, zy, zz] = epl
+    # compute the 3 principal strains
+    epl = np.array([[xx, xy, xz], [yx, yy, yz], [zx, zy, zz]])
+    eigvals = np.linalg.eigvals(epl) 
+    eigvals = np.sort(eigvals)
+    e1s.append(eigvals[0])
+    e2s.append(eigvals[1])
+    e3s.append(eigvals[2])
+
+e1s = np.array(e1s)
+e2s = np.array(e2s)
+e3s = np.array(e3s)
+
+# display min of lowest principal strain and max of highest principal strain
+print(f'e1_min = {np.min(e1s)}')
+print(f'e3_max = {np.max(e3s)}')