[cig-commits] r19802 - seismo/2D/SPECFEM2D/trunk/src/specfem2D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Sun Mar 18 12:59:35 PDT 2012
Author: dkomati1
Date: 2012-03-18 12:59:34 -0700 (Sun, 18 Mar 2012)
New Revision: 19802
Modified:
seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
fixed more bugs in the detection of pixel locations for color images: edge effects could occur, leading to index values outside of array ranges
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90 2012-03-18 19:54:02 UTC (rev 19801)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90 2012-03-18 19:59:34 UTC (rev 19802)
@@ -392,7 +392,7 @@
if(j < 1) j = 1
if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
- image_color_vp_display(i,j) = vp_display(iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) image_color_vp_display(i,j) = vp_display(iglob_image_color(i,j))
enddo
! assembling array image_color_vp_display on process zero for color output
@@ -447,7 +447,7 @@
if(j < 1) j = 1
if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
- data_pixel_send(k) = vp_display(iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) data_pixel_send(k) = vp_display(iglob_image_color(i,j))
enddo
call MPI_SEND(num_pixel_loc(1),nb_pixel_loc,MPI_INTEGER, &
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2012-03-18 19:54:02 UTC (rev 19801)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2012-03-18 19:59:34 UTC (rev 19802)
@@ -2710,8 +2710,6 @@
density,poroelastcoef,porosity,tortuosity, &
vpext,rhoext)
-
-
#ifdef USE_MPI
if ( nproc > 1 ) then
@@ -3034,8 +3032,15 @@
do k = 1, nb_pixel_per_proc(iproc+1)
j = ceiling(real(num_pixel_recv(k,iproc+1)) / real(NX_IMAGE_color))
i = num_pixel_recv(k,iproc+1) - (j-1)*NX_IMAGE_color
+
+ ! avoid edge effects
+ if(i < 1) i = 1
+ if(j < 1) j = 1
+
+ if(i > NX_IMAGE_color) i = NX_IMAGE_color
+ if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
+
iglob_image_color(i,j) = iproc
-
enddo
enddo
@@ -7860,12 +7865,20 @@
do k = 1, nb_pixel_loc
j = ceiling(real(num_pixel_loc(k)) / real(NX_IMAGE_color))
i = num_pixel_loc(k) - (j-1)*NX_IMAGE_color
+
+ ! avoid edge effects
+ if(i < 1) i = 1
+ if(j < 1) j = 1
+
+ if(i > NX_IMAGE_color) i = NX_IMAGE_color
+ if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
+
if(p_sv) then
!P-SH waves, plot vertical component or pressure
- image_color_data(i,j) = vector_field_display(3,iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) image_color_data(i,j) = vector_field_display(3,iglob_image_color(i,j))
else
!SH (membrane) waves, plot y-component
- image_color_data(i,j) = vector_field_display(2,iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) image_color_data(i,j) = vector_field_display(2,iglob_image_color(i,j))
endif
enddo
@@ -7880,6 +7893,14 @@
do k = 1, nb_pixel_per_proc(iproc+1)
j = ceiling(real(num_pixel_recv(k,iproc+1)) / real(NX_IMAGE_color))
i = num_pixel_recv(k,iproc+1) - (j-1)*NX_IMAGE_color
+
+ ! avoid edge effects
+ if(i < 1) i = 1
+ if(j < 1) j = 1
+
+ if(i > NX_IMAGE_color) i = NX_IMAGE_color
+ if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
+
image_color_data(i,j) = data_pixel_recv(k)
enddo
enddo
@@ -7887,10 +7908,18 @@
do k = 1, nb_pixel_loc
j = ceiling(real(num_pixel_loc(k)) / real(NX_IMAGE_color))
i = num_pixel_loc(k) - (j-1)*NX_IMAGE_color
+
+ ! avoid edge effects
+ if(i < 1) i = 1
+ if(j < 1) j = 1
+
+ if(i > NX_IMAGE_color) i = NX_IMAGE_color
+ if(j > NZ_IMAGE_color) j = NZ_IMAGE_color
+
if(p_sv) then !P-SH waves, plot vertical component or pressure
- data_pixel_send(k) = vector_field_display(3,iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) data_pixel_send(k) = vector_field_display(3,iglob_image_color(i,j))
else !SH (membrane) waves, plot y-component
- data_pixel_send(k) = vector_field_display(2,iglob_image_color(i,j))
+ if(iglob_image_color(i,j) /= -1) data_pixel_send(k) = vector_field_display(2,iglob_image_color(i,j))
endif
enddo
More information about the CIG-COMMITS
mailing list