[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