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 228 forks source link

Question: about dt and half-duration #1476

Closed mrzjrbn closed 2 years ago

mrzjrbn commented 2 years ago

Hi All,

I just wondering, is it possible to increase the half duration in order to get lower frequency stf and decrease the time sampling? Since the data generated from my simulation is just too large with very small dt. Although I only need some low-frequency (1-4 Hz) data. Or perhaps there is a typical practice to handle this situation. Thank you in advance,

Warm regards,

Ivan

jpampuero commented 2 years ago

Hi Ivan, You can increase arbitrarily the STF half duration, but not the time step DT. The latter is limited by the condition for numerical stability, which is explained in section "Choosing the timestep DT" of the manual. The maximum stable DT is proportional to element size. If you are only interested in low frequencies, you can generate a coarser mesh (with larger elements), keeping in mind that the mesh should satisfy the condition for good resolution (accuracy), which is roughly: [element size] < [minimum wavelength] = [wave speed] / [highest frequency].

In addition to that, you can try setting the parameter "subsamp_seismos" in Par_file to a value >1. I did not find the documentation of this parameter and I have never used it, but from a quick look at the code (src/specfem3D/write_seismograms.f90) it seems to subsample seismograms to a sampling step = subsamp_seismos*DT. Others here can correct me if I am wrong. If you subsample seismogram outputs, make sure your STF is much lower frequency than the new Nyquist frequency of the seismograms, to avoid aliasing. Note also that if you subsample without coarsening the mesh, your simulation will be overkill (but maybe you don't mind wasting CPU time).

JPA

mrzjrbn commented 2 years ago

Hi Jean,

Thank you it helps a lot.

mrzjrbn commented 2 years ago

Hi Jean,

Perhaps one question about the condition you mentioned above :

[element size] < [minimum wavelength] = [wave speed] / [highest frequency].

is there any factor to multiply with the element size in the above condition or as long as it is smaller than the minimum wavelength ???

jpampuero commented 2 years ago

The short answer is the often quoted rule-of-thumb: [element size]/(NGLL-1) < [minimum wavelength]/(4 to 5) where NGLL is the number of Gauss-Lobatto-Legendre points (= polynomial order + 1). The left hand side is the average spacing between GLL points. This inequality means "at least 4 to 5 nodes per wavelength".

It is a necessary condition, but not always sufficient. The long answer is in the text related to figures 3 and 5 in these lecture notes: https://www.dropbox.com/s/w0z01g6pfj9nv3p/SEM_lecture_notes.pdf?dl=0 . A rarely acknowledged feature is that the artificial time shift due to numerical dispersion error grows with propagation distance. Thus, to propagate waves up to distances much larger than the minimum wavelength, you need more than 5 nodes per wavelength to keep the time delay small compared to the travel time.

mrzjrbn commented 2 years ago

Hi Jean,

Thanks a lot ... it helps a lot :)