SPECFEM / specfem3d_globe

SPECFEM3D_GLOBE simulates global and regional (continental-scale) seismic wave propagation.
GNU General Public License v3.0
90 stars 96 forks source link

🐛 [BUG] - model_EMC.f90 - RMOHO_STRETCH_ADJUSTMENT does nothing #839

Closed lsawade closed 4 months ago

lsawade commented 4 months ago

Description

The Par_file says changing the RMOHO_STRETCH_ADJUSTMENT will change the depth of fictitious moho. That does not seem to be the case. Am I misunderstanding the statement?

Affected SPECFEM3D_GLOBE version

3f24cd9

Your software and hardware environment

linux cluster, a100

Reproduction steps

1. Set `USE_LOCAL_MESH = .true.` and adjust `RMOHO_STRETCH_ADJUSTMENT` in constants.h.in
2. Fictitious Moho still at 40km no matter what value `RMOHO_STRETCH_ADJUSTMENT` takes.

Screenshots

No response

Logs

stdout of `xmeshfem3D`

 simulation time step size:
   DT determined =    5.5000000000000000E-002
   Par_file: user overrides with specified DT =    2.5000000000000001E-002

 using local mesh layout:
   number of layers in crust  =           10
   number of layers in mantle =           60

   number of doubling layers  =            1
            doubling layer at =           11
   fictitious moho at depth   :    40.0000000     (km)


### OS

Linux
Evans-Onyango commented 4 months ago

Hi Lucas, try changing the USE_LOCAL_MESH flag to false. Also, take a look at these slides on LOCAL_MESH true vs false, they show power of local_mesh flag. I hope this helps.

danielpeter commented 4 months ago

this also depends on what model you have chosen. from the info above, it's not clear which one your using as the output provided is incomplete.

note that the RMOHO_STRETCH_ADJUSTMENT parameter so far only made sense for Earth models that want to honor a moho surface when overimposing a 3D crustal model on top of a mantle model, for example by putting CRUST1.0 on top. the adjustment then helps to tune the stretching and honoring of the element boundaries.

however, meshing for a model like EMC is mostly oblivious of moho variations and only requires some simple mesh gridding. in that case, the parameter has no effect - no matter what USE_LOCAL_MESH is set to - as there is no 3D moho variation to honor. i think to see a change, you could try with models like S40RTS, s362ani, sgloberani_aniso, spiral, and so on, anything that uses a 3D crustal model.

lsawade commented 4 months ago

Hi Lucas, try changing the USE_LOCAL_MESH flag to false. Also, take a look at these slides on LOCAL_MESH true vs false, they show power of local_mesh flag. I hope this helps.

The slides are great!

however, meshing for a model like EMC is mostly oblivious of moho variations and only requires some simple mesh gridding. in that case, the parameter has no effect - no matter what USE_LOCAL_MESH is set to - as there is no 3D moho variation to honor.

I see. So given @Evans-Onyango's slides, the best way to use local_mesh is working around the prescribed 40km Moho and setup appropriate doubling layers, to optimize execution speed without loss of fidelity. Just FYI, I have run the various local_mesh setups, and compared the waveforms to global PREM, and 1 chunk PREM automatic setups, waveforms look identical. Phew.

Feel free to close, since I just misunderstood the Par_file comment!