[cig-commits] r21908 - seismo/3D/SPECFEM3D/trunk/src/specfem3D
xie.zhinan at geodynamics.org
xie.zhinan at geodynamics.org
Fri Apr 19 11:37:01 PDT 2013
Author: xie.zhinan
Date: 2013-04-19 11:37:00 -0700 (Fri, 19 Apr 2013)
New Revision: 21908
Modified:
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_calling_routine.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_noDev.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_viscoelastic_noDev.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_accel_contribution.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_memory_variables.f90
Log:
fix one error when using pml in acoustic_elastic simulation
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_calling_routine.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_calling_routine.f90 2013-04-19 08:02:00 UTC (rev 21907)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_calling_routine.f90 2013-04-19 18:37:00 UTC (rev 21908)
@@ -115,7 +115,8 @@
wgllwgll_xy,wgllwgll_xz,wgllwgll_yz, &
rhostore,jacobian,ibool,deltat, &
num_phase_ispec_acoustic,nspec_inner_acoustic,nspec_outer_acoustic,&
- phase_ispec_inner_acoustic)
+ phase_ispec_inner_acoustic,&
+ abs_boundary_ijk,num_abs_boundary_faces,phase_is_inner,ispec_is_inner,abs_boundary_ispec)
endif
! adjoint simulations
@@ -139,7 +140,8 @@
wgllwgll_xy,wgllwgll_xz,wgllwgll_yz, &
rhostore,jacobian,ibool,deltat, &
num_phase_ispec_acoustic,nspec_inner_acoustic,nspec_outer_acoustic,&
- phase_ispec_inner_acoustic)
+ phase_ispec_inner_acoustic,&
+ abs_boundary_ijk,num_abs_boundary_faces,phase_is_inner,ispec_is_inner,abs_boundary_ispec)
endif
endif
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_noDev.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_noDev.f90 2013-04-19 08:02:00 UTC (rev 21907)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_noDev.f90 2013-04-19 18:37:00 UTC (rev 21908)
@@ -34,14 +34,16 @@
wgllwgll_xy,wgllwgll_xz,wgllwgll_yz, &
rhostore,jacobian,ibool,deltat, &
num_phase_ispec_acoustic,nspec_inner_acoustic,nspec_outer_acoustic,&
- phase_ispec_inner_acoustic)
+ phase_ispec_inner_acoustic,&
+ abs_boundary_ijk,num_abs_boundary_faces,phase_is_inner,ispec_is_inner,abs_boundary_ispec)
! computes forces for acoustic elements
!
! note that pressure is defined as:
! p = - Chi_dot_dot
!
- use specfem_par,only: CUSTOM_REAL,NGLLX,NGLLY,NGLLZ,TINYVAL_SNGL,STACEY_ABSORBING_CONDITIONS,PML_CONDITIONS
+ use specfem_par,only: CUSTOM_REAL,NGLLX,NGLLY,NGLLZ,TINYVAL_SNGL,STACEY_ABSORBING_CONDITIONS,PML_CONDITIONS,NGLLSQUARE
+ use specfem_par_acoustic, only : ispec_is_acoustic
use pml_par
implicit none
@@ -76,9 +78,6 @@
integer, dimension(num_phase_ispec_acoustic,2) :: phase_ispec_inner_acoustic
! local variables
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: &
- tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3
-
real(kind=CUSTOM_REAL) :: hp1,hp2,hp3
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: chi_elem
@@ -96,6 +95,16 @@
! local C-PML absorbing boundary conditions parameters
integer :: ispec_CPML
+! communication overlap
+ logical, dimension(NSPEC_AB) :: ispec_is_inner
+ logical :: phase_is_inner
+
+! outer boundary of CPML
+ integer :: num_abs_boundary_faces
+ integer :: abs_boundary_ijk(3,NGLLSQUARE,num_abs_boundary_faces)
+ integer :: abs_boundary_ispec(num_abs_boundary_faces)
+ integer :: igll,iface
+
if( iphase == 1 ) then
num_elements = nspec_outer_acoustic
else
@@ -219,8 +228,8 @@
! because array is_CPML() is unallocated when PML_CONDITIONS is false
if(is_CPML(ispec)) then
! sets C-PML elastic memory variables to compute stress sigma and form dot product with test vector
- call pml_compute_memory_variables(ispec,ispec_CPML,deltat,tempx1,tempy1,tempz1,tempx2,tempy2,tempz2, &
- tempx3,tempy3,tempz3,temp1,temp2,temp3,NSPEC_AB,xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,jacobian)
+ call pml_compute_memory_variables_acoustic(ispec,ispec_CPML,deltat,temp1,temp2,temp3, &
+ NSPEC_AB,xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,jacobian)
! calculates contribution from each C-PML element to update acceleration
call pml_compute_accel_contribution_acoustic(ispec,ispec_CPML,deltat,nspec_AB,jacobian)
@@ -271,6 +280,31 @@
! Thus, there is nothing to enforce explicitly here.
! There is something to enforce explicitly only in the case of elastic elements, for which a Dirichlet
! condition is needed for the displacement vector, which is the vectorial unknown for these elements.
+ ! C-PML boundary
+ if(PML_CONDITIONS)then
+ do iface=1,num_abs_boundary_faces
+ ispec = abs_boundary_ispec(iface)
+ if (ispec_is_inner(ispec) .eqv. phase_is_inner) then
+ if( ispec_is_acoustic(ispec) ) then
+ ! reference gll points on boundary face
+ do igll = 1,NGLLSQUARE
+ ! gets local indices for GLL point
+ i = abs_boundary_ijk(1,igll,iface)
+ j = abs_boundary_ijk(2,igll,iface)
+ k = abs_boundary_ijk(3,igll,iface)
+
+ iglob=ibool(i,j,k,ispec)
+
+ potential_dot_dot_acoustic(iglob) = 0.0
+ potential_dot_acoustic(iglob) = 0.0
+ potential_acoustic(iglob) = 0.0
+
+ enddo
+ endif ! ispec_is_acoustic
+ endif
+ enddo
+ endif
+
end subroutine compute_forces_acoustic_noDev
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_viscoelastic_noDev.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_viscoelastic_noDev.f90 2013-04-19 08:02:00 UTC (rev 21907)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_viscoelastic_noDev.f90 2013-04-19 18:37:00 UTC (rev 21908)
@@ -167,7 +167,6 @@
newtempx1,newtempx2,newtempx3,newtempy1,newtempy2,newtempy3,newtempz1,newtempz2,newtempz3
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: &
tempx1,tempx2,tempx3,tempy1,tempy2,tempy3,tempz1,tempz2,tempz3
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: temp1,temp2,temp3 !ZN
real(kind=CUSTOM_REAL) duxdxl_att,duxdyl_att,duxdzl_att,duydxl_att
real(kind=CUSTOM_REAL) duydyl_att,duydzl_att,duzdxl_att,duzdyl_att,duzdzl_att
@@ -733,8 +732,8 @@
! because array is_CPML() is unallocated when PML_CONDITIONS is false
if(is_CPML(ispec)) then
! sets C-PML elastic memory variables to compute stress sigma and form dot product with test vector
- call pml_compute_memory_variables(ispec,ispec_CPML,deltat,tempx1,tempy1,tempz1,tempx2,tempy2,tempz2, &
- tempx3,tempy3,tempz3,temp1,temp2,temp3,NSPEC_AB,xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,jacobian)
+ call pml_compute_memory_variables_elastic(ispec,ispec_CPML,deltat,tempx1,tempy1,tempz1,tempx2,tempy2,tempz2, &
+ tempx3,tempy3,tempz3,NSPEC_AB,xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,jacobian)
! calculates contribution from each C-PML element to update acceleration
call pml_compute_accel_contribution_elastic(ispec,ispec_CPML,deltat,nspec_AB,jacobian)
@@ -881,13 +880,9 @@
! C-PML boundary
if(PML_CONDITIONS)then
do iface=1,num_abs_boundary_faces
-
ispec = abs_boundary_ispec(iface)
-
if (ispec_is_inner(ispec) .eqv. phase_is_inner) then
-
if( ispec_is_elastic(ispec) ) then
-
! reference gll points on boundary face
do igll = 1,NGLLSQUARE
@@ -904,7 +899,7 @@
enddo
endif ! ispec_is_elastic
- endif ! ispec_is_inner
+ endif
enddo
endif
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_accel_contribution.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_accel_contribution.f90 2013-04-19 08:02:00 UTC (rev 21907)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_accel_contribution.f90 2013-04-19 18:37:00 UTC (rev 21908)
@@ -61,11 +61,8 @@
do k=1,NGLLZ
do j=1,NGLLY
do i=1,NGLLX
- if( ispec_is_elastic(ispec) ) then
- rhol = rhostore(i,j,k,ispec)
- jacobianl = jacobian(i,j,k,ispec)
- endif
-
+ rhol = rhostore(i,j,k,ispec)
+ jacobianl = jacobian(i,j,k,ispec)
iglob = ibool(i,j,k,ispec)
if( CPML_regions(ispec_CPML) == CPML_X_ONLY ) then
@@ -85,25 +82,21 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_x(i,j,k,ispec_CPML)
A1 = d_store_x(i,j,k,ispec_CPML)
@@ -117,31 +110,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_Y_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- Y-surface C-PML ---------------------------------
@@ -159,25 +148,21 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_y(i,j,k,ispec_CPML)
A1 = d_store_y(i,j,k,ispec_CPML)
@@ -191,31 +176,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_Z_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- Z-surface C-PML ---------------------------------
@@ -233,25 +214,21 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_z(i,j,k,ispec_CPML)
A1 = d_store_z(i,j,k,ispec_CPML)
@@ -265,31 +242,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XY_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- XY-edge C-PML -----------------------------------
@@ -311,31 +284,27 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(1,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(1,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(2,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(2,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(3,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(3,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = 0.0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)
A1 = d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
@@ -343,12 +312,10 @@
A2 = d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) &
- alpha_store(i,j,k,ispec_CPML) * d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
- alpha_store(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML)
- if( ispec_is_elastic(ispec) ) then
- A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) &
- + alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
- + d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
- * (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
- endif
+ A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) &
+ + alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
+ + d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
+ * (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
A4 = -alpha_store(i,j,k,ispec_CPML)**2 * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
A5 = 0.0
@@ -357,31 +324,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XZ_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- XZ-edge C-PML -----------------------------------
@@ -403,31 +366,27 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(1,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3)= 0.0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(1,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3)= 0.0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(2,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3)= 0.0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(2,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3)= 0.0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(3,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3)= 0.0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(3,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3)= 0.0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
A1 = d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)&
@@ -449,31 +408,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_YZ_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- YZ-edge C-PML -----------------------------------
@@ -495,31 +450,27 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(1,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3)=0.d0
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(1,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3)=0.d0
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(2,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3)=0.d0
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(2,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3)=0.d0
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(3,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3)=0.d0
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(3,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3)=0.d0
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
A1 = d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
@@ -527,12 +478,10 @@
A2 = d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) &
- alpha_store(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
- alpha_store(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
- if( ispec_is_elastic(ispec) ) then
- A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) &
- + alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
- + d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
- * (it+0.0) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
- endif
+ A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) &
+ + alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ + d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
+ * (it+0.0) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A4 = -alpha_store(i,j,k,ispec_CPML)**2 * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A5 = 0.0
@@ -541,31 +490,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XYZ ) then
!------------------------------------------------------------------------------
!---------------------------- XYZ-corner C-PML --------------------------------
@@ -591,37 +536,33 @@
coef1_3 = coef1_1
coef2_3 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(1,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ + (displ(1,iglob) + deltat * veloc(1,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
+ + displ(1,iglob) * ((it-0.0) * deltat)**2 * coef2_3
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * coef1_1 + displ(1,iglob) * coef2_1
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(1,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- + (displ(1,iglob) + deltat * veloc(1,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
- + displ(1,iglob) * ((it-0.0) * deltat)**2 * coef2_3
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(2,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ + (displ(2,iglob) + deltat * veloc(2,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
+ + displ(2,iglob) * ((it-0.0) * deltat)**2 * coef2_3
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * coef1_1 + displ(2,iglob) * coef2_1
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(2,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- + (displ(2,iglob) + deltat * veloc(2,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
- + displ(2,iglob) * ((it-0.0) * deltat)**2 * coef2_3
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
+ + displ(3,iglob) * (it-0.0) * deltat * coef2_2
+ rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ + (displ(3,iglob) + deltat * veloc(3,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
+ + displ(3,iglob) * ((it-0.0) * deltat)**2 * coef2_3
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) = coef0_1 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * coef1_1 + displ(3,iglob) * coef2_1
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) = coef0_2 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * (it+0.0) * deltat * coef1_2 &
- + displ(3,iglob) * (it-0.0) * deltat * coef2_2
- rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) = coef0_3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- + (displ(3,iglob) + deltat * veloc(3,iglob)) * ((it+0.0) * deltat)**2 * coef1_3 &
- + displ(3,iglob) * ((it-0.0) * deltat)**2 * coef2_3
-
- endif
-
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
A0 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
A1 = d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) + &
@@ -656,10 +597,8 @@
! A4 = -temp_A4-2.0*(it+0.0) * deltat*temp_A5
! A5 = temp_A5
- if( ispec_is_elastic(ispec) ) then
- A3 = temp_A3 !+ (it+0.0) * deltat*temp_A4 !+ ((it+0.0) * deltat)**2*temp_A5
- A4 = 0.0 !-temp_A4 ! -2.0*(it+0.0) * deltat*temp_A5
- endif
+ A3 = temp_A3 !+ (it+0.0) * deltat*temp_A4 !+ ((it+0.0) * deltat)**2*temp_A5
+ A4 = 0.0 !-temp_A4 ! -2.0*(it+0.0) * deltat*temp_A5
A5 = 0.0 ! temp_A5
fac1 = wgllwgll_yz(j,k)
@@ -667,30 +606,27 @@
fac3 = wgllwgll_xy(i,j)
fac4 = sqrt(fac1 * fac2 * fac3)
- if( ispec_is_elastic(ispec) ) then
+ accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
+ A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(1,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(1,iglob) + A2 * displ(1,iglob) + &
- A3 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(1,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
+ A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(2,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(2,iglob) + A2 * displ(2,iglob) + &
- A3 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(2,i,j,k,ispec_CPML,3) &
- )
+ accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
+ ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
+ A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
+ A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
+ A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
+ )
- accel_elastic_CPML(3,i,j,k,ispec_CPML) = fac4 * rhol * jacobianl * &
- ( A1 * veloc(3,iglob) + A2 * displ(3,iglob) + &
- A3 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,1) + &
- A4 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,2) + &
- A5 * rmemory_displ_elastic(3,i,j,k,ispec_CPML,3) &
- )
-
- endif
endif
enddo
enddo
@@ -738,11 +674,8 @@
do k=1,NGLLZ
do j=1,NGLLY
do i=1,NGLLX
- if( ispec_is_acoustic(ispec) ) then
- kappal = kappastore(i,j,k,ispec)
- jacobianl = jacobian(i,j,k,ispec)
- endif
-
+ kappal = kappastore(i,j,k,ispec)
+ jacobianl = jacobian(i,j,k,ispec)
iglob = ibool(i,j,k,ispec)
if( CPML_regions(ispec_CPML) == CPML_X_ONLY ) then
@@ -919,8 +852,8 @@
+ (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * coef1_1 &
+ potential_acoustic(iglob) * coef2_1
rmemory_potential_acoustic(i,j,k,ispec_CPML,2)=coef0_2 * rmemory_potential_acoustic(i,j,k,ispec_CPML,2) &
- + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.5)*deltat * coef1_2 &
- + potential_acoustic(iglob) * (it-0.5)*deltat * coef2_2
+ + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.0)*deltat * coef1_2 &
+ + potential_acoustic(iglob) * (it-0.0)*deltat * coef2_2
rmemory_potential_acoustic(i,j,k,ispec_CPML,3)=0.0
endif
@@ -935,7 +868,7 @@
A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) + &
alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) &
+ d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
- * (it+0.5) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
+ * (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
endif
A4 = -alpha_store(i,j,k,ispec_CPML)**2 * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
A5 = 0.0
@@ -982,8 +915,8 @@
+ (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * coef1_1 &
+ potential_acoustic(iglob) * coef2_1
rmemory_potential_acoustic(i,j,k,ispec_CPML,2)=coef0_2 * rmemory_potential_acoustic(i,j,k,ispec_CPML,2) &
- + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.5)*deltat * coef1_2 &
- + potential_acoustic(iglob) * (it-0.5)*deltat * coef2_2
+ + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.0)*deltat * coef1_2 &
+ + potential_acoustic(iglob) * (it-0.0)*deltat * coef2_2
rmemory_potential_acoustic(i,j,k,ispec_CPML,3)= 0.0
endif
@@ -998,7 +931,7 @@
A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) &
+ alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
- * (it+0.5) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
+ * (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
endif
A4 = -alpha_store(i,j,k,ispec_CPML)**2 * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A5 = 0.0
@@ -1045,8 +978,8 @@
+ (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * coef1_1 &
+ potential_acoustic(iglob) * coef2_1
rmemory_potential_acoustic(i,j,k,ispec_CPML,2)=coef0_2 * rmemory_potential_acoustic(i,j,k,ispec_CPML,2) &
- + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.5)*deltat * coef1_2 &
- + potential_acoustic(iglob) * (it-0.5)*deltat * coef2_2
+ + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.0)*deltat * coef1_2 &
+ + potential_acoustic(iglob) * (it-0.0)*deltat * coef2_2
rmemory_potential_acoustic(i,j,k,ispec_CPML,3)=0.d0
endif
@@ -1061,7 +994,7 @@
A3 = -2.0 * alpha_store(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) &
+ alpha_store(i,j,k,ispec_CPML)**2 * ( d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) + alpha_store(i,j,k,ispec_CPML)**2 &
- * (it+0.5) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
+ * (it+0.0) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
endif
A4 = -alpha_store(i,j,k,ispec_CPML)**2 * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A5 = 0.0
@@ -1112,11 +1045,11 @@
+ (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * coef1_1 &
+ potential_acoustic(iglob) * coef2_1
rmemory_potential_acoustic(i,j,k,ispec_CPML,2)=coef0_2 * rmemory_potential_acoustic(i,j,k,ispec_CPML,2) &
- + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.5)*deltat * coef1_2 &
- + potential_acoustic(iglob) * (it-0.5)*deltat * coef2_2
+ + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * (it+0.0)*deltat * coef1_2 &
+ + potential_acoustic(iglob) * (it-0.0)*deltat * coef2_2
rmemory_potential_acoustic(i,j,k,ispec_CPML,3)=coef0_3 * rmemory_potential_acoustic(i,j,k,ispec_CPML,3) &
- + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * ((it+0.5)*deltat)**2 * coef1_3 &
- + potential_acoustic(iglob) * ((it-0.5)*deltat)**2 * coef2_3
+ + (potential_acoustic(iglob) + deltat*potential_dot_acoustic(iglob)) * ((it+0.0)*deltat)**2 * coef1_3 &
+ + potential_acoustic(iglob) * ((it-0.0)*deltat)**2 * coef2_3
endif
!---------------------- A0, A1, A2, A3, A4 and A5 --------------------------
@@ -1150,8 +1083,8 @@
temp_A5 = 0.5 * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
if( ispec_is_acoustic(ispec)) then
- A3 = temp_A3 !+ (it+0.5)*deltat*temp_A4 !+ ((it+0.5)*deltat)**2*temp_A5
- A4 = 0.0 !-temp_A4 !-2.0*(it+0.5)*deltat*temp_A5
+ A3 = temp_A3 !+ (it+0.0)*deltat*temp_A4 !+ ((it+0.0)*deltat)**2*temp_A5
+ A4 = 0.0 !-temp_A4 !-2.0*(it+0.0)*deltat*temp_A5
endif
A5 = 0.0 ! temp_A5
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_memory_variables.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_memory_variables.f90 2013-04-19 08:02:00 UTC (rev 21907)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/pml_compute_memory_variables.f90 2013-04-19 18:37:00 UTC (rev 21908)
@@ -26,8 +26,8 @@
!
! United States and French Government Sponsorship Acknowledged.
-subroutine pml_compute_memory_variables(ispec,ispec_CPML,deltat,tempx1,tempy1,tempz1,tempx2,tempy2,tempz2, &
- tempx3,tempy3,tempz3,temp1,temp2,temp3,NSPEC_AB,xix,xiy,xiz, & !ZN
+subroutine pml_compute_memory_variables_elastic(ispec,ispec_CPML,deltat,tempx1,tempy1,tempz1,tempx2,tempy2,tempz2, &
+ tempx3,tempy3,tempz3,NSPEC_AB,xix,xiy,xiz, &
etax,etay,etaz,gammax,gammay,gammaz,jacobian)
! calculates C-PML elastic memory variables and computes stress sigma
@@ -36,9 +36,7 @@
! Anisotropic-Medium PML for Vector FETD With Modified Basis Functions,
! IEEE Transactions on Antennas and Propagation, vol. 54, no. 1, (2006)
- use specfem_par, only: it,kappastore,mustore,rhostore,wgllwgll_xy,wgllwgll_xz,wgllwgll_yz !ZN
- use specfem_par_elastic, only: ispec_is_elastic
- use specfem_par_acoustic, only: ispec_is_acoustic
+ use specfem_par, only: it,kappastore,mustore,rhostore,wgllwgll_xy,wgllwgll_xz,wgllwgll_yz
use pml_par
use constants, only: NGLLX,NGLLY,NGLLZ,FOUR_THIRDS, &
CPML_X_ONLY,CPML_Y_ONLY,CPML_Z_ONLY,CPML_XY_ONLY,CPML_XZ_ONLY,CPML_YZ_ONLY,CPML_XYZ
@@ -56,17 +54,15 @@
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ), intent(out) :: tempx1,tempx2,tempx3
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ), intent(out) :: tempy1,tempy2,tempy3
real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ), intent(out) :: tempz1,tempz2,tempz3
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ), intent(out) :: temp1,temp2,temp3
! local parameters
integer :: i,j,k
real(kind=CUSTOM_REAL) :: sigma_xx,sigma_yy,sigma_zz,sigma_xy,sigma_xz,sigma_yz,sigma_yx,sigma_zx,sigma_zy
- real(kind=CUSTOM_REAL) :: lambdal,mul,lambdalplus2mul,kappal,rho_invl !ZN
+ real(kind=CUSTOM_REAL) :: lambdal,mul,lambdalplus2mul,kappal
real(kind=CUSTOM_REAL) :: duxdxl_x,duxdyl_x,duxdzl_x,duydxl_x,duydyl_x,duzdxl_x,duzdzl_x
real(kind=CUSTOM_REAL) :: duxdxl_y,duxdyl_y,duydxl_y,duydyl_y,duydzl_y,duzdyl_y,duzdzl_y
real(kind=CUSTOM_REAL) :: duxdxl_z,duxdzl_z,duydyl_z,duydzl_z,duzdxl_z,duzdyl_z,duzdzl_z
- real(kind=CUSTOM_REAL) :: dpotentialdxl,dpotentialdyl,dpotentialdzl
real(kind=CUSTOM_REAL) :: bb,coef0_1,coef1_1,coef2_1,coef0_2,coef1_2,coef2_2
real(kind=CUSTOM_REAL) :: A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17 ! for convolution of strain(complex)
real(kind=CUSTOM_REAL) :: A18,A19,A20 ! for convolution of strain(simple)
@@ -112,37 +108,26 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_x(i,j,k,ispec_CPML)
A10 = d_store_x(i,j,k,ispec_CPML)
@@ -160,37 +145,26 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = 0.d0
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_x(i,j,k,ispec_CPML)
A13 = d_store_x(i,j,k,ispec_CPML)
@@ -208,38 +182,25 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = 0.d0
-
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
- endif
-
- if( ispec_is_elastic(ispec) ) then
!---------------------- A15 and A16 --------------------------
A15 = k_store_x(i,j,k,ispec_CPML)
A16 = d_store_x(i,j,k,ispec_CPML)
@@ -361,18 +322,7 @@
tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_Y_ONLY ) then
!------------------------------------------------------------------------------
!---------------------------- Y-surface C-PML ---------------------------------
@@ -395,37 +345,25 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = 0.d0
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = 1.d0/k_store_y(i,j,k,ispec_CPML)
A10 = 0.d0
@@ -443,37 +381,25 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_y(i,j,k,ispec_CPML)
A13 = d_store_y(i,j,k,ispec_CPML)
@@ -491,170 +417,146 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = 1.d0
+ A16 = 0.d0
- else if( ispec_is_acoustic(ispec) ) then
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
- endif
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = 1.d0
- A16 = 0.d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A17 and A18 --------------------------
+ A17 = k_store_y(i,j,k,ispec_CPML)
+ A18 = d_store_y(i,j,k,ispec_CPML)
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A17 and A18 --------------------------
- A17 = k_store_y(i,j,k,ispec_CPML)
- A18 = d_store_y(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ !---------------------- A19 and A20--------------------------
+ A19 = 1.d0
+ A20 = 0.0
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- !---------------------- A19 and A20--------------------------
- A19 = 1.d0
- A20 = 0.0
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
-
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
-
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
-
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
-
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_Z_ONLY ) then
!------------------------------------------------------------------------------
@@ -678,37 +580,25 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = 0.d0
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_z(i,j,k,ispec_CPML)
A10 = d_store_z(i,j,k,ispec_CPML)
@@ -726,37 +616,25 @@
coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
-
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = 0.d0
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = 1.0 / k_store_z(i,j,k,ispec_CPML)
A13 = 0.d0
@@ -774,169 +652,145 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = 1.d0
+ A16 = 0.d0
- else if( ispec_is_acoustic(ispec) ) then
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
- endif
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = 1.d0
- A16 = 0.d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A17 and A18 --------------------------
+ A17 = 1.d0
+ A18 = 0.d0
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- !---------------------- A17 and A18 --------------------------
- A17 = 1.d0
- A18 = 0.d0
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
+ !---------------------- A19 and A20 --------------------------
+ A19 = k_store_z(i,j,k,ispec_CPML)
+ A20 = d_store_z(i,j,k,ispec_CPML)
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A19 and A20 --------------------------
- A19 = k_store_z(i,j,k,ispec_CPML)
- A20 = d_store_z(i,j,k,ispec_CPML)
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
-
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
-
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
-
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
-
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XY_ONLY ) then
!------------------------------------------------------------------------------
@@ -961,37 +815,26 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_x(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
A10 = 0.d0
@@ -1010,49 +853,30 @@
coef2_2 = deltat/2.0d0
endif
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
- if( ispec_is_elastic(ispec) ) then
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
-
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)
- if( ispec_is_elastic(ispec) ) then
- A13 = d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
- + d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
- + (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A13 = d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) &
- + d_store_y(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
- + (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)
- endif
+ A13 = d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
+ + d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
+ + (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
A14 = - d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
bb = alpha_store(i,j,k,ispec_CPML)
@@ -1071,193 +895,167 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dzl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = k_store_x(i,j,k,ispec_CPML)
+ A16 = d_store_x(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) *(it+0.0)*deltat * coef1_2 &
- + PML_dpotential_dzl(i,j,k,ispec_CPML) *(it-0.0)*deltat * coef2_2
+ coef0_1 = exp(-bb * deltat)
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = k_store_x(i,j,k,ispec_CPML)
- A16 = d_store_x(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A17 and A18 --------------------------
+ A17 = k_store_y(i,j,k,ispec_CPML)
+ A18 = d_store_y(i,j,k,ispec_CPML)
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A17 and A18 --------------------------
- A17 = k_store_y(i,j,k,ispec_CPML)
- A18 = d_store_y(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
+ !---------------------- A19 and A20--------------------------
+ A19 = 1.d0
+ A20 = 0.0
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- !---------------------- A19 and A20--------------------------
- A19 = 1.d0
- A20 = 0.0
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
-
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
-
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
-
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
-
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XZ_ONLY ) then
!------------------------------------------------------------------------------
@@ -1282,48 +1080,30 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
- if( ispec_is_elastic(ispec) ) then
- A10 = d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
- + d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
- + (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A10 = d_store_x(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML) &
- + d_store_z(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
- + (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)
- endif
+ A10 = d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ + d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
+ + (it+0.0) * deltat * d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A11 = - d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
bb = alpha_store(i,j,k,ispec_CPML)
@@ -1342,46 +1122,31 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dyl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- if( ispec_is_elastic(ispec) ) then
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dyl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dyl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dyl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
-
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) *(it+0.0)*deltat* coef1_2 &
- + PML_dpotential_dyl(i,j,k,ispec_CPML) *(it-0.0)*deltat* coef2_2
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_x(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
A13 = 0.d0
@@ -1400,185 +1165,161 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = k_store_x(i,j,k,ispec_CPML)
+ A16 = d_store_x(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+ coef0_1 = exp(-bb * deltat)
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = k_store_x(i,j,k,ispec_CPML)
- A16 = d_store_x(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A17 and A18 --------------------------
+ A17 = 1.0d0
+ A18 = 0.d0
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- !---------------------- A17 and A18 --------------------------
- A17 = 1.0d0
- A18 = 0.d0
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
+ !---------------------- A19 and A20 --------------------------
+ A19 = k_store_z(i,j,k,ispec_CPML)
+ A20 = d_store_z(i,j,k,ispec_CPML)
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A19 and A20 --------------------------
- A19 = k_store_z(i,j,k,ispec_CPML)
- A20 = d_store_z(i,j,k,ispec_CPML)
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
-
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
-
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
-
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
-
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_YZ_ONLY ) then
!------------------------------------------------------------------------------
@@ -1587,15 +1328,9 @@
!---------------------- A6, A7 and A8 --------------------------
A6 = k_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)
- if( ispec_is_elastic(ispec) ) then
- A7 = d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
- + d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
- + (it+0.0) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A7 = d_store_y(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML) &
- + d_store_z(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) &
- + (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)
- endif
+ A7 = d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ + d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
+ + (it+0.0) * deltat * d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
A8 = - d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
bb = alpha_store(i,j,k,ispec_CPML)
@@ -1614,45 +1349,31 @@
coef1_2 = coef1_1
coef2_2 = coef2_1
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dxl(i,j,k,ispec_CPML) * (it-0.0) * deltat * coef2_2
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
- + PML_dpotential_dxl(i,j,k,ispec_CPML) *(it-0.0)*deltat* coef2_2
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
A10 = 0.d0
@@ -1671,37 +1392,25 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
A13 = 0.d0
@@ -1720,185 +1429,161 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = 1.0d0
+ A16 = 0.0d0
- else if( ispec_is_acoustic(ispec) ) then
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
- endif
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = 1.0d0
- A16 = 0.0d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A17 and A18 --------------------------
+ A17 = k_store_y(i,j,k,ispec_CPML)
+ A18 = d_store_y(i,j,k,ispec_CPML)
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = 0.d0
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A17 and A18 --------------------------
- A17 = k_store_y(i,j,k,ispec_CPML)
- A18 = d_store_y(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
+ !---------------------- A19 and A20--------------------------
+ A19 = k_store_z(i,j,k,ispec_CPML)
+ A20 = d_store_z(i,j,k,ispec_CPML)
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A19 and A20--------------------------
- A19 = k_store_z(i,j,k,ispec_CPML)
- A20 = d_store_z(i,j,k,ispec_CPML)
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
-
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
-
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
-
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
- endif
-
- if( ispec_is_acoustic(ispec) ) then !ZN
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
- endif
-
else if( CPML_regions(ispec_CPML) == CPML_XYZ ) then
!------------------------------------------------------------------------------
@@ -1915,17 +1600,10 @@
d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) / &
( d_store_x(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML)**2)
else
- if( ispec_is_elastic(ispec) ) then
- A7 = ( d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) + &
- d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
- k_store_x(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_x(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A7 = (d_store_z(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML)+ &
- d_store_y(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML)) / &
- k_store_x(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_x(i,j,k,ispec_CPML)
- endif
+ A7 = ( d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) + &
+ d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
+ k_store_x(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_x(i,j,k,ispec_CPML)
A8 = - d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML)
endif
@@ -1953,61 +1631,40 @@
coef2_2 = deltat/2.0d0
endif
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- if( ispec_is_elastic(ispec) ) then
+ if( abs(d_store_x(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ endif
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
+ duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
+ duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
- if( abs(d_store_x(i,j,k,ispec_CPML)) > 1.d-5 ) then
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- endif
- duxdxl_x = A6 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,1) + A8 * rmemory_dux_dxl_x(i,j,k,ispec_CPML,2)
- duydxl_y = A6 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,1) + A8 * rmemory_duy_dxl_y(i,j,k,ispec_CPML,2)
- duzdxl_z = A6 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,1) + A8 * rmemory_duz_dxl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
-
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
-
- if(abs(d_store_x(i,j,k,ispec_CPML))> 1.d-5)then
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
- + PML_dpotential_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
- endif
-
- dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
- + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
- endif
-
-
!---------------------- A9, A10 and A11 --------------------------
A9 = k_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
if( abs(d_store_y(i,j,k,ispec_CPML)) > 1.d-5 ) then
@@ -2018,17 +1675,10 @@
- d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) / &
( d_store_y(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)**2)
else
- if( ispec_is_elastic(ispec) ) then
- A10 = ( d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
- + d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
- k_store_y(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_y(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A10 = (d_store_z(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
- +d_store_x(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML)) / &
- k_store_y(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_y(i,j,k,ispec_CPML)
- endif
+ A10 = ( d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
+ + d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
+ k_store_y(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_y(i,j,k,ispec_CPML)
A11 = - d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
endif
@@ -2056,58 +1706,39 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ if( abs(d_store_y(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ endif
- if( abs(d_store_y(i,j,k,ispec_CPML)) > 1.d-5 ) then
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- endif
+ duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
+ duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
+ duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
- duxdyl_x = A9 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,1) + A11 * rmemory_dux_dyl_x(i,j,k,ispec_CPML,2)
- duydyl_y = A9 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,1) + A11 * rmemory_duy_dyl_y(i,j,k,ispec_CPML,2)
- duzdyl_z = A9 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,1) + A11 * rmemory_duz_dyl_z(i,j,k,ispec_CPML,2)
-
- else if( ispec_is_acoustic(ispec) ) then
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
-
- if(abs(d_store_y(i,j,k,ispec_CPML))> 1.d-5)then
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
- + PML_dpotential_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
- endif
-
- dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
- + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
- endif
-
!---------------------- A12, A13 and A14 --------------------------
A12 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
if( abs(d_store_z(i,j,k,ispec_CPML)) > 1.d-5 ) then
@@ -2118,17 +1749,10 @@
- d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
( d_store_z(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)**2)
else
- if( ispec_is_elastic(ispec) ) then
- A13 = ( d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
- + d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) ) / &
- k_store_z(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)/k_store_z(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
- A13 = (d_store_y(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML)&
- +d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML)) / &
- k_store_z(i,j,k,ispec_CPML) + &
- (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)/k_store_z(i,j,k,ispec_CPML)
- endif
+ A13 = ( d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) &
+ + d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) ) / &
+ k_store_z(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)/k_store_z(i,j,k,ispec_CPML)
A14 = - d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
endif
@@ -2156,224 +1780,973 @@
coef2_2 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ if( abs(d_store_z(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_dux_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duy_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
+ + PML_duz_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
+ endif
- if( abs(d_store_z(i,j,k,ispec_CPML)) > 1.d-5 ) then
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_dux_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duy_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * (it+0.0) * deltat * coef1_2 &
- + PML_duz_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat * coef2_2
- endif
+ duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
+ duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
+ duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
- duxdzl_x = A12 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,1) + A14 * rmemory_dux_dzl_x(i,j,k,ispec_CPML,2)
- duydzl_y = A12 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,1) + A14 * rmemory_duy_dzl_y(i,j,k,ispec_CPML,2)
- duzdzl_z = A12 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,1) + A14 * rmemory_duz_dzl_z(i,j,k,ispec_CPML,2)
+ !---------------------- A15 and A16 --------------------------
+ A15 = k_store_x(i,j,k,ispec_CPML)
+ A16 = d_store_x(i,j,k,ispec_CPML)
- else if( ispec_is_acoustic(ispec) ) then
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
+ coef0_1 = exp(-bb * deltat)
- if(abs(d_store_z(i,j,k,ispec_CPML))> 1.d-5)then
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
- else
- rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
- + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
- + PML_dpotential_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
- endif
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
- + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+
+ duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
+ duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+
+ duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
+ duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+
+ !---------------------- A17 and A18 --------------------------
+ A17 = k_store_y(i,j,k,ispec_CPML)
+ A18 = d_store_y(i,j,k,ispec_CPML)
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
endif
- if( ispec_is_elastic(ispec) ) then
- !---------------------- A15 and A16 --------------------------
- A15 = k_store_x(i,j,k,ispec_CPML)
- A16 = d_store_x(i,j,k,ispec_CPML)
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
+ duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_y(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_duz_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
+ duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
- duzdzl_y = A15 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dzl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_y(i,j,k,ispec_CPML,2)
- duzdyl_y = A15 * PML_duz_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duz_dyl_y(i,j,k,ispec_CPML,1) + rmemory_duz_dyl_y(i,j,k,ispec_CPML,2)
+ !---------------------- A19 and A20 --------------------------
+ A19 = k_store_z(i,j,k,ispec_CPML)
+ A20 = d_store_z(i,j,k,ispec_CPML)
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ bb = alpha_store(i,j,k,ispec_CPML)
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_z(i,j,k,ispec_CPML,2) = 0.d0
+ coef0_1 = exp(-bb * deltat)
- duydzl_z = A15 * PML_duy_dzl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dzl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dzl_z(i,j,k,ispec_CPML,2)
- duydyl_z = A15 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A16 * rmemory_duy_dyl_z(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_z(i,j,k,ispec_CPML,2)
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0))/ bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
- !---------------------- A17 and A18 --------------------------
- A17 = k_store_y(i,j,k,ispec_CPML)
- A18 = d_store_y(i,j,k,ispec_CPML)
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
- bb = alpha_store(i,j,k,ispec_CPML)
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
+ + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
- coef0_1 = exp(-bb * deltat)
+ duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
+ duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dzl_x(i,j,k,ispec_CPML,2) = 0.d0
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
+ + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duz_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duz_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duz_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
+ duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
+ + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
- duzdzl_x = A17 * PML_duz_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dzl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dzl_x(i,j,k,ispec_CPML,2)
- duzdxl_x = A17 * PML_duz_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_duz_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duz_dxl_x(i,j,k,ispec_CPML,2)
+ ! compute stress sigma
+ sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
+ sigma_yx = mul*duxdyl_x + mul*duydxl_x
+ sigma_zx = mul*duzdxl_x + mul*duxdzl_x
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dzl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dzl_z(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xy = mul*duxdyl_y + mul*duydxl_y
+ sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
+ sigma_zy = mul*duzdyl_y + mul*duydzl_y
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_z(i,j,k,ispec_CPML,2) = 0.d0
+ sigma_xz = mul*duzdxl_z + mul*duxdzl_z
+ sigma_yz = mul*duzdyl_z + mul*duydzl_z
+ sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
- duxdzl_z = A17 * PML_dux_dzl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dzl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dzl_z(i,j,k,ispec_CPML,2)
- duxdxl_z = A17 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A18 * rmemory_dux_dxl_z(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_z(i,j,k,ispec_CPML,2)
+ ! form dot product with test vector, non-symmetric form
+ tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
+ tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
+ tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
- !---------------------- A19 and A20 --------------------------
- A19 = k_store_z(i,j,k,ispec_CPML)
- A20 = d_store_z(i,j,k,ispec_CPML)
+ tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
+ tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
+ tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
- bb = alpha_store(i,j,k,ispec_CPML)
+ tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
+ tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
+ tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
+ else
+ stop 'wrong PML flag in PML memory variable calculation routine'
+ endif
+ enddo
+ enddo
+ enddo
- coef0_1 = exp(-bb * deltat)
+end subroutine pml_compute_memory_variables_elastic
- if( abs(bb) > 1.d-5 ) then
- coef1_1 = (1.d0 - exp(-bb * deltat/2.d0))/ bb
- coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
- else
- coef1_1 = deltat/2.0d0
- coef2_1 = deltat/2.0d0
- endif
+!
+!=====================================================================
+!
+!
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dyl_x(i,j,k,ispec_CPML,2) = 0.d0
+subroutine pml_compute_memory_variables_acoustic(ispec,ispec_CPML,deltat,temp1,temp2,temp3,NSPEC_AB,xix,xiy,xiz, &
+ etax,etay,etaz,gammax,gammay,gammaz,jacobian)
+ ! calculates C-PML elastic memory variables and computes stress sigma
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) &
- + PML_duy_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_duy_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_duy_dxl_x(i,j,k,ispec_CPML,2) = 0.d0
+ ! second-order accurate convolution term calculation from equation (21) of
+ ! Shumin Wang, Robert Lee, and Fernando L. Teixeira,
+ ! Anisotropic-Medium PML for Vector FETD With Modified Basis Functions,
+ ! IEEE Transactions on Antennas and Propagation, vol. 54, no. 1, (2006)
- duydyl_x = A19 * PML_duy_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dyl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dyl_x(i,j,k,ispec_CPML,2)
- duydxl_x = A19 * PML_duy_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_duy_dxl_x(i,j,k,ispec_CPML,1) + rmemory_duy_dxl_x(i,j,k,ispec_CPML,2)
+ use specfem_par, only: it,kappastore,rhostore,wgllwgll_xy,wgllwgll_xz,wgllwgll_yz
+ use pml_par
+ use constants, only: NGLLX,NGLLY,NGLLZ,FOUR_THIRDS, &
+ CPML_X_ONLY,CPML_Y_ONLY,CPML_Z_ONLY,CPML_XY_ONLY,CPML_XZ_ONLY,CPML_YZ_ONLY,CPML_XYZ
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dyl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dyl_y(i,j,k,ispec_CPML,2) = 0.d0
+ implicit none
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) &
- + PML_dux_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dux_dxl(i,j,k,ispec_CPML) * coef2_1
- rmemory_dux_dxl_y(i,j,k,ispec_CPML,2) = 0.d0
+ integer, intent(in) :: ispec,ispec_CPML,NSPEC_AB
- duxdyl_y = A19 * PML_dux_dyl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dyl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dyl_y(i,j,k,ispec_CPML,2)
- duxdxl_y = A19 * PML_dux_dxl(i,j,k,ispec_CPML) &
- + A20 * rmemory_dux_dxl_y(i,j,k,ispec_CPML,1) + rmemory_dux_dxl_y(i,j,k,ispec_CPML,2)
+ real(kind=CUSTOM_REAL), intent(in) :: deltat
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_AB), intent(in) :: &
+ xix,xiy,xiz,etax,etay,etaz,gammax,gammay,gammaz,jacobian
+ real(kind=CUSTOM_REAL) :: xixl,xiyl,xizl,etaxl,etayl,etazl,gammaxl,gammayl,gammazl,jacobianl
- ! compute stress sigma
- sigma_xx = lambdalplus2mul*duxdxl_x + lambdal*duydyl_x + lambdal*duzdzl_x
- sigma_yx = mul*duxdyl_x + mul*duydxl_x
- sigma_zx = mul*duzdxl_x + mul*duxdzl_x
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ), intent(out) :: temp1,temp2,temp3
- sigma_xy = mul*duxdyl_y + mul*duydxl_y
- sigma_yy = lambdal*duxdxl_y + lambdalplus2mul*duydyl_y + lambdal*duzdzl_y
- sigma_zy = mul*duzdyl_y + mul*duydzl_y
+ ! local parameters
+ integer :: i,j,k
- sigma_xz = mul*duzdxl_z + mul*duxdzl_z
- sigma_yz = mul*duzdyl_z + mul*duydzl_z
- sigma_zz = lambdal*duxdxl_z + lambdal*duydyl_z + lambdalplus2mul*duzdzl_z
+ real(kind=CUSTOM_REAL) :: kappal,rho_invl
+ real(kind=CUSTOM_REAL) :: dpotentialdxl,dpotentialdyl,dpotentialdzl
+ real(kind=CUSTOM_REAL) :: bb,coef0_1,coef1_1,coef2_1,coef0_2,coef1_2,coef2_2
+ real(kind=CUSTOM_REAL) :: A6,A7,A8,A9,A10,A11,A12,A13,A14
- ! form dot product with test vector, non-symmetric form
- tempx1(i,j,k) = jacobianl * (sigma_xx*xixl + sigma_yx*xiyl + sigma_zx*xizl) ! this goes to accel_x
- tempy1(i,j,k) = jacobianl * (sigma_xy*xixl + sigma_yy*xiyl + sigma_zy*xizl) ! this goes to accel_y
- tempz1(i,j,k) = jacobianl * (sigma_xz*xixl + sigma_yz*xiyl + sigma_zz*xizl) ! this goes to accel_z
+ do k=1,NGLLZ
+ do j=1,NGLLY
+ do i=1,NGLLX
+ kappal = kappastore(i,j,k,ispec)
+ rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
+ xixl = xix(i,j,k,ispec)
+ xiyl = xiy(i,j,k,ispec)
+ xizl = xiz(i,j,k,ispec)
+ etaxl = etax(i,j,k,ispec)
+ etayl = etay(i,j,k,ispec)
+ etazl = etaz(i,j,k,ispec)
+ gammaxl = gammax(i,j,k,ispec)
+ gammayl = gammay(i,j,k,ispec)
+ gammazl = gammaz(i,j,k,ispec)
+ jacobianl = jacobian(i,j,k,ispec)
- tempx2(i,j,k) = jacobianl * (sigma_xx*etaxl + sigma_yx*etayl + sigma_zx*etazl) ! this goes to accel_x
- tempy2(i,j,k) = jacobianl * (sigma_xy*etaxl + sigma_yy*etayl + sigma_zy*etazl) ! this goes to accel_y
- tempz2(i,j,k) = jacobianl * (sigma_xz*etaxl + sigma_yz*etayl + sigma_zz*etazl) ! this goes to accel_z
+ if( CPML_regions(ispec_CPML) == CPML_X_ONLY ) then
- tempx3(i,j,k) = jacobianl * (sigma_xx*gammaxl + sigma_yx*gammayl + sigma_zx*gammazl) ! this goes to accel_x
- tempy3(i,j,k) = jacobianl * (sigma_xy*gammaxl + sigma_yy*gammayl + sigma_zy*gammazl) ! this goes to accel_y
- tempz3(i,j,k) = jacobianl * (sigma_xz*gammaxl + sigma_yz*gammayl + sigma_zz*gammazl) ! this goes to accel_z
+ !------------------------------------------------------------------------------
+ !---------------------------- X-surface C-PML ---------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = 1.d0 / k_store_x(i,j,k,ispec_CPML)
+ A7 = 0.d0
+ A8 = - d_store_x(i,j,k,ispec_CPML) / (k_store_x(i,j,k,ispec_CPML)**2)
+
+ bb = d_store_x(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
endif
- if( ispec_is_acoustic(ispec) ) then !ZN
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
- rho_invl = 1.0_CUSTOM_REAL / rhostore(i,j,k,ispec)
- temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
- (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
- temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
- (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
- temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
- (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_x(i,j,k,ispec_CPML)
+ A10 = d_store_x(i,j,k,ispec_CPML)
+ A11 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
endif
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_x(i,j,k,ispec_CPML)
+ A13 = d_store_x(i,j,k,ispec_CPML)
+ A14 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_Y_ONLY ) then
+ !------------------------------------------------------------------------------
+ !---------------------------- Y-surface C-PML ---------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_y(i,j,k,ispec_CPML)
+ A7 = d_store_y(i,j,k,ispec_CPML)
+ A8 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = 1.d0/k_store_y(i,j,k,ispec_CPML)
+ A10 = 0.d0
+ A11 = - d_store_y(i,j,k,ispec_CPML) / (k_store_y(i,j,k,ispec_CPML) ** 2)
+
+ bb = d_store_y(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_y(i,j,k,ispec_CPML)
+ A13 = d_store_y(i,j,k,ispec_CPML)
+ A14 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_Z_ONLY ) then
+
+ !------------------------------------------------------------------------------
+ !---------------------------- Z-surface C-PML ---------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_z(i,j,k,ispec_CPML)
+ A7 = d_store_z(i,j,k,ispec_CPML)
+ A8 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_z(i,j,k,ispec_CPML)
+ A10 = d_store_z(i,j,k,ispec_CPML)
+ A11 = 0.d0
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = 0.d0
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = 1.0 / k_store_z(i,j,k,ispec_CPML)
+ A13 = 0.d0
+ A14 = - d_store_z(i,j,k,ispec_CPML) / (k_store_z(i,j,k,ispec_CPML) ** 2)
+
+ bb = d_store_z(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_XY_ONLY ) then
+
+ !------------------------------------------------------------------------------
+ !---------------------------- XY-edge C-PML -----------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_y(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML)
+ A7 = 0.d0
+ A8 = ( d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) - &
+ d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) / k_store_x(i,j,k,ispec_CPML)**2
+
+ bb = d_store_x(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_x(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
+ A10 = 0.d0
+ A11 = ( d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) - &
+ d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) / k_store_y(i,j,k,ispec_CPML)**2
+
+ bb = d_store_y(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)
+ A13 = d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) &
+ + d_store_y(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
+ + (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)
+ A14 = - d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ coef0_2 = coef0_1
+ coef1_2 = coef1_1
+ coef2_2 = coef2_1
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) *(it+0.0)*deltat * coef1_2 &
+ + PML_dpotential_dzl(i,j,k,ispec_CPML) *(it-0.0)*deltat * coef2_2
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_XZ_ONLY ) then
+
+ !------------------------------------------------------------------------------
+ !---------------------------- XZ-edge C-PML -----------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_z(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML)
+ A7 = 0.d0
+ A8 = ( d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) - &
+ d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / k_store_x(i,j,k,ispec_CPML)**2
+
+ bb = d_store_x(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)
+ A10 = d_store_x(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML) &
+ + d_store_z(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
+ + (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)
+ A11 = - d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ coef0_2 = coef0_1
+ coef1_2 = coef1_1
+ coef2_2 = coef2_1
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) *(it+0.0)*deltat* coef1_2 &
+ + PML_dpotential_dyl(i,j,k,ispec_CPML) *(it-0.0)*deltat* coef2_2
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_x(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
+ A13 = 0.d0
+ A14 = ( d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ - d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) / k_store_z(i,j,k,ispec_CPML)**2
+
+ bb = d_store_z(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_YZ_ONLY ) then
+
+ !------------------------------------------------------------------------------
+ !---------------------------- YZ-edge C-PML -----------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)
+ A7 = d_store_y(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML) &
+ + d_store_z(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML) &
+ + (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)
+ A8 = - d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ coef0_2 = coef0_1
+ coef1_2 = coef1_1
+ coef2_2 = coef2_1
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
+ + PML_dpotential_dxl(i,j,k,ispec_CPML) *(it-0.0)*deltat* coef2_2
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
+ A10 = 0.d0
+ A11 = ( d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) -&
+ d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / k_store_y(i,j,k,ispec_CPML)**2
+
+ bb = d_store_y(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
+ A13 = 0.d0
+ A14 = ( d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) -&
+ d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) / k_store_z(i,j,k,ispec_CPML)**2
+
+ bb = d_store_z(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) / bb
+ coef2_2 = ( 1.d0 - exp(-bb * deltat/2.d0) ) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = 0.d0
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
+ else if( CPML_regions(ispec_CPML) == CPML_XYZ ) then
+
+ !------------------------------------------------------------------------------
+ !---------------------------- XYZ-corner C-PML --------------------------------
+ !------------------------------------------------------------------------------
+
+ !---------------------- A6, A7 and A8 --------------------------
+ A6 = k_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML)
+ if( abs(d_store_x(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ A7 = d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)/d_store_x(i,j,k,ispec_CPML)
+ A8 = ( d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) - &
+ d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) * &
+ ( d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) - &
+ d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) / &
+ ( d_store_x(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML)**2)
+ else
+ A7 = (d_store_z(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML)+ &
+ d_store_y(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML)) / &
+ k_store_x(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_y(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_x(i,j,k,ispec_CPML)
+ A8 = - d_store_y(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML)
+ endif
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ bb = d_store_x(i,j,k,ispec_CPML) / k_store_x(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb* deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_1
+
+ if(abs(d_store_x(i,j,k,ispec_CPML))> 1.d-5)then
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dxl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dxl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
+ + PML_dpotential_dxl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
+ endif
+
+ dpotentialdxl = A6 * PML_dpotential_dxl(i,j,k,ispec_CPML) &
+ + A7 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,1) + A8 * rmemory_dpotential_dxl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A9, A10 and A11 --------------------------
+ A9 = k_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
+ if( abs(d_store_y(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ A10 = d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML)/d_store_y(i,j,k,ispec_CPML)
+ A11 = ( d_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
+ - d_store_y(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) * &
+ ( d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ - d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) ) / &
+ ( d_store_y(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML)**2)
+ else
+ A10 = (d_store_z(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML) &
+ +d_store_x(i,j,k,ispec_CPML)*k_store_z(i,j,k,ispec_CPML)) / &
+ k_store_y(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_z(i,j,k,ispec_CPML)/k_store_y(i,j,k,ispec_CPML)
+ A11 = - d_store_x(i,j,k,ispec_CPML) * d_store_z(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML)
+ endif
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ bb = d_store_y(i,j,k,ispec_CPML) / k_store_y(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb* deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_1
+
+ if(abs(d_store_y(i,j,k,ispec_CPML))> 1.d-5)then
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dyl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dyl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
+ + PML_dpotential_dyl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
+ endif
+
+ dpotentialdyl = A9 * PML_dpotential_dyl(i,j,k,ispec_CPML) &
+ + A10 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,1) + A11 * rmemory_dpotential_dyl(i,j,k,ispec_CPML,2)
+
+ !---------------------- A12, A13 and A14 --------------------------
+ A12 = k_store_x(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
+ if( abs(d_store_z(i,j,k,ispec_CPML)) > 1.d-5 ) then
+ A13 = d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML)/d_store_z(i,j,k,ispec_CPML)
+ A14 = ( d_store_x(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) &
+ - d_store_z(i,j,k,ispec_CPML) * k_store_x(i,j,k,ispec_CPML) ) * &
+ ( d_store_z(i,j,k,ispec_CPML) * k_store_y(i,j,k,ispec_CPML) &
+ - d_store_y(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML) ) / &
+ ( d_store_z(i,j,k,ispec_CPML) * k_store_z(i,j,k,ispec_CPML)**2)
+ else
+ A13 = (d_store_y(i,j,k,ispec_CPML)*k_store_x(i,j,k,ispec_CPML)&
+ +d_store_x(i,j,k,ispec_CPML)*k_store_y(i,j,k,ispec_CPML)) / &
+ k_store_z(i,j,k,ispec_CPML) + &
+ (it+0.0)*deltat*d_store_x(i,j,k,ispec_CPML)*d_store_y(i,j,k,ispec_CPML)/k_store_z(i,j,k,ispec_CPML)
+ A14 = - d_store_x(i,j,k,ispec_CPML) * d_store_y(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML)
+ endif
+
+ bb = alpha_store(i,j,k,ispec_CPML)
+
+ coef0_1 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_1 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_1 = (1.d0 - exp(-bb * deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_1 = deltat/2.0d0
+ coef2_1 = deltat/2.0d0
+ endif
+
+ bb = d_store_z(i,j,k,ispec_CPML) / k_store_z(i,j,k,ispec_CPML) + alpha_store(i,j,k,ispec_CPML)
+
+ coef0_2 = exp(-bb * deltat)
+
+ if( abs(bb) > 1.d-5 ) then
+ coef1_2 = (1.d0 - exp(-bb * deltat/2.d0)) / bb
+ coef2_2 = (1.d0 - exp(-bb* deltat/2.d0)) * exp(-bb * deltat/2.d0) / bb
+ else
+ coef1_2 = deltat/2.0d0
+ coef2_2 = deltat/2.0d0
+ endif
+
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) = coef0_1 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_1 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_1
+
+ if(abs(d_store_z(i,j,k,ispec_CPML))> 1.d-5)then
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * coef1_2 + PML_dpotential_dzl(i,j,k,ispec_CPML) * coef2_2
+ else
+ rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) = coef0_2 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2) &
+ + PML_dpotential_dzl_new(i,j,k,ispec_CPML) * (it+0.0)*deltat* coef1_2 &
+ + PML_dpotential_dzl(i,j,k,ispec_CPML) * (it-0.0)*deltat* coef2_2
+ endif
+
+ dpotentialdzl = A12 * PML_dpotential_dzl(i,j,k,ispec_CPML) &
+ + A13 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,1) + A14 * rmemory_dpotential_dzl(i,j,k,ispec_CPML,2)
+
+ temp1(i,j,k) = rho_invl * wgllwgll_yz(j,k) * jacobianl* &
+ (xixl*dpotentialdxl + xiyl*dpotentialdyl + xizl*dpotentialdzl)
+ temp2(i,j,k) = rho_invl * wgllwgll_xz(i,k) * jacobianl* &
+ (etaxl*dpotentialdxl + etayl*dpotentialdyl + etazl*dpotentialdzl)
+ temp3(i,j,k) = rho_invl * wgllwgll_xy(i,j) * jacobianl* &
+ (gammaxl*dpotentialdxl + gammayl*dpotentialdyl + gammazl*dpotentialdzl)
+
else
stop 'wrong PML flag in PML memory variable calculation routine'
endif
@@ -2381,5 +2754,5 @@
enddo
enddo
-end subroutine pml_compute_memory_variables
+end subroutine pml_compute_memory_variables_acoustic
More information about the CIG-COMMITS
mailing list