From b1eb9faf21a1e1c3215a0ea164ae05aa0208f768 Mon Sep 17 00:00:00 2001
From: Tom Gustafsson <tom.gustafsson@iki.fi>
Date: Fri, 26 Jan 2024 15:03:43 +0200
Subject: [PATCH] optimize the initialization of large tetrahedral tensor mesh

---
 skfem/mesh/mesh_tet_1.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/skfem/mesh/mesh_tet_1.py b/skfem/mesh/mesh_tet_1.py
index 5b855205..a220b845 100644
--- a/skfem/mesh/mesh_tet_1.py
+++ b/skfem/mesh/mesh_tet_1.py
@@ -381,13 +381,13 @@ def init_tensor(cls: Type,
                 .copy()
                 .flatten())
 
-        T = np.zeros((4, 0))
-        T = np.hstack((T, t[[0, 1, 5, 7]]))
-        T = np.hstack((T, t[[0, 1, 4, 7]]))
-        T = np.hstack((T, t[[0, 2, 4, 7]]))
-        T = np.hstack((T, t[[0, 3, 5, 7]]))
-        T = np.hstack((T, t[[0, 2, 6, 7]]))
-        T = np.hstack((T, t[[0, 3, 6, 7]]))
+        T = np.zeros((4, 6 * ne))
+        T[:, :ne] = t[[0, 1, 5, 7]]
+        T[:, ne:(2 * ne)] = t[[0, 1, 4, 7]]
+        T[:, (2 * ne):(3 * ne)] = t[[0, 2, 4, 7]]
+        T[:, (3 * ne):(4 * ne)] = t[[0, 3, 5, 7]]
+        T[:, (4 * ne):(5 * ne)] = t[[0, 2, 6, 7]]
+        T[:, (5 * ne):] = t[[0, 3, 6, 7]]
 
         return cls(p, T.astype(np.int64))