[cig-commits] r19924 - seismo/2D/SPECFEM2D/trunk/src/specfem2D

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Wed Apr 4 17:39:11 PDT 2012


Author: dkomati1
Date: 2012-04-04 17:39:10 -0700 (Wed, 04 Apr 2012)
New Revision: 19924

Modified:
   seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90
   seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
fixed the MPI problem in the assembly of the new Stacey mass matrix


Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90	2012-04-04 23:38:10 UTC (rev 19923)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90	2012-04-05 00:39:10 UTC (rev 19924)
@@ -93,7 +93,9 @@
   integer  :: ipoin, num_interface
   integer  :: ier
   integer  :: i
-  double precision, dimension(max_ibool_interfaces_size_ac+max_ibool_interfaces_size_el+&
+! there are now two different mass matrices for the elastic case
+! in order to handle the C deltat / 2 contribution of the Stacey conditions to the mass matrix
+  double precision, dimension(max_ibool_interfaces_size_ac+2*max_ibool_interfaces_size_el+&
        2*max_ibool_interfaces_size_po, ninterface)  :: &
        buffer_send_faces_scalar, &
        buffer_recv_faces_scalar
@@ -120,6 +122,8 @@
 
      do i = 1, nibool_interfaces_elastic(num_interface)
         ipoin = ipoin + 1
+! there are now two different mass matrices for the elastic case
+! in order to handle the C deltat / 2 contribution of the Stacey conditions to the mass matrix
         buffer_send_faces_scalar(ipoin,num_interface) = &
              array_val5(ibool_interfaces_elastic(i,num_interface))
      end do
@@ -135,10 +139,12 @@
              array_val4(ibool_interfaces_poroelastic(i,num_interface))
      end do
 
-     ! non-blocking synchronous send request
+     ! non-blocking send
      call MPI_ISEND( buffer_send_faces_scalar(1,num_interface), &
-          nibool_interfaces_acoustic(num_interface)+nibool_interfaces_elastic(num_interface)+&
-          nibool_interfaces_poroelastic(num_interface)+nibool_interfaces_poroelastic(num_interface), &
+! there are now two different mass matrices for the elastic case
+! in order to handle the C deltat / 2 contribution of the Stacey conditions to the mass matrix
+          nibool_interfaces_acoustic(num_interface)+2*nibool_interfaces_elastic(num_interface)+&
+          2*nibool_interfaces_poroelastic(num_interface), &
           MPI_DOUBLE_PRECISION, &
           my_neighbours(num_interface), 11, &
           MPI_COMM_WORLD, msg_requests(num_interface), ier)
@@ -148,9 +154,11 @@
   do num_interface = 1, ninterface
 
      ! starts a blocking receive
-     call MPI_recv ( buffer_recv_faces_scalar(1,num_interface), &
-          nibool_interfaces_acoustic(num_interface)+nibool_interfaces_elastic(num_interface)+&
-          nibool_interfaces_poroelastic(num_interface)+nibool_interfaces_poroelastic(num_interface), &
+     call MPI_RECV ( buffer_recv_faces_scalar(1,num_interface), &
+! there are now two different mass matrices for the elastic case
+! in order to handle the C deltat / 2 contribution of the Stacey conditions to the mass matrix
+          nibool_interfaces_acoustic(num_interface)+2*nibool_interfaces_elastic(num_interface)+&
+          2*nibool_interfaces_poroelastic(num_interface), &
           MPI_DOUBLE_PRECISION, &
           my_neighbours(num_interface), 11, &
           MPI_COMM_WORLD, msg_status(1), ier)
@@ -172,6 +180,8 @@
 
      do i = 1, nibool_interfaces_elastic(num_interface)
         ipoin = ipoin + 1
+! there are now two different mass matrices for the elastic case
+! in order to handle the C deltat / 2 contribution of the Stacey conditions to the mass matrix
         array_val5(ibool_interfaces_elastic(i,num_interface)) = &
             array_val5(ibool_interfaces_elastic(i,num_interface))  &
             + buffer_recv_faces_scalar(ipoin,num_interface)
@@ -271,7 +281,7 @@
     ! gets global interface index
     num_interface = inum_interfaces_acoustic(iinterface)
 
-    ! non-blocking synchronous send
+    ! non-blocking send
     call MPI_ISEND( buffer_send_faces_vector_ac(1,iinterface), &
              nibool_interfaces_acoustic(num_interface), CUSTOM_MPI_TYPE, &
              my_neighbours(num_interface), 12, MPI_COMM_WORLD, &

Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90	2012-04-04 23:38:10 UTC (rev 19923)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90	2012-04-05 00:39:10 UTC (rev 19924)
@@ -1618,13 +1618,6 @@
     enddo
   enddo
 
-  xmin_spring = minval(coord(1,:))
-  xmax_spring = maxval(coord(1,:))
-  zmin_spring = minval(coord(2,:))
-  zmax_spring = maxval(coord(2,:))
-
-  x_center_spring=(xmax_spring+xmin_spring)/2.d0
-  z_center_spring=(zmax_spring+zmin_spring)/2.d0
 !
 !---- generate the global numbering
 !
@@ -1958,40 +1951,14 @@
 
   endif
 
-!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! yang  output weights for line, surface integrals !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!$$  ! NSPEC
-!$$ if(myrank==0) then
-!$$  open(unit=55,file='OUTPUT_FILES/x_z_weightLineX_weightLineZ_weightSurface_NSPEC',status='unknown')
-!$$  weight_line_x=0.0
-!$$  weight_line_z=0.0
-!$$  weight_surface=0.0
-!$$  zmin_yang=minval(coord(2,:))
-!$$  xmin_yang=minval(coord(1,:))
-!$$  zmax_yang=maxval(coord(2,:))
-!$$  xmax_yang=maxval(coord(1,:))
-!$$  do ispec = 1,nspec
-!$$    do j = 1,NGLLZ
-!$$      do i = 1,NGLLX
-!$$            iglob=ibool(i,j,ispec)
-!$$            x=coord(1,ibool(i,j,ispec))
-!$$            z=coord(2,ibool(i,j,ispec))
-!$$            xxi = + gammaz(i,j,ispec) * jacobian(i,j,ispec)
-!$$            zgamma = + xix(i,j,ispec) * jacobian(i,j,ispec)
-!$$            !if ((j==1 .OR. j==NGLLZ) .AND. ( (abs(z-zmin_yang).GE.1) .AND. (abs(z-zmax_yang)).GE.1) )    xxi=xxi/2.0
-!$$            !if ((i==1 .OR. i==NGLLZ) .AND. ( (abs(x-xmin_yang).GE.1) .AND. (abs(x-xmax_yang)).GE.1) )    zgamma=zgamma/2.0
-!$$            !weight_line_x(iglob) =  weight_line_x(iglob) + xxi * wxgll(i)
-!$$            !weight_line_z(iglob) =  weight_line_z(iglob) + zgamma * wzgll(j)
-!$$            !weight_surface(iglob) = weight_surface(iglob) + wxgll(i)*wzgll(j)*jacobian(i,j,ispec)
-!$$            !weight_jacobian(iglob) = jacobian(i,j,ispec)
-!$$            !weight_gll(iglob) = 10*j+i
-!$$            !write(55,*) xxi * wxgll(i), zgamma * wzgll(j), wxgll(i)*wzgll(j)*jacobian(i,j,ispec)
-!$$            write(55,*) xxi * wxgll(i), zgamma * wzgll(j), wxgll(i)*wzgll(j)*jacobian(i,j,ispec)
-!$$      enddo
-!$$    enddo
-!$$  enddo
-!$$  close(55)
-!$$ endif
-!$$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  xmin_spring = minval(coord(1,:))
+  xmax_spring = maxval(coord(1,:))
+  zmin_spring = minval(coord(2,:))
+  zmax_spring = maxval(coord(2,:))
+
+  x_center_spring=(xmax_spring+xmin_spring)/2.d0
+  z_center_spring=(zmax_spring+zmin_spring)/2.d0
+
 !
 !--- save the grid of points in a file
 !
@@ -2796,7 +2763,7 @@
 
 ! assembling the mass matrix
     call assemble_MPI_scalar(rmass_inverse_acoustic,nglob_acoustic, &
-                            rmass_inverse_elastic_one,nglob_elastic, &
+                            rmass_inverse_elastic_one,rmass_inverse_elastic_three,nglob_elastic, &
                             rmass_s_inverse_poroelastic,rmass_w_inverse_poroelastic,nglob_poroelastic, &
                             ninterface, max_interface_size, max_ibool_interfaces_size_ac, &
                             max_ibool_interfaces_size_el, &



More information about the CIG-COMMITS mailing list