From 0a81a0124247dd168c4e99cec8ce7c8101552ec3 Mon Sep 17 00:00:00 2001
From: Grzegorz Kowal <grzegorz@amuncode.org>
Date: Thu, 17 Apr 2014 11:52:06 -0300
Subject: [PATCH] MESH: Micro optimization in prolong_block().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
---
 src/mesh.F90 | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/mesh.F90 b/src/mesh.F90
index e247a76..0625515 100644
--- a/src/mesh.F90
+++ b/src/mesh.F90
@@ -1502,7 +1502,7 @@ module mesh
     integer :: i, j, k, q, p
     integer :: il, iu, jl, ju, kl, ku
     integer :: ic, jc, kc, ip, jp, kp
-    real    :: dul, dur, dux, duy, duz
+    real    :: dul, dur, dux, duy, duz, du1, du2, du3, du4
 
 ! local pointers
 !
@@ -1586,21 +1586,27 @@ module mesh
 #endif /* NDIMS == 3 */
 
 #if NDIMS == 2
-            u(p,ic,jc,kc) = pdata%u(p,i,j,k) - (dux + duy)
-            u(p,ip,jc,kc) = pdata%u(p,i,j,k) + (dux - duy)
-            u(p,ic,jp,kc) = pdata%u(p,i,j,k) - (dux - duy)
-            u(p,ip,jp,kc) = pdata%u(p,i,j,k) + (dux + duy)
+            du1 = dux + duy
+            du2 = dux - duy
+            u(p,ic,jc,kc) = pdata%u(p,i,j,k) - du1
+            u(p,ip,jc,kc) = pdata%u(p,i,j,k) + du2
+            u(p,ic,jp,kc) = pdata%u(p,i,j,k) - du2
+            u(p,ip,jp,kc) = pdata%u(p,i,j,k) + du1
 #endif /* NDIMS == 2 */
 
 #if NDIMS == 3
-            u(p,ic,jc,kc) = pdata%u(p,i,j,k) - (dux + duy + duz)
-            u(p,ip,jc,kc) = pdata%u(p,i,j,k) + (dux - duy - duz)
-            u(p,ic,jp,kc) = pdata%u(p,i,j,k) - (dux - duy + duz)
-            u(p,ip,jp,kc) = pdata%u(p,i,j,k) + (dux + duy - duz)
-            u(p,ic,jc,kp) = pdata%u(p,i,j,k) - (dux + duy - duz)
-            u(p,ip,jc,kp) = pdata%u(p,i,j,k) + (dux - duy + duz)
-            u(p,ic,jp,kp) = pdata%u(p,i,j,k) - (dux - duy - duz)
-            u(p,ip,jp,kp) = pdata%u(p,i,j,k) + (dux + duy + duz)
+            du1 = dux + duy + duz
+            du2 = dux - duy - duz
+            du3 = dux - duy + duz
+            du4 = dux + duy - duz
+            u(p,ic,jc,kc) = pdata%u(p,i,j,k) - du1
+            u(p,ip,jc,kc) = pdata%u(p,i,j,k) + du2
+            u(p,ic,jp,kc) = pdata%u(p,i,j,k) - du3
+            u(p,ip,jp,kc) = pdata%u(p,i,j,k) + du4
+            u(p,ic,jc,kp) = pdata%u(p,i,j,k) - du4
+            u(p,ip,jc,kp) = pdata%u(p,i,j,k) + du3
+            u(p,ic,jp,kp) = pdata%u(p,i,j,k) - du2
+            u(p,ip,jp,kp) = pdata%u(p,i,j,k) + du1
 #endif /* NDIMS == 3 */
           end do
         end do