[cig-commits] [commit] devel: updated list_for_Zhinan_for_SPECFEM3D_PMLs.txt (829edf4)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Jan 21 15:45:50 PST 2015


Repository : https://github.com/geodynamics/specfem3d

On branch  : devel
Link       : https://github.com/geodynamics/specfem3d/compare/3a913651b2c1ec85e1748bcd0a60823b845b6b21...829edf423dc5f77c975d811726ed1016419afe85

>---------------------------------------------------------------

commit 829edf423dc5f77c975d811726ed1016419afe85
Author: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
Date:   Thu Jan 22 00:43:33 2015 +0100

    updated list_for_Zhinan_for_SPECFEM3D_PMLs.txt


>---------------------------------------------------------------

829edf423dc5f77c975d811726ed1016419afe85
 list_for_Zhinan_for_SPECFEM3D_PMLs.txt | 148 +++++++++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)

diff --git a/list_for_Zhinan_for_SPECFEM3D_PMLs.txt b/list_for_Zhinan_for_SPECFEM3D_PMLs.txt
index c1e9df9..5b43867 100644
--- a/list_for_Zhinan_for_SPECFEM3D_PMLs.txt
+++ b/list_for_Zhinan_for_SPECFEM3D_PMLs.txt
@@ -1,4 +1,152 @@
 
+---------- DK DK new issues added by Dimitri on January 21, 2015, following some emails I exchanged with Zhinan:
+
+Subject: Re: specfem3d
+Date: Thu, 22 Jan 2015 00:02:29 +0100
+From: Dimitri Komatitsch
+Organization: CNRS, Marseille, France
+To: Zhang, Chang-Hua
+CC: Zhinan Xie
+
+Dear Chang-hua,
+
+Thanks! Let me forward this to Zhinan, so that he can have a look at
+page 4 of the PDF file you sent me, which shows that SPECFEM3D currently
+stops when one tries to use CPML when the interior of the domain has
+viscoelasticity.
+
+Thanks,
+Best regards,
+
+Dimitri.
+
+-------------------------
+
+Subject:  Re: [specfem3d] Runing both PML and attenuation causes error
+results (#356)
+Date:   Tue, 20 Jan 2015 15:11:47 -0800
+From:   specfem3d-zhang-ksu
+To:   geodynamics/specfem3d
+CC:   Dimitri Komatitsch
+
+Thanks, Dimitri. I have replaced the code segment by the following one,
+
+|  ! if both PML and attenuation are used, the PML region must be elastic
+  if (PML_CONDITIONS .and. (.not. backward_simulation) .and. NSPEC_CPML > 0) then
+     ! do not merge this second line with the first using an ".and." statement
+     ! because array is_CPML() is unallocated when PML_CONDITIONS is false
+     if (is_CPML(ispec)) then
+        ! PML region
+        ispec_CPML = spec_to_CPML(ispec)
+        DO_LOOP_IJK
+
+          dummyx_loc_att(INDEX_IJK) = PML_displ_old(1,INDEX_IJK,ispec_CPML)
+          dummyy_loc_att(INDEX_IJK) = PML_displ_old(2,INDEX_IJK,ispec_CPML)
+          dummyz_loc_att(INDEX_IJK) = PML_displ_old(3,INDEX_IJK,ispec_CPML)
+
+        ENDDO_LOOP_IJK
+     else if (ATTENUATION .and. COMPUTE_AND_STORE_STRAIN) then
+        ! attenuation region
+        DO_LOOP_IJK
+           iglob = ibool(INDEX_IJK,ispec)
+           dummyx_loc_att(INDEX_IJK) = deltat*veloc(1,iglob)
+           dummyy_loc_att(INDEX_IJK) = deltat*veloc(2,iglob)
+           dummyz_loc_att(INDEX_IJK) = deltat*veloc(3,iglob)
+
+        ENDDO_LOOP_IJK
+     endif
+  else if (ATTENUATION .and. COMPUTE_AND_STORE_STRAIN) then
+     ! only attenuation
+     ! use first order Taylor expansion of displacement for local storage of stresses
+     ! at this current time step, to fix attenuation in a consistent way
+     DO_LOOP_IJK
+        iglob = ibool(INDEX_IJK,ispec)
+        dummyx_loc_att(INDEX_IJK) = deltat*veloc(1,iglob)
+        dummyy_loc_att(INDEX_IJK) = deltat*veloc(2,iglob)
+        dummyz_loc_att(INDEX_IJK) = deltat*veloc(3,iglob)
+     ENDDO_LOOP_IJK
+
+  endif
+|
+
+And similarly the other places, the results are much better, but I have
+a strong spike at the source location all the time, no idea what is
+going on.
+
+----------------------------------------------------------
+
+Subject: Re: [specfem3d] Runing both PML and attenuation causes error results (#356)
+Date: Tue, 20 Jan 2015 23:58:21 +0100
+From: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
+Organization: CNRS, Marseille, France
+To: geodynamics/specfem3d , specfem3d-zhang-ksu
+CC: Zhinan Xie
+
+Hi,
+
+Yes, PML in the 3D code is currently for acoustic/elastic media only
+(i.e. viscoelasticity cannot be turned on).
+
+Let me cc my colleague Zhinan Xie because he is currently working on the
+code and thus he could probably remove that constraint (note that if so
+PML will *not* be perfectly matched strictly speaking because it is
+written without attenuation, thus the viscoelastic medium will be in
+contact with an elastic PML; but that works fine in practice if Q
+factors are not too small (typically not below 50 or so).
+
+PS for Zhinan: Zhang Ksu is right, there is no reason to stop the code
+in that case, we should just run with an elastic PML in contact with the
+viscoelastic medium, as we do in the 2D code. Thus the code in his email
+below should be slightly modified (and the PML arrays should be
+allocated even if attenuation is on I guess).
+
+Thanks,
+Dimitri.
+
+On 01/20/2015 12:00 AM, specfem3d-zhang-ksu wrote:
+> I am running the example of
+> homogeneous_halfspace_HEX8_elastic_absorbing_CPML_5sides by turning
+> ATTENUATION false or true in the Par_file and change Qmu in the
+> nummaterial_velocity_file.
+>
+> The result with ATTENUATION=.true. is totally wrong. Is it a problem
+> that the example is only setup for CPML or there is a bug in the code?
+>
+> By examining the source code, I think that there is a bug is more
+> probable. For example, in the
+> subroutine compute_forces_viscoelastic_Dev_5p, there is code segment
+> ! use first order Taylor expansion of displacement for local storage of
+> stresses
+> ! at this current time step, to fix attenuation in a consistent way
+> if (ATTENUATION .and. COMPUTE_AND_STORE_STRAIN) then
+> DO_LOOP_IJK
+> iglob = ibool(INDEX_IJK,ispec)
+> dummyx_loc_att(INDEX_IJK) = deltat/veloc(1,iglob)
+> dummyy_loc_att(INDEX_IJK) = deltat/veloc(2,iglob)
+> dummyz_loc_att(INDEX_IJK) = deltat*veloc(3,iglob)
+> ENDDO_LOOP_IJK
+> else if (PML_CONDITIONS .and. (.not. backward_simulation) .and.
+> NSPEC_CPML > 0) then
+> ! do not merge this second line with the first using an ".and." statement
+> ! because array is_CPML() is unallocated when PML_CONDITIONS is false
+> if (is_CPML(ispec)) then
+> DO_LOOP_IJK
+> iglob = ibool(INDEX_IJK,ispec)
+> dummyx_loc_att(INDEX_IJK) = displ_old(1,iglob)
+> dummyy_loc_att(INDEX_IJK) = displ_old(2,iglob)
+> dummyz_loc_att(INDEX_IJK) = displ_old(3,iglob)
+> ENDDO_LOOP_IJK
+> endif
+> endif
+>
+> which seams to indicate we can not have both CPML and attenuation.
+>
+> Has anyone experienced this issue?
+
+==============================================================================
+==============================================================================
+==============================================================================
+
 For SPECFEM3D PMLs:
 -------------------
 



More information about the CIG-COMMITS mailing list