[cig-commits] r22595 - seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Sat Jul 13 16:32:38 PDT 2013
Author: dkomati1
Date: 2013-07-13 16:32:38 -0700 (Sat, 13 Jul 2013)
New Revision: 22595
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_kernels.F90
Log:
converted array prod(21) to 21 variables
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_kernels.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_kernels.F90 2013-07-13 23:29:10 UTC (rev 22594)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_kernels.F90 2013-07-13 23:32:38 UTC (rev 22595)
@@ -62,12 +62,13 @@
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUAT) :: eps_trace_over_3_crust_mantle
! local parameters
- real(kind=CUSTOM_REAL),dimension(21) :: prod
real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: b_epsilondev_loc_matrix
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: b_eps_trace_over_3_loc_matrix
integer :: i,j,k,ispec,iglob
real(kind=CUSTOM_REAL) :: eps1, eps2, eps3, eps4, eps5, eps6, b_eps1, b_eps2, b_eps3, b_eps4, b_eps5, b_eps6
real(kind=CUSTOM_REAL) :: eps_trace_over_3,b_eps_trace_over_3
+ real(kind=CUSTOM_REAL) :: prod1, prod2, prod3, prod4, prod5, prod6, prod7, prod8, prod9, &
+ prod10, prod11, prod12, prod13, prod14, prod15, prod16, prod17, prod18, prod19, prod20, prod21
! crust_mantle
do ispec = 1, NSPEC_CRUST_MANTLE
@@ -140,53 +141,53 @@
! Computing the 21 strain products without assuming eps(i)*b_eps(j) = eps(j)*b_eps(i)
!! DK DK July 2013: manually unrolled the calculations to speed up the code
- prod(1) = eps1*b_eps1
- prod(2) = eps1*b_eps2 + eps2*b_eps1
- prod(3) = eps1*b_eps3 + eps3*b_eps1
- prod(4) = (eps1*b_eps4 + eps4*b_eps1)*2._CUSTOM_REAL
- prod(5) = (eps1*b_eps5 + eps5*b_eps1)*2._CUSTOM_REAL
- prod(6) = (eps1*b_eps6 + eps6*b_eps1)*2._CUSTOM_REAL
- prod(7) = eps2*b_eps2
- prod(8) = eps2*b_eps3 + eps3*b_eps2
- prod(9) = (eps2*b_eps4 + eps4*b_eps2)*2._CUSTOM_REAL
- prod(10) = (eps2*b_eps5 + eps5*b_eps2)*2._CUSTOM_REAL
- prod(11) = (eps2*b_eps6 + eps6*b_eps2)*2._CUSTOM_REAL
- prod(12) = eps3*b_eps3
- prod(13) = (eps3*b_eps4 + eps4*b_eps3)*2._CUSTOM_REAL
- prod(14) = (eps3*b_eps5 + eps5*b_eps3)*2._CUSTOM_REAL
- prod(15) = (eps3*b_eps6 + eps6*b_eps3)*2._CUSTOM_REAL
- prod(16) = eps4*b_eps4*4._CUSTOM_REAL
- prod(17) = (eps4*b_eps5 + eps5*b_eps4)*4._CUSTOM_REAL
- prod(18) = (eps4*b_eps6 + eps6*b_eps4)*4._CUSTOM_REAL
- prod(19) = eps5*b_eps5*4._CUSTOM_REAL
- prod(20) = (eps5*b_eps6 + eps6*b_eps5)*4._CUSTOM_REAL
- prod(21) = eps6*b_eps6*4._CUSTOM_REAL
+ prod1 = eps1*b_eps1
+ prod2 = eps1*b_eps2 + eps2*b_eps1
+ prod3 = eps1*b_eps3 + eps3*b_eps1
+ prod4 = (eps1*b_eps4 + eps4*b_eps1)*2._CUSTOM_REAL
+ prod5 = (eps1*b_eps5 + eps5*b_eps1)*2._CUSTOM_REAL
+ prod6 = (eps1*b_eps6 + eps6*b_eps1)*2._CUSTOM_REAL
+ prod7 = eps2*b_eps2
+ prod8 = eps2*b_eps3 + eps3*b_eps2
+ prod9 = (eps2*b_eps4 + eps4*b_eps2)*2._CUSTOM_REAL
+ prod10 = (eps2*b_eps5 + eps5*b_eps2)*2._CUSTOM_REAL
+ prod11 = (eps2*b_eps6 + eps6*b_eps2)*2._CUSTOM_REAL
+ prod12 = eps3*b_eps3
+ prod13 = (eps3*b_eps4 + eps4*b_eps3)*2._CUSTOM_REAL
+ prod14 = (eps3*b_eps5 + eps5*b_eps3)*2._CUSTOM_REAL
+ prod15 = (eps3*b_eps6 + eps6*b_eps3)*2._CUSTOM_REAL
+ prod16 = eps4*b_eps4*4._CUSTOM_REAL
+ prod17 = (eps4*b_eps5 + eps5*b_eps4)*4._CUSTOM_REAL
+ prod18 = (eps4*b_eps6 + eps6*b_eps4)*4._CUSTOM_REAL
+ prod19 = eps5*b_eps5*4._CUSTOM_REAL
+ prod20 = (eps5*b_eps6 + eps6*b_eps5)*4._CUSTOM_REAL
+ prod21 = eps6*b_eps6*4._CUSTOM_REAL
! do not use a ":" array syntax for the first index below otherwise
! most compilers will not be able to vectorize the outer loop and the code will be slower
- cijkl_kl_crust_mantle( 1,i,j,k,ispec) = cijkl_kl_crust_mantle( 1,i,j,k,ispec) + deltat * prod( 1)
- cijkl_kl_crust_mantle( 2,i,j,k,ispec) = cijkl_kl_crust_mantle( 2,i,j,k,ispec) + deltat * prod( 2)
- cijkl_kl_crust_mantle( 3,i,j,k,ispec) = cijkl_kl_crust_mantle( 3,i,j,k,ispec) + deltat * prod( 3)
- cijkl_kl_crust_mantle( 4,i,j,k,ispec) = cijkl_kl_crust_mantle( 4,i,j,k,ispec) + deltat * prod( 4)
- cijkl_kl_crust_mantle( 5,i,j,k,ispec) = cijkl_kl_crust_mantle( 5,i,j,k,ispec) + deltat * prod( 5)
- cijkl_kl_crust_mantle( 6,i,j,k,ispec) = cijkl_kl_crust_mantle( 6,i,j,k,ispec) + deltat * prod( 6)
- cijkl_kl_crust_mantle( 7,i,j,k,ispec) = cijkl_kl_crust_mantle( 7,i,j,k,ispec) + deltat * prod( 7)
- cijkl_kl_crust_mantle( 8,i,j,k,ispec) = cijkl_kl_crust_mantle( 8,i,j,k,ispec) + deltat * prod( 8)
- cijkl_kl_crust_mantle( 9,i,j,k,ispec) = cijkl_kl_crust_mantle( 9,i,j,k,ispec) + deltat * prod( 9)
+ cijkl_kl_crust_mantle( 1,i,j,k,ispec) = cijkl_kl_crust_mantle( 1,i,j,k,ispec) + deltat * prod1
+ cijkl_kl_crust_mantle( 2,i,j,k,ispec) = cijkl_kl_crust_mantle( 2,i,j,k,ispec) + deltat * prod2
+ cijkl_kl_crust_mantle( 3,i,j,k,ispec) = cijkl_kl_crust_mantle( 3,i,j,k,ispec) + deltat * prod3
+ cijkl_kl_crust_mantle( 4,i,j,k,ispec) = cijkl_kl_crust_mantle( 4,i,j,k,ispec) + deltat * prod4
+ cijkl_kl_crust_mantle( 5,i,j,k,ispec) = cijkl_kl_crust_mantle( 5,i,j,k,ispec) + deltat * prod5
+ cijkl_kl_crust_mantle( 6,i,j,k,ispec) = cijkl_kl_crust_mantle( 6,i,j,k,ispec) + deltat * prod6
+ cijkl_kl_crust_mantle( 7,i,j,k,ispec) = cijkl_kl_crust_mantle( 7,i,j,k,ispec) + deltat * prod7
+ cijkl_kl_crust_mantle( 8,i,j,k,ispec) = cijkl_kl_crust_mantle( 8,i,j,k,ispec) + deltat * prod8
+ cijkl_kl_crust_mantle( 9,i,j,k,ispec) = cijkl_kl_crust_mantle( 9,i,j,k,ispec) + deltat * prod9
- cijkl_kl_crust_mantle(10,i,j,k,ispec) = cijkl_kl_crust_mantle(10,i,j,k,ispec) + deltat * prod(10)
- cijkl_kl_crust_mantle(11,i,j,k,ispec) = cijkl_kl_crust_mantle(11,i,j,k,ispec) + deltat * prod(11)
- cijkl_kl_crust_mantle(12,i,j,k,ispec) = cijkl_kl_crust_mantle(12,i,j,k,ispec) + deltat * prod(12)
- cijkl_kl_crust_mantle(13,i,j,k,ispec) = cijkl_kl_crust_mantle(13,i,j,k,ispec) + deltat * prod(13)
- cijkl_kl_crust_mantle(14,i,j,k,ispec) = cijkl_kl_crust_mantle(14,i,j,k,ispec) + deltat * prod(14)
- cijkl_kl_crust_mantle(15,i,j,k,ispec) = cijkl_kl_crust_mantle(15,i,j,k,ispec) + deltat * prod(15)
- cijkl_kl_crust_mantle(16,i,j,k,ispec) = cijkl_kl_crust_mantle(16,i,j,k,ispec) + deltat * prod(16)
- cijkl_kl_crust_mantle(17,i,j,k,ispec) = cijkl_kl_crust_mantle(17,i,j,k,ispec) + deltat * prod(17)
- cijkl_kl_crust_mantle(18,i,j,k,ispec) = cijkl_kl_crust_mantle(18,i,j,k,ispec) + deltat * prod(18)
- cijkl_kl_crust_mantle(19,i,j,k,ispec) = cijkl_kl_crust_mantle(19,i,j,k,ispec) + deltat * prod(19)
+ cijkl_kl_crust_mantle(10,i,j,k,ispec) = cijkl_kl_crust_mantle(10,i,j,k,ispec) + deltat * prod10
+ cijkl_kl_crust_mantle(11,i,j,k,ispec) = cijkl_kl_crust_mantle(11,i,j,k,ispec) + deltat * prod11
+ cijkl_kl_crust_mantle(12,i,j,k,ispec) = cijkl_kl_crust_mantle(12,i,j,k,ispec) + deltat * prod12
+ cijkl_kl_crust_mantle(13,i,j,k,ispec) = cijkl_kl_crust_mantle(13,i,j,k,ispec) + deltat * prod13
+ cijkl_kl_crust_mantle(14,i,j,k,ispec) = cijkl_kl_crust_mantle(14,i,j,k,ispec) + deltat * prod14
+ cijkl_kl_crust_mantle(15,i,j,k,ispec) = cijkl_kl_crust_mantle(15,i,j,k,ispec) + deltat * prod15
+ cijkl_kl_crust_mantle(16,i,j,k,ispec) = cijkl_kl_crust_mantle(16,i,j,k,ispec) + deltat * prod16
+ cijkl_kl_crust_mantle(17,i,j,k,ispec) = cijkl_kl_crust_mantle(17,i,j,k,ispec) + deltat * prod17
+ cijkl_kl_crust_mantle(18,i,j,k,ispec) = cijkl_kl_crust_mantle(18,i,j,k,ispec) + deltat * prod18
+ cijkl_kl_crust_mantle(19,i,j,k,ispec) = cijkl_kl_crust_mantle(19,i,j,k,ispec) + deltat * prod19
- cijkl_kl_crust_mantle(20,i,j,k,ispec) = cijkl_kl_crust_mantle(20,i,j,k,ispec) + deltat * prod(20)
- cijkl_kl_crust_mantle(21,i,j,k,ispec) = cijkl_kl_crust_mantle(21,i,j,k,ispec) + deltat * prod(21)
+ cijkl_kl_crust_mantle(20,i,j,k,ispec) = cijkl_kl_crust_mantle(20,i,j,k,ispec) + deltat * prod20
+ cijkl_kl_crust_mantle(21,i,j,k,ispec) = cijkl_kl_crust_mantle(21,i,j,k,ispec) + deltat * prod21
enddo
enddo
enddo
More information about the CIG-COMMITS
mailing list