SPECFEM / specfem3d

SPECFEM3D_Cartesian simulates acoustic (fluid), elastic (solid), coupled acoustic/elastic, poroelastic or seismic wave propagation in any type of conforming mesh of hexahedra (structured or not).
GNU General Public License v3.0
409 stars 227 forks source link

viscoelastic modeling: amplitude attenuation and phase dispersion #1497

Open sulydee opened 2 years ago

sulydee commented 2 years ago

Hello,

In specfem2d, when viscoelastic attenuation is turned on, the wavefield will experience both amplitude attenuation and phase dispersion. While in specfem3d, viscoelastic attenuation seems to be effective only for amplitude attenuation (I can't see any phase dispersion when I turn viscoelastic attenuation on).

Are there any parameters in specfem3d that make viscoelasticity occur with both amplitude attenuation and phase dispersion?

Best regards, Thank you.

danielpeter commented 2 years ago

turning on the attenuation flag will incorporate all effects (phase & amplitude) according to your model Q values and reference frequency set in Par_file.

what is your setting, i.e., reference frequency and Q values? you could check in the output_generate_databases.txt. probably, it just happens with your setup that you see little phase dispersion.

sulydee commented 2 years ago

Thank you, daniel.

I have got the reason that there is not obvious phase dispersion. This is because in specfem2d, I turn the flag READ_VELOCITIES_AT_f0 off, which results in the reference velocities at infinite frequency. However, it is default on in specfem3d. I can achieve their consistency by turning the above flag on in specfem2d or changing scale factors in code of specfem3d.

Another, I notice that the algorithms of obtaining relaxation time in specfem2d and specfem3d versions are different. It's a little confused.

danielpeter commented 2 years ago

great you found the culprit :)

and yes, i agree that the attenuation implementations are confusing. the overall schemes for attenuation are all the same based on standard linear solids, but the way the relaxation times are determined by optimization schemes and the time stepping of the memory variables are different in the different versions - partly by historic reasons, partly since it relates to different application scenarios of the codes.

the optimization of the relaxation times becomes more important for lower Q values. those are found often in more local studies, which relates mostly to the 2D code applications. thus, having more exact schemes in that version became interesting. going to larger scales, having these more expensive optimizations and schemes hardly justify anymore.

furthermore, 3D Cartesian and GLOBE again differ as on global scales, it is considered to be sufficient to have shear attenuation only - thus, again different implementations. usually, we want to save as much computational costs as possible. this makes these implementations all tailored for their specific range of applications. on top of all that, the attenuation schemes can vary by how they internally use relaxation times... so yes, i can confirm that the implementations are quite confusing and different in all SPECFEM packages.

sulydee commented 2 years ago

Got it! I really appreciate your answering questions. Thanks again.