[cig-commits] r21768 - seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D
vadim at geodynamics.org
vadim at geodynamics.org
Mon Apr 8 10:24:53 PDT 2013
Author: vadim
Date: 2013-04-08 10:24:52 -0700 (Mon, 08 Apr 2013)
New Revision: 21768
Modified:
seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_forces_viscoelastic_calling_routine.F90
seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_stacey_viscoelastic.f90
Log:
add dsm traction reading in viscoelastic case
Modified: seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_forces_viscoelastic_calling_routine.F90
===================================================================
--- seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_forces_viscoelastic_calling_routine.F90 2013-04-08 17:19:04 UTC (rev 21767)
+++ seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_forces_viscoelastic_calling_routine.F90 2013-04-08 17:24:52 UTC (rev 21768)
@@ -240,7 +240,7 @@
coupling_el_po_jacobian2Dw, &
ispec_is_inner,phase_is_inner)
endif
-
+ if (not.USE_VADIM) then
! adds source term (single-force/moment-tensor solution)
call compute_add_sources_viscoelastic( NSPEC_AB,NGLOB_AB,accel, &
ibool,ispec_is_inner,phase_is_inner, &
@@ -251,7 +251,7 @@
nadj_rec_local,adj_sourcearrays,b_accel, &
NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
GPU_MODE, Mesh_pointer )
-
+ end if
! assemble all the contributions between slices using MPI
if( phase_is_inner .eqv. .false. ) then
! sends accel values to corresponding MPI interface neighbors
Modified: seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_stacey_viscoelastic.f90
===================================================================
--- seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_stacey_viscoelastic.f90 2013-04-08 17:19:04 UTC (rev 21767)
+++ seismo/3D/SPECFEM3D/branches/coupling_vadim/src/specfem3D/compute_stacey_viscoelastic.f90 2013-04-08 17:24:52 UTC (rev 21768)
@@ -84,6 +84,21 @@
integer :: ispec,iglob,i,j,k,iface,igll
!integer:: reclen1,reclen2
+! VM VM for DSM/SEM Hybrid method
+ integer Ntime_step_dsm
+ real(kind=CUSTOM_REAL) :: Veloc_dsm_boundary(3,Ntime_step_dsm,NGLLSQUARE,num_abs_boundary_faces)
+ real(kind=CUSTOM_REAL) :: Tract_dsm_boundary(3,Ntime_step_dsm,NGLLSQUARE,num_abs_boundary_faces)
+
+ if (USE_VADIM) then
+ if ( phase_is_inner .eqv. .false. ) then
+ if (mod(it_dsm,Ntime_step_dsm+1)==0.or.it==1) then
+ call read_dsm_file(Veloc_dsm_boundary,Tract_dsm_boundary,&
+ Ntime_step_dsm,num_abs_boundary_faces,&
+ IIN_veloc_dsm,IIN_tract_dsm,it_dsm)
+ end if
+ end if
+ end if
+
! checks if anything to do
if( num_abs_boundary_faces == 0 ) return
@@ -126,7 +141,11 @@
vx=veloc(1,iglob)
vy=veloc(2,iglob)
vz=veloc(3,iglob)
-
+ if (USE_VADIM) then
+ vx = vx - Veloc_dsm_boundary(1,it_dsm,igll,iface)
+ vy = vy - Veloc_dsm_boundary(2,it_dsm,igll,iface)
+ vz = vz - Veloc_dsm_boundary(3,it_dsm,igll,iface)
+ end if
! gets associated normal
nx = abs_boundary_normal(1,igll,iface)
ny = abs_boundary_normal(2,igll,iface)
@@ -140,6 +159,12 @@
ty = rho_vp(i,j,k,ispec)*vn*ny + rho_vs(i,j,k,ispec)*(vy-vn*ny)
tz = rho_vp(i,j,k,ispec)*vn*nz + rho_vs(i,j,k,ispec)*(vz-vn*nz)
+ if (USE_VADIM) then
+ tx = -Tract_dsm_boundary(1,it_dsm,igll,iface) + tx
+ ty = -Tract_dsm_boundary(2,it_dsm,igll,iface) + ty
+ tz = -Tract_dsm_boundary(3,it_dsm,igll,iface) + tz
+ end if
+
! gets associated, weighted jacobian
jacobianw = abs_boundary_jacobian2Dw(igll,iface)
@@ -182,3 +207,35 @@
end subroutine compute_stacey_viscoelastic
+
+ subroutine read_dsm_file(Veloc_dsm_boundary,Tract_dsm_boundary,&
+ Ntime_step_dsm,num_abs_boundary_faces,&
+ IIN_veloc_dsm,IIN_tract_dsm,it_dsm)
+
+
+ implicit none
+ include "constants.h"
+ integer Ntime_step_dsm,igll,it_dsm
+ integer iface,num_abs_boundary_faces,i,j,IIN_veloc_dsm,IIN_tract_dsm
+ real(kind=CUSTOM_REAL) :: Veloc_dsm_boundary(3,Ntime_step_dsm,NGLLSQUARE,num_abs_boundary_faces)
+ real(kind=CUSTOM_REAL) :: Tract_dsm_boundary(3,Ntime_step_dsm,NGLLSQUARE,num_abs_boundary_faces)
+ real(kind=CUSTOM_REAL) :: dsm_boundary_tmp(3,100,5,5) !!! warning code en dur
+
+ it_dsm = 1
+ write(*,*) 'read dsm files',it_dsm
+ do iface=1,num_abs_boundary_faces
+
+ igll = 0
+ do j=1,5
+ do i=1,5
+ igll = igll + 1
+ read(IIN_veloc_dsm) dsm_boundary_tmp(:,:,i,j)
+ Veloc_dsm_boundary(:,:,igll,iface) = dsm_boundary_tmp(:,:,i,j)
+ read(IIN_tract_dsm) dsm_boundary_tmp(:,:,i,j)
+ Tract_dsm_boundary(:,:,igll,iface) = dsm_boundary_tmp(:,:,i,j)
+ end do
+ end do
+ end do
+
+
+ end subroutine read_dsm_file
More information about the CIG-COMMITS
mailing list