keurfonluu / evodcinv

Inversion of dispersion curves using Evolutionary Algorithms
BSD 3-Clause "New" or "Revised" License
77 stars 31 forks source link

Using Disba as a solver instead of legacy Fortran routines #2

Closed th-reb closed 4 years ago

th-reb commented 4 years ago
  1. Replace calls to the legacy Fortran routines with Disba API
  2. Unit conversion (m in km, density in g/cm^3)
  3. Choose between phase or group dispersion curves using the Disba wrapper

ISSUE: Love wave inversion fails without notice.

th-reb commented 4 years ago

Converted the example dataset. Example runs fast (~1 second) on Rayleigh waves and single CPU. Love inversion still fail for some reason.

MPI not working.

th-reb commented 4 years ago

@keurfonluu If you have time to look, what would be your advice for the MPI parallelization?

keurfonluu commented 4 years ago

Nice! Thanks for the PR.

For MPI, there shouldn't be too much to do since it is mostly handled by stochopy. The Python script should just prepare the communication and tells stochopy to run with MPI (as it is already done in the sample script). What isn't working?

th-reb commented 4 years ago

Nice! Thanks for the PR.

For MPI, there shouldn't be too much to do since it is mostly handled by stochopy. The Python script should just prepare the communication and tells stochopy to run with MPI (as it is already done in the sample script). What isn't working?

Indeed, it's working, thanks. I was doing a wrong mpiexec call...

th-reb commented 4 years ago

"Working" example added in 2915fbb. However, it is somewhat unstable for some reason. It can stuck randomly on a run in case of inadequate initialization. In this case, relaunching the script works fine.

Stille some work to do to fix this behaviour and the Love inversion, but I think it should be done in a new PR.