[cig-commits] r22621 - seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Mon Jul 15 17:06:12 PDT 2013
Author: dkomati1
Date: 2013-07-15 17:06:11 -0700 (Mon, 15 Jul 2013)
New Revision: 22621
Modified:
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
Log:
done vectorizing part2_*.f90; thus now all included files are fully vectorized
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-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90 2013-07-16 00:06:11 UTC (rev 22621)
@@ -6,7 +6,6 @@
! Newmark time scheme update
-
do istage = 1, NSTAGE_TIME_SCHEME ! begin loop of istage
if(USE_LDDRK)then
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_classical.f90 2013-07-16 00:06:11 UTC (rev 22621)
@@ -8,7 +8,17 @@
! backward field
if (SIMULATION_TYPE == 3) then
+
! mantle
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_CRUST_MANTLE*NDIM
+ b_displ_crust_mantle(i,1) = b_displ_crust_mantle(i,1) &
+ + b_deltat*b_veloc_crust_mantle(i,1) + b_deltatsqover2*b_accel_crust_mantle(i,1)
+ b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) &
+ + b_deltatover2*b_accel_crust_mantle(i,1)
+ b_accel_crust_mantle(i,1) = 0._CUSTOM_REAL
+ enddo
+ else
do i=1,NGLOB_CRUST_MANTLE
b_displ_crust_mantle(:,i) = b_displ_crust_mantle(:,i) &
+ b_deltat*b_veloc_crust_mantle(:,i) + b_deltatsqover2*b_accel_crust_mantle(:,i)
@@ -16,6 +26,8 @@
+ b_deltatover2*b_accel_crust_mantle(:,i)
b_accel_crust_mantle(:,i) = 0._CUSTOM_REAL
enddo
+ endif
+
! outer core
do i=1,NGLOB_OUTER_CORE
b_displ_outer_core(i) = b_displ_outer_core(i) &
@@ -24,7 +36,17 @@
+ b_deltatover2*b_accel_outer_core(i)
b_accel_outer_core(i) = 0._CUSTOM_REAL
enddo
+
! inner core
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_INNER_CORE*NDIM
+ b_displ_inner_core(i,1) = b_displ_inner_core(i,1) &
+ + b_deltat*b_veloc_inner_core(i,1) + b_deltatsqover2*b_accel_inner_core(i,1)
+ b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) &
+ + b_deltatover2*b_accel_inner_core(i,1)
+ b_accel_inner_core(i,1) = 0._CUSTOM_REAL
+ enddo
+ else
do i=1,NGLOB_INNER_CORE
b_displ_inner_core(:,i) = b_displ_inner_core(:,i) &
+ b_deltat*b_veloc_inner_core(:,i) + b_deltatsqover2*b_accel_inner_core(:,i)
@@ -32,6 +54,8 @@
+ b_deltatover2*b_accel_inner_core(:,i)
b_accel_inner_core(:,i) = 0._CUSTOM_REAL
enddo
+ endif
+
endif ! SIMULATION_TYPE == 3
! compute the maximum of the norm of the displacement
@@ -450,7 +474,6 @@
! Stacey
if(NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS) then
if(SIMULATION_TYPE == 3) then
-
call compute_stacey_crust_mantle_backward(ichunk, &
NSTEP,it,ibool_crust_mantle, &
b_accel_crust_mantle, &
@@ -804,10 +827,18 @@
! Newmark time scheme - corrector for elastic parts
if (SIMULATION_TYPE == 3) then
+
! mantle
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_CRUST_MANTLE*NDIM
+ b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) + b_deltatover2*b_accel_crust_mantle(i,1)
+ enddo
+ else
do i=1,NGLOB_CRUST_MANTLE
b_veloc_crust_mantle(:,i) = b_veloc_crust_mantle(:,i) + b_deltatover2*b_accel_crust_mantle(:,i)
enddo
+ endif
+
! inner core
do i=1,NGLOB_INNER_CORE
b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*rmass_inner_core(i) &
@@ -815,8 +846,18 @@
b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*rmass_inner_core(i) &
- b_two_omega_earth*b_veloc_inner_core(1,i)
b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*rmass_inner_core(i)
+ enddo
+
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_INNER_CORE*NDIM
+ b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) + b_deltatover2*b_accel_inner_core(i,1)
+ enddo
+ else
+ do i=1,NGLOB_INNER_CORE
b_veloc_inner_core(:,i) = b_veloc_inner_core(:,i) + b_deltatover2*b_accel_inner_core(:,i)
enddo
+ endif
+
endif ! SIMULATION_TYPE == 3
! restores last time snapshot saved for backward/reconstruction of wavefields
@@ -870,4 +911,3 @@
seismo_current = 0
endif
-
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-15 23:16:09 UTC (rev 22620)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part2_undo_att.f90 2013-07-16 00:06:11 UTC (rev 22621)
@@ -8,7 +8,17 @@
! backward field
if (SIMULATION_TYPE == 3) then
+
! mantle
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_CRUST_MANTLE*NDIM
+ b_displ_crust_mantle(i,1) = b_displ_crust_mantle(i,1) &
+ + b_deltat*b_veloc_crust_mantle(i,1) + b_deltatsqover2*b_accel_crust_mantle(i,1)
+ b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) &
+ + b_deltatover2*b_accel_crust_mantle(i,1)
+ b_accel_crust_mantle(i,1) = 0._CUSTOM_REAL
+ enddo
+ else
do i=1,NGLOB_CRUST_MANTLE
b_displ_crust_mantle(:,i) = b_displ_crust_mantle(:,i) &
+ b_deltat*b_veloc_crust_mantle(:,i) + b_deltatsqover2*b_accel_crust_mantle(:,i)
@@ -16,6 +26,8 @@
+ b_deltatover2*b_accel_crust_mantle(:,i)
b_accel_crust_mantle(:,i) = 0._CUSTOM_REAL
enddo
+ endif
+
! outer core
do i=1,NGLOB_OUTER_CORE
b_displ_outer_core(i) = b_displ_outer_core(i) &
@@ -24,7 +36,17 @@
+ b_deltatover2*b_accel_outer_core(i)
b_accel_outer_core(i) = 0._CUSTOM_REAL
enddo
+
! inner core
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_INNER_CORE*NDIM
+ b_displ_inner_core(i,1) = b_displ_inner_core(i,1) &
+ + b_deltat*b_veloc_inner_core(i,1) + b_deltatsqover2*b_accel_inner_core(i,1)
+ b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) &
+ + b_deltatover2*b_accel_inner_core(i,1)
+ b_accel_inner_core(i,1) = 0._CUSTOM_REAL
+ enddo
+ else
do i=1,NGLOB_INNER_CORE
b_displ_inner_core(:,i) = b_displ_inner_core(:,i) &
+ b_deltat*b_veloc_inner_core(:,i) + b_deltatsqover2*b_accel_inner_core(:,i)
@@ -32,6 +54,8 @@
+ b_deltatover2*b_accel_inner_core(:,i)
b_accel_inner_core(:,i) = 0._CUSTOM_REAL
enddo
+ endif
+
endif ! SIMULATION_TYPE == 3
! compute the maximum of the norm of the displacement
@@ -826,7 +850,7 @@
! ------------------- non blocking implementation -------------------
- if((NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS) .and. .not. USE_LDDRK) then
+ if(NCHUNKS_VAL /= 6 .and. ABSORBING_CONDITIONS .and. .not. USE_LDDRK) then
if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION)then
do i=1,NGLOB_CRUST_MANTLE
b_accel_crust_mantle(1,i) = b_accel_crust_mantle(1,i)*b_rmassx_crust_mantle(i) &
@@ -889,27 +913,47 @@
! Newmark time scheme - corrector for elastic parts
if (SIMULATION_TYPE == 3) then
+
! mantle
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_CRUST_MANTLE*NDIM
+ b_veloc_crust_mantle(i,1) = b_veloc_crust_mantle(i,1) + b_deltatover2*b_accel_crust_mantle(i,1)
+ enddo
+ else
do i=1,NGLOB_CRUST_MANTLE
b_veloc_crust_mantle(:,i) = b_veloc_crust_mantle(:,i) + b_deltatover2*b_accel_crust_mantle(:,i)
enddo
+ endif
+
! inner core
- do i=1,NGLOB_INNER_CORE
- if((ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION) .and. .not. USE_LDDRK) then
+ if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. .not. USE_LDDRK) then
+ do i=1,NGLOB_INNER_CORE
b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*b_rmassx_inner_core(i) &
+ b_two_omega_earth*b_veloc_inner_core(2,i)
b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*b_rmassy_inner_core(i) &
- b_two_omega_earth*b_veloc_inner_core(1,i)
b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*b_rmass_inner_core(i)
- else
+ enddo
+ else
+ do i=1,NGLOB_INNER_CORE
b_accel_inner_core(1,i) = b_accel_inner_core(1,i)*b_rmass_inner_core(i) &
+ b_two_omega_earth*b_veloc_inner_core(2,i)
b_accel_inner_core(2,i) = b_accel_inner_core(2,i)*b_rmass_inner_core(i) &
- b_two_omega_earth*b_veloc_inner_core(1,i)
b_accel_inner_core(3,i) = b_accel_inner_core(3,i)*b_rmass_inner_core(i)
- endif
+ enddo
+ endif
+
+ if(FORCE_VECTORIZATION_VAL) then
+ do i=1,NGLOB_INNER_CORE*NDIM
+ b_veloc_inner_core(i,1) = b_veloc_inner_core(i,1) + b_deltatover2*b_accel_inner_core(i,1)
+ enddo
+ else
+ do i=1,NGLOB_INNER_CORE
b_veloc_inner_core(:,i) = b_veloc_inner_core(:,i) + b_deltatover2*b_accel_inner_core(:,i)
enddo
+ endif
+
endif ! SIMULATION_TYPE == 3
! restores last time snapshot saved for backward/reconstruction of wavefields
@@ -938,7 +982,6 @@
ispec_selected_rec,number_receiver_global, &
seismo_current,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
seismograms)
-
endif
endif ! nrec_local
@@ -984,4 +1027,3 @@
seismo_current = 0
endif
-
More information about the CIG-COMMITS
mailing list