[cig-commits] r22638 - seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Wed Jul 17 12:24:55 PDT 2013
Author: dkomati1
Date: 2013-07-17 12:24:55 -0700 (Wed, 17 Jul 2013)
New Revision: 22638
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_outer_core_Dev.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
Log:
done vectorizing all compute_forces()
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_crust_mantle_Dev.F90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -46,7 +46,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_INNER_CORE,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore,kappahstore,muvstore,muhstore,eta_anisostore, &
c11store,c12store,c13store,c14store,c15store,c16store,c22store, &
c23store,c24store,c25store,c26store,c33store,c34store,c35store, &
@@ -55,7 +55,7 @@
R_memory,one_minus_sum_beta,deltat, &
alphaval,betaval,gammaval,factor_common,vnspec,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev,eps_trace_over_3)
+ epsilondev,eps_trace_over_3,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
! this routine is optimized for NGLLX = NGLLY = NGLLZ = 5 using the Deville et al. (2002) inlined matrix-matrix products
@@ -83,9 +83,7 @@
double precision, dimension(NGLLX,NGLLY,NGLLZ) :: wgll_cube
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xx,hprimewgll_xx
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xxT,hprimewgll_xxT
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY) :: wgllwgll_xy
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ) :: wgllwgll_xz
- real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ) :: wgllwgll_yz
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D
! store anisotropic properties only where needed to save memory
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPECMAX_TISO_MANTLE) :: &
@@ -495,18 +493,43 @@
enddo
! sum contributions
+#ifdef FORCE_VECTORIZATION
+ do ijk=1,NGLLCUBE
+ fac1 = wgllwgll_yz_3D(ijk,1,1)
+ fac2 = wgllwgll_xz_3D(ijk,1,1)
+ fac3 = wgllwgll_xy_3D(ijk,1,1)
+ sum_terms(1,ijk,1,1) = - (fac1*newtempx1(ijk,1,1) + fac2*newtempx2(ijk,1,1) + fac3*newtempx3(ijk,1,1))
+ sum_terms(2,ijk,1,1) = - (fac1*newtempy1(ijk,1,1) + fac2*newtempy2(ijk,1,1) + fac3*newtempy3(ijk,1,1))
+ sum_terms(3,ijk,1,1) = - (fac1*newtempz1(ijk,1,1) + fac2*newtempz2(ijk,1,1) + fac3*newtempz3(ijk,1,1))
+ enddo
+#else
+! do k=1,NGLLZ
+! do j=1,NGLLY
+! fac1 = wgllwgll_yz(j,k)
+! do i=1,NGLLX
+! fac2 = wgllwgll_xz(i,k)
+! fac3 = wgllwgll_xy(i,j)
+! sum_terms(1,i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
+! sum_terms(2,i,j,k) = - (fac1*newtempy1(i,j,k) + fac2*newtempy2(i,j,k) + fac3*newtempy3(i,j,k))
+! sum_terms(3,i,j,k) = - (fac1*newtempz1(i,j,k) + fac2*newtempz2(i,j,k) + fac3*newtempz3(i,j,k))
+! enddo
+! enddo
+! enddo
+! in principle we only need the 2D arrays of weights above, but here we purposely make them 3D
+! in order to be able to efficiently vectorize the loops (see above)
do k=1,NGLLZ
do j=1,NGLLY
- fac1 = wgllwgll_yz(j,k)
do i=1,NGLLX
- fac2 = wgllwgll_xz(i,k)
- fac3 = wgllwgll_xy(i,j)
+ fac1 = wgllwgll_yz_3D(i,j,k)
+ fac2 = wgllwgll_xz_3D(i,j,k)
+ fac3 = wgllwgll_xy_3D(i,j,k)
sum_terms(1,i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
sum_terms(2,i,j,k) = - (fac1*newtempy1(i,j,k) + fac2*newtempy2(i,j,k) + fac3*newtempy3(i,j,k))
sum_terms(3,i,j,k) = - (fac1*newtempz1(i,j,k) + fac2*newtempz2(i,j,k) + fac3*newtempz3(i,j,k))
enddo
enddo
enddo
+#endif
! add gravity terms
if(GRAVITY_VAL) then
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_inner_core_Dev.F90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -45,13 +45,13 @@
npoin2D_cube_from_slices,buffer_all_cube_from_slices,buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_INNER_CORE,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore,muvstore,ibool,idoubling, &
c11store,c33store,c12store,c13store,c44store,R_memory,one_minus_sum_beta,deltat, &
alphaval,betaval,gammaval,factor_common, &
vnspec,&
istage,R_memory_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev,eps_trace_over_3)
+ epsilondev,eps_trace_over_3,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
! this routine is optimized for NGLLX = NGLLY = NGLLZ = 5 using the Deville et al. (2002) inlined matrix-matrix products
@@ -93,9 +93,7 @@
double precision, dimension(NGLLX,NGLLY,NGLLZ) :: wgll_cube
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xx,hprimewgll_xx
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xxT,hprimewgll_xxT
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY) :: wgllwgll_xy
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ) :: wgllwgll_xz
- real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ) :: wgllwgll_yz
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE) :: kappavstore,muvstore
@@ -961,18 +959,43 @@
enddo
! sum contributions
+#ifdef FORCE_VECTORIZATION
+ do ijk=1,NGLLCUBE
+ fac1 = wgllwgll_yz_3D(ijk,1,1)
+ fac2 = wgllwgll_xz_3D(ijk,1,1)
+ fac3 = wgllwgll_xy_3D(ijk,1,1)
+ sum_terms(1,ijk,1,1) = - (fac1*newtempx1(ijk,1,1) + fac2*newtempx2(ijk,1,1) + fac3*newtempx3(ijk,1,1))
+ sum_terms(2,ijk,1,1) = - (fac1*newtempy1(ijk,1,1) + fac2*newtempy2(ijk,1,1) + fac3*newtempy3(ijk,1,1))
+ sum_terms(3,ijk,1,1) = - (fac1*newtempz1(ijk,1,1) + fac2*newtempz2(ijk,1,1) + fac3*newtempz3(ijk,1,1))
+ enddo
+#else
+! do k=1,NGLLZ
+! do j=1,NGLLY
+! fac1 = wgllwgll_yz(j,k)
+! do i=1,NGLLX
+! fac2 = wgllwgll_xz(i,k)
+! fac3 = wgllwgll_xy(i,j)
+! sum_terms(1,i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
+! sum_terms(2,i,j,k) = - (fac1*newtempy1(i,j,k) + fac2*newtempy2(i,j,k) + fac3*newtempy3(i,j,k))
+! sum_terms(3,i,j,k) = - (fac1*newtempz1(i,j,k) + fac2*newtempz2(i,j,k) + fac3*newtempz3(i,j,k))
+! enddo
+! enddo
+! enddo
+! in principle we only need the 2D arrays of weights above, but here we purposely make them 3D
+! in order to be able to efficiently vectorize the loops (see above)
do k=1,NGLLZ
do j=1,NGLLY
- fac1 = wgllwgll_yz(j,k)
do i=1,NGLLX
- fac2 = wgllwgll_xz(i,k)
- fac3 = wgllwgll_xy(i,j)
+ fac1 = wgllwgll_yz_3D(i,j,k)
+ fac2 = wgllwgll_xz_3D(i,j,k)
+ fac3 = wgllwgll_xy_3D(i,j,k)
sum_terms(1,i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
sum_terms(2,i,j,k) = - (fac1*newtempy1(i,j,k) + fac2*newtempy2(i,j,k) + fac3*newtempy3(i,j,k))
sum_terms(3,i,j,k) = - (fac1*newtempz1(i,j,k) + fac2*newtempz2(i,j,k) + fac3*newtempz3(i,j,k))
enddo
enddo
enddo
+#endif
! add gravity terms
if(GRAVITY_VAL) then
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_outer_core_Dev.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_outer_core_Dev.F90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/compute_forces_outer_core_Dev.F90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -43,9 +43,10 @@
buffer_send_chunkcorn_scalar,buffer_recv_chunkcorn_scalar,iphase,icall, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
! this routine is optimized for NGLLX = NGLLY = NGLLZ = 5 using the Deville et al. (2002) inlined matrix-matrix products
@@ -71,10 +72,8 @@
! array with derivatives of Lagrange polynomials and precalculated products
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xx,hprimewgll_xx
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLX) :: hprime_xxT,hprimewgll_xxT
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY) :: wgllwgll_xy
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ) :: wgllwgll_xz
- real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ) :: wgllwgll_yz
double precision, dimension(NGLLX,NGLLY,NGLLZ) :: wgll_cube
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D
integer :: SIMULATION_TYPE
logical :: MOVIE_VOLUME
@@ -106,7 +105,6 @@
integer :: i,j,k
real(kind=CUSTOM_REAL) :: xixl,xiyl,xizl,etaxl,etayl,etazl,gammaxl,gammayl,gammazl,jacobianl
real(kind=CUSTOM_REAL) :: dpotentialdxl,dpotentialdyl,dpotentialdzl
- real(kind=CUSTOM_REAL) :: fac1,fac2,fac3
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: sum_terms
! manually inline the calls to the Deville et al. (2002) routines
@@ -632,16 +630,35 @@
enddo
! sum contributions
- do k=1,NGLLZ
+#ifdef FORCE_VECTORIZATION
+ do ijk=1,NGLLCUBE
+ sum_terms(ijk,1,1) = - (wgllwgll_yz_3D(ijk,1,1)*newtempx1(ijk,1,1) + &
+ wgllwgll_xz_3D(ijk,1,1)*newtempx2(ijk,1,1) + &
+ wgllwgll_xy_3D(ijk,1,1)*newtempx3(ijk,1,1))
+ enddo
+#else
+! do k=1,NGLLZ
+! do j=1,NGLLY
+! fac1 = wgllwgll_yz(j,k)
+! do i=1,NGLLX
+! fac2 = wgllwgll_xz(i,k)
+! fac3 = wgllwgll_xy(i,j)
+! sum_terms(i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
+! enddo
+! enddo
+! enddo
+! in principle we only need the 2D arrays of weights above, but here we purposely make them 3D
+! in order to be able to efficiently vectorize the loops (see above)
+ do k=1,NGLLZ
do j=1,NGLLY
- fac1 = wgllwgll_yz(j,k)
do i=1,NGLLX
- fac2 = wgllwgll_xz(i,k)
- fac3 = wgllwgll_xy(i,j)
- sum_terms(i,j,k) = - (fac1*newtempx1(i,j,k) + fac2*newtempx2(i,j,k) + fac3*newtempx3(i,j,k))
+ sum_terms(i,j,k) = - (wgllwgll_yz_3D(i,j,k)*newtempx1(i,j,k) + &
+ wgllwgll_xz_3D(i,j,k)*newtempx2(i,j,k) + &
+ wgllwgll_xy_3D(i,j,k)*newtempx3(i,j,k))
enddo
enddo
enddo
+#endif
! add gravity term
if(GRAVITY_VAL) then
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_classical.f90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -114,9 +114,10 @@
buffer_send_faces,buffer_received_faces,npoin2D_max_all_CM_IC, &
buffer_send_chunkcorn_scalar,buffer_recv_chunkcorn_scalar,iphase,icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,deltat,two_omega_earth, &
@@ -240,9 +241,10 @@
buffer_send_faces,buffer_received_faces,npoin2D_max_all_CM_IC, &
buffer_send_chunkcorn_scalar,buffer_recv_chunkcorn_scalar,iphase,icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,deltat,two_omega_earth, &
@@ -328,7 +330,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -343,7 +345,7 @@
alphaval,betaval,gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_crust_mantle,accel_crust_mantle, &
@@ -412,7 +414,7 @@
npoin2D_cube_from_slices,buffer_all_cube_from_slices,buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -421,7 +423,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_inner_core,accel_inner_core, &
@@ -623,7 +625,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -638,7 +640,7 @@
alphaval,betaval,gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_crust_mantle,accel_crust_mantle, &
@@ -707,7 +709,7 @@
npoin2D_cube_from_slices,buffer_all_cube_from_slices,buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -716,7 +718,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_inner_core,accel_inner_core, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -138,9 +138,10 @@
buffer_send_faces,buffer_received_faces,npoin2D_max_all_CM_IC, &
buffer_send_chunkcorn_scalar,buffer_recv_chunkcorn_scalar,iphase,icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,deltat,two_omega_earth, &
@@ -264,9 +265,10 @@
buffer_send_faces,buffer_received_faces,npoin2D_max_all_CM_IC, &
buffer_send_chunkcorn_scalar,buffer_recv_chunkcorn_scalar,iphase,icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,deltat,two_omega_earth, &
@@ -362,7 +364,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -377,7 +379,7 @@
alphaval,betaval,gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_crust_mantle,accel_crust_mantle, &
@@ -446,7 +448,7 @@
npoin2D_cube_from_slices,buffer_all_cube_from_slices,buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -455,7 +457,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_inner_core,accel_inner_core, &
@@ -653,7 +655,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -668,7 +670,7 @@
alphaval,betaval,gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_crust_mantle,accel_crust_mantle, &
@@ -737,7 +739,7 @@
npoin2D_cube_from_slices,buffer_all_cube_from_slices,buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -746,7 +748,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
displ_inner_core,accel_inner_core, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -112,9 +112,10 @@
b_buffer_send_faces,b_buffer_received_faces,npoin2D_max_all_CM_IC, &
b_buffer_send_chunkcorn_scalar,b_buffer_recv_chunkcorn_scalar,b_iphase,b_icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_outer_core(time,b_deltat,b_two_omega_earth, &
b_A_array_rotation,b_B_array_rotation,d_ln_density_dr_table, &
@@ -245,9 +246,10 @@
b_buffer_send_faces,b_buffer_received_faces,npoin2D_max_all_CM_IC, &
b_buffer_send_chunkcorn_scalar,b_buffer_recv_chunkcorn_scalar,b_iphase,b_icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,b_deltat,b_two_omega_earth, &
@@ -339,7 +341,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -354,7 +356,7 @@
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_crust_mantle,b_accel_crust_mantle, &
@@ -424,7 +426,7 @@
npoin2D_cube_from_slices,b_buffer_all_cube_from_slices,b_buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -433,7 +435,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_inner_core,b_accel_inner_core, &
@@ -618,7 +620,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -633,7 +635,7 @@
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_crust_mantle,b_accel_crust_mantle, &
@@ -702,7 +704,7 @@
npoin2D_cube_from_slices,b_buffer_all_cube_from_slices,b_buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -711,7 +713,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_inner_core,b_accel_inner_core, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -116,9 +116,10 @@
b_buffer_send_faces,b_buffer_received_faces,npoin2D_max_all_CM_IC, &
b_buffer_send_chunkcorn_scalar,b_buffer_recv_chunkcorn_scalar,b_iphase,b_icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_outer_core(time,b_deltat,b_two_omega_earth, &
b_A_array_rotation,b_B_array_rotation,d_ln_density_dr_table, &
@@ -276,9 +277,10 @@
b_buffer_send_faces,b_buffer_received_faces,npoin2D_max_all_CM_IC, &
b_buffer_send_chunkcorn_scalar,b_buffer_recv_chunkcorn_scalar,b_iphase,b_icall, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
ibool_outer_core,MOVIE_VOLUME,&
- istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE)
+ istage,A_array_rotation_lddrk,B_array_rotation_lddrk,USE_LDDRK,SIMULATION_TYPE, &
+ wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
! div_displ_outer_core is initialized to zero in the following subroutine.
call compute_forces_outer_core(time,b_deltat,b_two_omega_earth, &
@@ -370,7 +372,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -385,7 +387,7 @@
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_crust_mantle,b_accel_crust_mantle, &
@@ -455,7 +457,7 @@
npoin2D_cube_from_slices,b_buffer_all_cube_from_slices,b_buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -464,7 +466,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_inner_core,b_accel_inner_core, &
@@ -684,7 +686,7 @@
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT, &
hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_crust_mantle,kappahstore_crust_mantle,muvstore_crust_mantle, &
muhstore_crust_mantle,eta_anisostore_crust_mantle, &
c11store_crust_mantle,c12store_crust_mantle,c13store_crust_mantle, &
@@ -699,7 +701,7 @@
b_alphaval,b_betaval,b_gammaval,factor_common_crust_mantle, &
size(factor_common_crust_mantle,5),&
istage,R_memory_crust_mantle_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_crust_mantle,eps_trace_over_3_crust_mantle)
+ epsilondev_crust_mantle,eps_trace_over_3_crust_mantle,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_crust_mantle(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_crust_mantle,b_accel_crust_mantle, &
@@ -768,7 +770,7 @@
npoin2D_cube_from_slices,b_buffer_all_cube_from_slices,b_buffer_slices,ibool_central_cube, &
receiver_cube_from_slices,ibelm_bottom_inner_core,NSPEC2D_BOTTOM_IC,INCLUDE_CENTRAL_CUBE,b_iphase_CC, &
hprime_xx,hprime_xxT,hprimewgll_xx,hprimewgll_xxT, &
- wgllwgll_xy,wgllwgll_xz,wgllwgll_yz,wgll_cube, &
+ wgll_cube, &
kappavstore_inner_core,muvstore_inner_core,ibool_inner_core,idoubling_inner_core, &
c11store_inner_core,c33store_inner_core,c12store_inner_core, &
c13store_inner_core,c44store_inner_core, &
@@ -777,7 +779,7 @@
factor_common_inner_core, &
size(factor_common_inner_core,5),&
istage,R_memory_inner_core_lddrk,tau_sigma_CUSTOM_REAL,USE_LDDRK,&
- epsilondev_inner_core,eps_trace_over_3_inner_core)
+ epsilondev_inner_core,eps_trace_over_3_inner_core,wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D)
else
call compute_forces_inner_core(minus_gravity_table,density_table,minus_deriv_gravity_table, &
b_displ_inner_core,b_accel_inner_core, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90 2013-07-17 16:44:09 UTC (rev 22637)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90 2013-07-17 19:24:55 UTC (rev 22638)
@@ -871,6 +871,7 @@
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY) :: wgllwgll_xy
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ) :: wgllwgll_xz
real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ) :: wgllwgll_yz
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: wgllwgll_xy_3D,wgllwgll_xz_3D,wgllwgll_yz_3D
! Lagrange interpolators at receivers
double precision, dimension(:,:), allocatable :: hxir_store,hetar_store,hgammar_store
@@ -1133,6 +1134,17 @@
ADIOS_FOR_MPI_ARRAYS,ADIOS_FOR_ARRAYS_SOLVER,ADIOS_FOR_AVS_DX,RATIO_BY_WHICH_TO_INCREASE_IT, &
ATT1,ATT2,ATT3,ATT4,ATT5,EXACT_MASS_MATRIX_FOR_ROTATION)
+! define a 3D extension in order to be able to force vectorization in the compute_forces routines
+ do k = 1,NGLLZ
+ do j = 1,NGLLY
+ do i = 1,NGLLX
+ wgllwgll_yz_3D(i,j,k) = wgllwgll_yz(j,k)
+ wgllwgll_xz_3D(i,j,k) = wgllwgll_xz(i,k)
+ wgllwgll_xy_3D(i,j,k) = wgllwgll_xy(i,j)
+ enddo
+ enddo
+ enddo
+
! to switch between simulation type 1 mode and simulation type 3 mode
! in exact undoing of attenuation
undo_att_sim_type_3 = .false.
More information about the CIG-COMMITS
mailing list