From 247ecd1178eb6068884dd310df0dd648d40e53f3 Mon Sep 17 00:00:00 2001
From: Grzegorz Kowal <grzegorz@gkowal.info>
Date: Tue, 9 Dec 2008 21:02:33 -0600
Subject: [PATCH] Added more helpful dimension indices.

---
 src/boundaries.F90 | 24 ++++++++++++-----------
 src/config.F90     | 47 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 11 deletions(-)

diff --git a/src/boundaries.F90 b/src/boundaries.F90
index 906ae57..2b607fc 100644
--- a/src/boundaries.F90
+++ b/src/boundaries.F90
@@ -138,17 +138,19 @@ module boundaries
 !
   subroutine bnd_copy(u, b, id, is, ip)
 
-    use blocks, only : nvars
-    use config, only : igrids, jgrids, kgrids, nghost, ncells
+    use blocks, only : nv => nvars
+    use config, only : ng, im, ib, ibl, ibu, ie, iel, ieu                 &
+                         , jm, jb, jbl, jbu, je, jel, jeu                 &
+                         , km, kb, kbl, kbu, ke, kel, keu
     use error , only : print_warning
 
     implicit none
 
 ! arguments
 !
-    real, dimension(nvars,igrids,jgrids,kgrids), intent(inout) :: u
-    real, dimension(nvars,igrids,jgrids,kgrids), intent(in)    :: b
-    integer                                    , intent(in)    :: id, is, ip
+    real, dimension(nv,im,jm,km), intent(inout) :: u
+    real, dimension(nv,im,jm,km), intent(in)    :: b
+    integer                     , intent(in)    :: id, is, ip
 
 ! local variables
 !
@@ -164,17 +166,17 @@ module boundaries
 !
     select case(ii)
     case(110)
-      u(:,1:nghost,:,:) = b(:,ncells:ncells+nghost,:,:)
+      u(:,  1:ibl,:,:) = b(:,iel:ie ,:,:)
     case(120)
-      u(:,igrids-nghost:igrids,:,:) = b(:,nghost+1:2*nghost,:,:)
+      u(:,ieu:im ,:,:) = b(:, ib:ibu,:,:)
     case(210)
-      u(:,:,1:nghost,:) = b(:,:,ncells:ncells+nghost,:)
+      u(:,:,  1:jbl,:) = b(:,:,jel:je ,:)
     case(220)
-      u(:,:,jgrids-nghost:jgrids,:) = b(:,:,nghost+1:2*nghost,:)
+      u(:,:,jeu:jm ,:) = b(:,:, jb:jbu,:)
     case(310)
-      u(:,:,:,1:nghost) = b(:,:,:,ncells:ncells+nghost)
+      u(:,:,:,  1:kbl) = b(:,:,:,kel:ke )
     case(320)
-      u(:,:,:,kgrids-nghost:kgrids) = b(:,:,:,nghost+1:2*nghost)
+      u(:,:,:,keu:km ) = b(:,:,:, kb:kbu)
     case default
       call print_warning("boundaries::bnd_copy", "Boundary flag unsupported!")
     end select
diff --git a/src/config.F90 b/src/config.F90
index db0b4ae..dd9878f 100644
--- a/src/config.F90
+++ b/src/config.F90
@@ -37,6 +37,12 @@ module config
   integer(kind=4), save :: ncells =  8, nghost =  2, ngrids = 10    &
                          , igrids = 10, jgrids = 10, kgrids = 10
 
+! derived dimensional variables
+!
+  integer(kind=4), save :: in, im, ib, ie, ibl, ibu, iel, ieu, ng   &
+                         , jn, jm, jb, je, jbl, jbu, jel, jeu       &
+                         , kn, km, kb, ke, kbl, kbu, kel, keu
+
 ! mesh refinement control
 !
   integer(kind=4), save :: maxlev = 2
@@ -205,6 +211,47 @@ module config
     kgrids = ngrids
 #endif /* */
 
+    ng  = nghost
+
+    in  = ncells
+    im  = in + 2 * ng
+    ib  = ng + 1
+    ie  = ng + in
+    ibl = ib - 1
+    ibu = ib + ng - 1
+    iel = ie - ng + 1
+    ieu = ie - 1
+
+    jn  = ncells
+    jm  = jn + 2 * ng
+    jb  = ng + 1
+    je  = ng + jn
+    jbl = jb - 1
+    jbu = jb + ng - 1
+    jel = je - ng + 1
+    jeu = je - 1
+
+#if NDIMS == 2
+    kn  = 1
+    km  = 1
+    kb  = 1
+    ke  = 1
+    kbl = 1
+    kbu = 1
+    kel = 1
+    keu = 1
+#endif /* NDIMS == 2 */
+#if NDIMS == 3
+    kn  = ncells
+    km  = kn + 2 * ng
+    kb  = ng + 1
+    ke  = ng + kn
+    kbl = kb - 1
+    kbu = kb + ng - 1
+    kel = ke - ng + 1
+    keu = ke - 1
+#endif /* NDIMS == 3 */
+
     gammam1  = gamma - 1.0
     gammam1i = 1.0 / gammam1
     csnd2    = csnd * csnd