[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