feat: Add option for automatic timestep computation in wave solvers
This PR add the possibility of compute automatically the timestep for wave propagation solvers.
How to use it?
- You add the correct switch in your
XML(timestepStabilityLimit=1) - You launch GEOS
- If the requested dt for the solver (
forceDt) is higher than the CFL condition limit, substeps are used to remain below the condition Also, an option is added to input source wavelets usingTableFunctions, with the optionsourceWaveletTableNamesThere also a routine inside the PR to be wrapped using Pygeosx
Would there be a way to specify a zero timestep (standing for automatic computation for the timestep) in the xml file, and reuse that time step automatically in the computation, without having to modify xmls and relaunch the code ?
Codecov Report
Attention: Patch coverage is 89.85507% with 28 lines in your changes missing coverage. Please review.
Please upload report for BASE (
develop@890c5e7). Learn more about missing BASE report. Report is 76 commits behind head on develop.
Additional details and impacted files
@@ Coverage Diff @@
## develop #2909 +/- ##
==========================================
Coverage ? 57.72%
==========================================
Files ? 1086
Lines ? 97519
Branches ? 0
==========================================
Hits ? 56294
Misses ? 41225
Partials ? 0
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
I have approved it but two things about this PR:
- please don't put PRs in the merge queue until they have all codeowners approvals.
- IMO, the idea of
forceDtis for the timestep size to be fixed. To let the solver adjust the timestep size one can just set a maxTiimestep size for the event instead of forcing it. So, I would argue that, if theforceDtis too large it's fine for the simulation to fail instead of substepping. I know that solver base sort of does this too but we have talked about removing it coz it is actually a lot easier to let theEventManagerbe the only object managing timestepping.