-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
slip output inconsistency #17
Comments
The RK45 (4th order) method that is currently implemented in QDYN can perform a single integration step from |
A possible fix is to add a new variable "slip" and the following equation to the ODE system: |
That would work, though I'm not sure if this approach exerts any undesired controls on the step size. In the RK45 solver, the step size is determined by the maximum over all vector elements of the difference between the 4th and 5th order approximations, so we may be paying a computational price for resolving the slip within the specified tolerance. Before diving into the code, I would suggest waiting for my pull requests for v. 2.0 to get merged into the |
Isn't it true that with the full history, full accuracy V and DT, we can calculate high order D with proper RK/BS weights with existing nodes of V? It will be one order less acuurate than V, explicit rather than implicit, but still should be way more accurate than current 1st order so might be able to mitigate the D output artifact we found during the benchmark. There will also be (almost) no increase in computation. |
Yes, in the case of the RK solver, if you store the intermediate outputs of |
Coefficients depend on the method. The strategy I proposed has the advantage that it applies to all methods (RK, BS, etc) and does not require storing additional "intermediate outputs". I think it's more developer-friendly (any "blackbox" ODE solver can be used). I don't expect it to affect the time step, but that's hard to tell without trying it. |
All right. Since it is easy enough to simply append another vector to the ODE input vector, we can just try it and see how much it affects performance. Since the stiffest part of the ODE is in the computation of I will execute this fix once I have tested the changes to |
I am thinking of adding the functionality of outputting off-fault observation points at surface for 3D models so we can get slip / slip rate at surface that can e compared with observation. |
No need to add ground displacements/velocities in the ODE solver. Their computation is a post-processing step. |
I've moved the slip integration into the main ODE routine (#38), which solves this issue |
- (#36) New Jupyter notebooks have been added that cover spring-block simulations using the CNS model. - (#37) Fixed a small bug in `pyqdyn.py` which caused the grid nodes to be slightly offset (by half the grid spacing). - (#38) Previously slip was computed by forward Euler integration of slip rate, which has a (much) lower-order accuracy than the implemented ODE solvers. To prevent the accumulation of discrepancies in the slip output for long-term simulations (see #17), the slip computation was incorporated within the ODE solver routine. - (#38) The low precision output of the simulation time (in time series output) caused round-off issues for long-term simulations. The Python wrapper (`pyqdyn.py`) now uses higher precision time values read from a separate output file (`fort.121`).
Dear QDYN developers,
During the first SCEC-SEAS benchmark practice we discovered the QDYN slip output is updated with only first order accuracy by outputting v*dt instead of the high-order RK/BS method as used in computation.
It is only a output issue and does not affect the actual computation, yet it better be fixed.
Yingdi
The text was updated successfully, but these errors were encountered: