SPECFEM / specfem2d

SPECFEM2D simulates forward and adjoint seismic wave propagation in two-dimensional acoustic, (an)elastic, poroelastic or coupled acoustic-(an)elastic-poroelastic media, with Convolution PML absorbing conditions.
GNU General Public License v3.0
202 stars 146 forks source link

Large sensitivity kernel amplitudes at beginning of PML #1004

Open ar4 opened 6 years ago

ar4 commented 6 years ago

I created the Vp sensitivity kernel using a simple model (setup attached), and with the forward receiver amplitudes used as the adjoint sources. The sensitivity kernel amplitudes are very high on the border where the PML starts, particularly along the top and right boundaries (possibly related to where the source/receivers are). A picture is attached. Are these high amplitudes expected? alpha_kernel setup.zip

komatits commented 6 years ago

Dear Alan,

Since the fields are meaningless (from a physical point of view) inside the PML layers, I think it is safer to mute the PMLs before computing the kernels, i.e. consider that they are zero inside all the PMLs.

Best regards, Dimitri.

On 09/30/2018 07:37 PM, Alan Richardson wrote:

I created the Vp sensitivity kernel using a simple model (setup attached), and with the forward receiver amplitudes used as the adjoint sources. The sensitivity kernel amplitudes are very high on the border where the PML starts, particularly along the top and right boundaries (possibly related to where the source/receivers are). A picture is attached. Are these high amplitudes expected? alpha_kernel https://user-images.githubusercontent.com/10000682/46260530-11c9f780-c4df-11e8-9256-c733d34f7558.png setup.zip https://github.com/geodynamics/specfem2d/files/2431799/setup.zip

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/geodynamics/specfem2d/issues/1004, or mute the thread https://github.com/notifications/unsubscribe-auth/AFjDKbNFK6eJ8K6zalktyaLdLMThJAthks5ugQF2gaJpZM4XBEaX.

-- Dimitri Komatitsch, CNRS Research Director (DR CNRS) Laboratory of Mechanics and Acoustics, Marseille, France http://komatitsch.free.fr

ar4 commented 6 years ago

Dear Dimitri,

Thank you for the reply on a Sunday night ;-). I certainly agree that the sensitivity kernels inside the PML are meaningless, but, unless I have made a mistake, it seems to me that large values are occurring one cell inside the real model/non PML area. I will check this again tomorrow to be sure. Even if it is the case, however, I suppose I could just mute both the PML and one cell inside the model.

-Alan

ar4 commented 6 years ago

This plot shows the Vp sensitivity kernel amplitudes at the top of the domain, in the horizontal middle. The 15th and 16th cells have high amplitudes. Since I used the default 3 element PML width, I believe the 15th cell is the last cell of the PML, and the 16th cell is the first cell in the non-PML region. Is that correct? If this behaviour is expected, I will just mute the problem cells, but I wanted to make sure that I am not doing something incorrect. top_amps

komatits commented 6 years ago

Dear Alan,

Since PML is mathematically perfectly matched (before discretization and for an infinite PML; not true for finite size ones and after discretization, but still very good), that should not happen I think. Probably a numerical instability that develops in the PML (all PML models are weakly unstable, i.e. unstable at long propagation times; this is unrelated to SPECFEM, that's an unfortunate property of mathematical PMLs).

Does your forward run blow up if you let it run longer?

Best wishes, Dimitri.

On 10/01/2018 12:36 PM, Alan Richardson wrote:

This plot shows the Vp sensitivity kernel amplitudes at the top of the domain, in the horizontal middle. The 15th and 16th cells have high amplitudes. Since I used the default 3 element PML width, I believe the 15th cell is the last cell of the PML, and the 16th cell is the first cell in the non-PML region. Is that correct? If this behaviour is expected, I will just mute the problem cells, but I wanted to make sure that I am not doing something incorrect. top_amps https://user-images.githubusercontent.com/10000682/46283799-73d13e00-c56d-11e8-861d-80152ddc87c4.png

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/geodynamics/specfem2d/issues/1004#issuecomment-425862215, or mute the thread https://github.com/notifications/unsubscribe-auth/AFjDKSrwVwij4EzBS3OTYnSbTaCCYQ95ks5ugfAZgaJpZM4XBEaX.

-- Dimitri Komatitsch, CNRS Research Director (DR CNRS) Laboratory of Mechanics and Acoustics, Marseille, France http://komatitsch.free.fr

ar4 commented 6 years ago

Dear Dimitri,

I let the forward modelling run for 16000 steps (16s), and there is no sign of it blowing up. Should I try running it for even longer?

-Alan

komatits commented 6 years ago

Dear Alan,

You can try with 100,000 and with OUTPUT_ENERGY set to true in the Par_file, and NTSTEP_BETWEEN_OUTPUT_ENERGY = 10.

When the run finishes (if it does not blow up), type

gnuplot plot_energy.gnu

and you will see if the energy curve looks like the three curves in Fig 8 of http://komatitsch.free.fr/preprints/CMES_CPML_2008_typos_fixed.pdf or like the fourth one, in which an instability develops.

Best wishes, Dimitri.

On 10/01/2018 06:16 PM, Alan Richardson wrote:

Dear Dimitri,

I let the forward modelling run for 16000 steps (16s), and there is no sign of it blowing up. Should I try running it for even longer?

-Alan

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/geodynamics/specfem2d/issues/1004#issuecomment-425968131, or mute the thread https://github.com/notifications/unsubscribe-auth/AFjDKb63jsElRe5gIl5iLtJvyRRkUTTTks5ugj_BgaJpZM4XBEaX.

-- Dimitri Komatitsch, CNRS Research Director (DR CNRS) Laboratory of Mechanics and Acoustics, Marseille, France http://komatitsch.free.fr

ar4 commented 6 years ago

Dear Dimitri,

Even after 100,000 steps, there still appears to be no instability.

energy

-Alan

ar4 commented 6 years ago

This was 100,000 steps of forward modeling. Perhaps, if PML instability is the problem, it occurs in the adjoint wavefield? Do you think it is worthwhile to test that?

komatits commented 6 years ago

Dear Alan,

That is excellent news!

Best regards, Dimitri.

On 10/02/2018 04:22 PM, Alan Richardson wrote:

Dear Dimitri,

Even after 100,000 steps, there still appears to be no instability.

energy https://user-images.githubusercontent.com/10000682/46354635-f3870780-c656-11e8-8967-c7843b4df188.png

-Alan

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/geodynamics/specfem2d/issues/1004#issuecomment-426292974, or mute the thread https://github.com/notifications/unsubscribe-auth/AFjDKRkMaPH6gFsFqH69DY2Y72pyZ7Pwks5ug3bCgaJpZM4XBEaX.

-- Dimitri Komatitsch, CNRS Research Director (DR CNRS) Laboratory of Mechanics and Acoustics, Marseille, France http://komatitsch.free.fr

komatits commented 6 years ago

Do you have attenuation in the forward run? (ATTENUATION set to .true.)

If so, you need to use UNDO_ATTENUATION in the context of adjoint runs, otherwise reverse time will be unstable (see http://komatitsch.free.fr/preprints/GJI_undo_attenuation_2016.pdf ).

If ATTENUATION is off, then I have no idea unfortunately.

Best, Dimitri.

On 10/02/2018 04:25 PM, Alan Richardson wrote:

This was 100,000 steps of forward modeling. Perhaps, if PML instability is the problem, it occurs in the adjoint wavefield? Do you think it is worthwhile to test that?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/geodynamics/specfem2d/issues/1004#issuecomment-426294064, or mute the thread https://github.com/notifications/unsubscribe-auth/AFjDKdpoV5gV-Olj9QJIDQ5WFWMbjF0uks5ug3djgaJpZM4XBEaX.

-- Dimitri Komatitsch, CNRS Research Director (DR CNRS) Laboratory of Mechanics and Acoustics, Marseille, France http://komatitsch.free.fr

ar4 commented 6 years ago

There is no attenuation. I have tried with UNDO_ATTENUATION_AND_OR_PML both true and false, with the same results. The entire setup, including the Par_file, is in the zip file that I attached to my first post. It is the simplest possible model, with almost no change from the default Par_file, so I am not sure what I could be doing wrong.