Olender / spyro-1

Acoustic wave propagators for seismic domains with application to full waveform inversion.
GNU General Public License v3.0
3 stars 0 forks source link

Issue 0043 adding fwi #46

Closed Olender closed 4 months ago

Olender commented 5 months ago

It adds FWI functionality to the main, based on Scipy. It still needs to be tested with ROL. It also adds the capability to mask undesired PML pads on the gradient. This mask can be used on any function in the function space (or in a DG0 space in the mesh) and might be helpful for other features. Therefore, I defined it in utils.

codecov-commenter commented 5 months ago

Codecov Report

Attention: Patch coverage is 86.57407% with 29 lines in your changes missing coverage. Please review.

Project coverage is 82.02%. Comparing base (a1b1fc7) to head (243df41).

Files Patch % Lines
spyro/solvers/inversion.py 68.96% 18 Missing :warning:
spyro/solvers/backward_time_integration.py 94.52% 4 Missing :warning:
spyro/utils/utils.py 93.44% 4 Missing :warning:
spyro/solvers/acoustic_wave.py 66.66% 2 Missing :warning:
...o/solvers/acoustic_solver_construction_with_pml.py 50.00% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #46 +/- ## ========================================== + Coverage 80.46% 82.02% +1.56% ========================================== Files 47 47 Lines 3173 3361 +188 ========================================== + Hits 2553 2757 +204 + Misses 620 604 -16 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Olender commented 5 months ago

I think I am going to increase coverage a bit before merging

Olender commented 5 months ago

I added even more tests to improve coverage (focused on the ROL dependent inversion). They pass locally, but I am still trying to install pyROL in the runner.

Ig-dolci commented 4 months ago

It adds FWI functionality to the main, based on Scipy. It still needs to be tested with ROL. It also adds the capability to mask undesired PML pads on the gradient. This mask can be used on any function in the function space (or in a DG0 space in the mesh) and might be helpful for other features. Therefore, I defined it in utils.

Sobre o ROL, sugiro tentar outro pacote de otimização. O ROL está sem manutenção e pode ser difícil usá-lo. FYI: o Pyadjoint incorporará o TAO do PETSc em poucos dias, que parece ser uma ótima opção para o Spyro. Pretendo refatorar a função minimize do Pyadjoint para possibilitar o uso com o TAO.

SouzaEM commented 4 months ago

Sobre o ROL, sugiro tentar outro pacote de otimização. O ROL está sem manutenção e pode ser difícil usá-lo. FYI: o Pyadjoint incorporará o TAO do PETSc em poucos dias, que parece ser uma ótima opção para o Spyro. Pretendo refatorar a função minimize do Pyadjoint para possibilitar o uso com o TAO.

Eu acho uma boa ideia usar o TAO. Já vi algumas palestras em conferências de pesquisadores utilizando esse toolkit e por estar relacionado ao PETSc deve ter suporte no longo prazo.

@Olender Se precisar de ajuda com integração do TAO no spyro eu posso ficar responsável por essa parte.

Olender commented 4 months ago

It adds FWI functionality to the main, based on Scipy. It still needs to be tested with ROL. It also adds the capability to mask undesired PML pads on the gradient. This mask can be used on any function in the function space (or in a DG0 space in the mesh) and might be helpful for other features. Therefore, I defined it in utils.

Sobre o ROL, sugiro tentar outro pacote de otimização. O ROL está sem manutenção e pode ser difícil usá-lo. FYI: o Pyadjoint incorporará o TAO do PETSc em poucos dias, que parece ser uma ótima opção para o Spyro. Pretendo refatorar a função minimize do Pyadjoint para possibilitar o uso com o TAO.

Entendi suas preocupações com o ROL, especialmente considerando a falta de manutenção. Adicionei a opção de uso do ROL junto de uma soft dependency, e agora vou adicionar uma mensagem avisando que essa funcionalidade está deprecated. A notícia sobre o Pyadjoint incorporar o TAO do PETSc é promissora e será uma alternativa robusta para o Spyro.

Olender commented 4 months ago

Sobre o ROL, sugiro tentar outro pacote de otimização. O ROL está sem manutenção e pode ser difícil usá-lo. FYI: o Pyadjoint incorporará o TAO do PETSc em poucos dias, que parece ser uma ótima opção para o Spyro. Pretendo refatorar a função minimize do Pyadjoint para possibilitar o uso com o TAO.

Eu acho uma boa ideia usar o TAO. Já vi algumas palestras em conferências de pesquisadores utilizando esse toolkit e por estar relacionado ao PETSc deve ter suporte no longo prazo.

@Olender Se precisar de ajuda com integração do TAO no spyro eu posso ficar responsável por essa parte.

Perfeito

Olender commented 4 months ago

I ended up doing one more commit to revert the name change in the read-me (so it is back to spyro), and to remove the link to the demos. As soon as the tests pass I will merge and submit a PR to the main repository.