[cig-commits] r22640 - seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Wed Jul 17 15:49:52 PDT 2013


Author: dkomati1
Date: 2013-07-17 15:49:52 -0700 (Wed, 17 Jul 2013)
New Revision: 22640

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90
Log:
suppressed a useless array memory copy in compute_element_att_memory_ic()


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90	2013-07-17 22:35:00 UTC (rev 22639)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_element.F90	2013-07-17 22:49:52 UTC (rev 22640)
@@ -2090,16 +2090,16 @@
 
     if(ATTENUATION_3D_VAL) then
       do k = 1,NGLLZ
-        do j = 1,NGLLZ
-          do i = 1,NGLLZ
+        do j = 1,NGLLY
+          do i = 1,NGLLX
             factor_common_c44_muv(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
           enddo
         enddo
       enddo
     else
       do k = 1,NGLLZ
-        do j = 1,NGLLZ
-          do i = 1,NGLLZ
+        do j = 1,NGLLY
+          do i = 1,NGLLX
             factor_common_c44_muv(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
           enddo
         enddo
@@ -2183,12 +2183,8 @@
   real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc_nplus1
 
 ! local parameters
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: factor_common_use
+  integer :: i_SLS,i_memory,i,j,k
 
-  integer :: i_SLS
-
-  integer :: i_memory,i,j,k
-
 ! for LDDRK
   integer :: istage
   logical :: USE_LDDRK
@@ -2205,39 +2201,67 @@
   do i_SLS = 1,N_SLS
 
     if(ATTENUATION_3D_VAL) then
-      do k = 1,NGLLZ
-        do j = 1,NGLLZ
-          do i = 1,NGLLZ
-            factor_common_use(i,j,k) = factor_common(i_SLS,i,j,k,ispec)
+
+    if(USE_LDDRK) then
+      do i_memory = 1,5
+        do k = 1,NGLLZ
+          do j = 1,NGLLY
+            do i = 1,NGLLX
+        R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec) = ALPHA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec) + &
+            deltat * (muvstore(i,j,k,ispec) * factor_common(i_SLS,i,j,k,ispec)*epsilondev_loc(i_memory,i,j,k) - &
+                      R_memory(i_memory,i_SLS,i,j,k,ispec)*(1._CUSTOM_REAL/tau_sigma_CUSTOM_REAL(i_SLS)))
+        R_memory(i_memory,i_SLS,i,j,k,ispec) = R_memory(i_memory,i_SLS,i,j,k,ispec) + &
+                                               BETA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec)
+            enddo
           enddo
         enddo
       enddo
     else
-      do k = 1,NGLLZ
-        do j = 1,NGLLZ
-          do i = 1,NGLLZ
-            factor_common_use(i,j,k) = factor_common(i_SLS,1,1,1,ispec)
+      do i_memory = 1,5
+        do k = 1,NGLLZ
+          do j = 1,NGLLY
+            do i = 1,NGLLX
+         R_memory(i_memory,i_SLS,i,j,k,ispec) = alphaval(i_SLS) * R_memory(i_memory,i_SLS,i,j,k,ispec) &
+              + muvstore(i,j,k,ispec) * factor_common(i_SLS,i,j,k,ispec) * &
+              (betaval(i_SLS) * epsilondev_loc_nplus1(i_memory,i,j,k) + gammaval(i_SLS) * epsilondev_loc(i_memory,i,j,k))
+            enddo
           enddo
         enddo
       enddo
     endif
 
-    if(USE_LDDRK)then
+    else ! if .not. ATTENUATION_3D_VAL
+
+    if(USE_LDDRK) then
       do i_memory = 1,5
-        R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) = ALPHA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec) + &
-            deltat * (muvstore(:,:,:,ispec) * factor_common_use(:,:,:)*epsilondev_loc(i_memory,:,:,:) - &
-                      R_memory(i_memory,i_SLS,:,:,:,ispec)*(1._CUSTOM_REAL/tau_sigma_CUSTOM_REAL(i_SLS)))
-        R_memory(i_memory,i_SLS,:,:,:,ispec) = R_memory(i_memory,i_SLS,:,:,:,ispec) + &
-                                               BETA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,:,:,:,ispec)
+        do k = 1,NGLLZ
+          do j = 1,NGLLY
+            do i = 1,NGLLX
+        R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec) = ALPHA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec) + &
+            deltat * (muvstore(i,j,k,ispec) * factor_common(i_SLS,1,1,1,ispec)*epsilondev_loc(i_memory,i,j,k) - &
+                      R_memory(i_memory,i_SLS,i,j,k,ispec)*(1._CUSTOM_REAL/tau_sigma_CUSTOM_REAL(i_SLS)))
+        R_memory(i_memory,i_SLS,i,j,k,ispec) = R_memory(i_memory,i_SLS,i,j,k,ispec) + &
+                                               BETA_LDDRK(istage) * R_memory_lddrk(i_memory,i_SLS,i,j,k,ispec)
+            enddo
+          enddo
+        enddo
       enddo
     else
       do i_memory = 1,5
-         R_memory(i_memory,i_SLS,:,:,:,ispec) = alphaval(i_SLS) * R_memory(i_memory,i_SLS,:,:,:,ispec) &
-              + muvstore(:,:,:,ispec) * factor_common_use(:,:,:) * &
-              (betaval(i_SLS) * epsilondev_loc_nplus1(i_memory,:,:,:) + gammaval(i_SLS) * epsilondev_loc(i_memory,:,:,:))
+        do k = 1,NGLLZ
+          do j = 1,NGLLY
+            do i = 1,NGLLX
+         R_memory(i_memory,i_SLS,i,j,k,ispec) = alphaval(i_SLS) * R_memory(i_memory,i_SLS,i,j,k,ispec) &
+              + muvstore(i,j,k,ispec) * factor_common(i_SLS,1,1,1,ispec) * &
+              (betaval(i_SLS) * epsilondev_loc_nplus1(i_memory,i,j,k) + gammaval(i_SLS) * epsilondev_loc(i_memory,i,j,k))
+            enddo
+          enddo
+        enddo
       enddo
     endif
 
+    endif ! of if ATTENUATION_3D_VAL
+
   enddo
 
   end subroutine compute_element_att_memory_ic



More information about the CIG-COMMITS mailing list