slimgroup / JUDI.jl

Julia Devito inversion.
https://slimgroup.github.io/JUDI.jl
MIT License
98 stars 32 forks source link

Including viscoacoustic operators #95

Closed nogueirapeterson closed 2 years ago

nogueirapeterson commented 2 years ago

Hi @mloubout, How are you? I hope you are well. First of all, congratulations on the work you have been developing in JUDI. The framework is very great!

@lauerami and I have been working in JUDI for a while. Now, we incorporate the viscoacoustic operators (forward, adjoint, Born, and gradient) into it. I hope you appreciate our contribution. Very soon I will do more PRs.

Regards, Peterson Nogueira

mloubout commented 2 years ago

Hi @nogueirapeterson. This is amazing thanks a lot for the contribution. I'll have a look and get back to you for updates/compat and I'll be happy to help with any change needed.

Super cool!!!!!

nogueirapeterson commented 2 years ago

Yes, super cool! The work was hard. We were new to Julia land. But in the end reward! We are impressed with how JUDI makes the application (FWI, LSRTM) easier.

rafaelorozco commented 2 years ago

Wow, this is such a helpful and timely addition! I work on medical images and currently ignore attenuation losses. These operators will be helpful to make my simulations more realistic.

Thank you so much for the contribution! I will try to help in the PR process as much as I can.

nogueirapeterson commented 2 years ago

Yes, @rafaelorozco . They are quite useful in the medical imaging field as well. These operators are second-order and based on the SLS rheological model. I am available to provide you with any clarification regarding this implementation.

Although equations based on the SLS model are the best in physical terms, I also implemented viscoacoustic equations (forward and adjoint) based on the Kelvin-Voigt (ren_1st_order / ren_2nd_order) and Maxwell (deng_1st_order / deng_2nd_order) rheological model on Devito (https://github.com /devitocodes/devito/blob/master/examples/seismic/viscoacoustic/operators.py).

mloubout commented 2 years ago

needs rebase on master too

nogueirapeterson commented 2 years ago

Concerning the DFT, we already included it in our case and it seems fine.

Another point is concerning the boundary effect that I mentioned in your PR in Devito…should I keep solve implementation even with strong boundary effects?

mloubout commented 2 years ago

Sorry for delay, will get back to you after SEG deadline

nogueirapeterson commented 2 years ago

@mloubout I did the rebase, but we still change the tests files. I'll let you know when everything is ok.

nogueirapeterson commented 2 years ago

@mloubout sorry for the delay. We did the rebase and fixed the conflicts. I think that is all ready for you to take a look at.

mloubout commented 2 years ago

Great will have a look asap. Thanks

codecov[bot] commented 2 years ago

Codecov Report

Merging #95 (1ed1f21) into master (cada5b3) will decrease coverage by 4.96%. The diff coverage is 70.00%.

@@            Coverage Diff             @@
##           master      #95      +/-   ##
==========================================
- Coverage   85.12%   80.16%   -4.97%     
==========================================
  Files          30       30              
  Lines        2346     2344       -2     
==========================================
- Hits         1997     1879     -118     
- Misses        349      465     +116     
Impacted Files Coverage Δ
...rc/TimeModeling/Modeling/lsrtm_objective_serial.jl 0.00% <0.00%> (-78.58%) :arrow_down:
src/TimeModeling/Modeling/twri_objective_serial.jl 0.00% <ø> (ø)
src/TimeModeling/Utils/auxiliaryFunctions.jl 80.20% <50.00%> (-2.69%) :arrow_down:
src/TimeModeling/Modeling/python_interface.jl 75.00% <70.00%> (-16.08%) :arrow_down:
src/TimeModeling/Modeling/fwi_objective_serial.jl 95.45% <100.00%> (+7.45%) :arrow_up:
src/TimeModeling/Types/ModelStructure.jl 87.31% <100.00%> (+0.19%) :arrow_up:
src/TimeModeling/Types/OptionsStructure.jl 100.00% <100.00%> (ø)
...TimeModeling/LinearOperators/judiExtendedSource.jl 18.18% <0.00%> (-60.61%) :arrow_down:
...ling/LinearOperators/judiJacobianExtendedSource.jl 66.66% <0.00%> (-29.17%) :arrow_down:
... and 13 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update cada5b3...1ed1f21. Read the comment docs.

nogueirapeterson commented 2 years ago

@mloubout we reviewed the last suggestions/corrections. Below is the pending test list. Thanks for your patience.

file: test_all_options.jl

Testing isic opt = Options(sum_padding=true, free_surface=parsed_args["fs"], isic=true)

Testing subsampling opt = Options(sum_padding=true, free_surface=parsed_args["fs"], subsampling_factor=4)

Testing isic+dft opt = Options(sum_padding=true, free_surface=parsed_args["fs"], isic=true, frequencies=[2.5, 4.5])

file: test_jacobian_extended.jl

mloubout commented 2 years ago

Sounds great. I'll try to help out this week to get this merged since I would prefer merging this first because my pending one would be a pain to rebase for you

mloubout commented 2 years ago

@nogueirapeterson I pushed a commit to the PR if you don't mind. It's mostly small changes here and there and should now support all the options (except freesurface) including extended jacobian case. I made some small change to the PDE (I added the link to paper) so that it passes adjoint better. It's still the correct PDE but feel free to check you still get the data correctly.

mloubout commented 2 years ago

Should be GTG (and part of CI) now. Let me know if you happy with my change and I'll merge is as soon as CI is green

nogueirapeterson commented 2 years ago

Very nice @mloubout ! I understand the changes you made to the equations. Thanks a lot for the changes and support. I am very happy about these contributions! I'm really enjoying the JUDI.

My road map on JUDI is:

What do you think? Great for you? Thank you so much again!

mloubout commented 2 years ago

Sounds like a good plan. Elastic would be great.

Still figuring out few failing tests but will merge this soon

nogueirapeterson commented 2 years ago

Thanks a lot for the merge!

mloubout commented 2 years ago

Thanks a lot for the super nice contribution