[cig-commits] r21218 - seismo/1D/SPECFEM1D/trunk
xie.zhinan at geodynamics.org
xie.zhinan at geodynamics.org
Wed Jan 9 05:58:29 PST 2013
Author: xie.zhinan
Date: 2013-01-09 05:58:29 -0800 (Wed, 09 Jan 2013)
New Revision: 21218
Modified:
seismo/1D/SPECFEM1D/trunk/wave.f90
Log:
add support of calculating the assembled global stiffness matrix
Modified: seismo/1D/SPECFEM1D/trunk/wave.f90
===================================================================
--- seismo/1D/SPECFEM1D/trunk/wave.f90 2013-01-08 20:38:38 UTC (rev 21217)
+++ seismo/1D/SPECFEM1D/trunk/wave.f90 2013-01-09 13:58:29 UTC (rev 21218)
@@ -115,8 +115,15 @@
character(len=50) moviefile
! added C*v damping, off by default
- double precision, parameter :: C = 0 !! 15000
+ double precision, parameter :: C = 0 !!15000
+!! formulation of stiffness matrix
+
+ logical :: assemble_global_stiffness_matrix = .false.
+ integer :: i_interior,iglob_row,iglob_rol
+ double precision :: jocobianl, xixl, B_matrix_left, B_matrix_right, element_stiffness_matrix_block
+ double precision, dimension(NGLOB,NGLOB) :: global_stiffness_matrx
+
!++++++++++++++++++++++++++++++++++++++++++++++++++
call define_derivative_matrix(xigll,wgll,hprime)
@@ -206,6 +213,33 @@
close(12)
endif
+!! calculate the assembled global stiffness matrix
+ if(assemble_global_stiffness_matrix)then
+
+ global_stiffness_matrx = 0.
+
+ do ispec = 1,NSPEC
+ do i = 1,NGLL
+ iglob_row = ibool(i,ispec)
+ do j = 1,NGLL
+ iglob_rol = ibool(j,ispec)
+ element_stiffness_matrix_block = 0.d0
+ do i_interior = 1,NGLL
+ jocobianl = jacobian(i_interior,ispec)
+ xixl = dxi_dx(i_interior,ispec)
+ B_matrix_left = hprime(i_interior,i) * xixl
+ B_matrix_right = hprime(i_interior,j) * xixl
+ element_stiffness_matrix_block = element_stiffness_matrix_block + &
+ B_matrix_left * mu(i_interior,ispec) * B_matrix_right * wgll(i_interior) * jocobianl
+ enddo
+ global_stiffness_matrx(iglob_row,iglob_rol) = global_stiffness_matrx(iglob_row,iglob_rol) + &
+ element_stiffness_matrix_block
+ enddo
+ enddo
+ enddo
+
+ endif
+
! main time loop
do it = 1,NSTEP
@@ -281,7 +315,7 @@
if(RUN_BACKWARDS) then
write(moviefile,"('snapshot_backward',i5.5)") it
else
- write(moviefile,"('snapshot_forward',i5.5)") it
+ write(moviefile,"('snapshot_forward_normal',i5.5)") it
endif
open(unit=10,file=moviefile,status='unknown')
do iglob = 1,NGLOB
More information about the CIG-COMMITS
mailing list