Nonzero traction error in spontaneous rupture model


I have modified step13 in hex8 (slip-weakening fault friction in a quasistatic problem) to build a spontaneous rupture model for my own fault. I have encountered an error regarding the tractions on the fault. The fault is planar with a fine mesh. Here’s what pylith is returning:

“terminating with uncaught exception of type std::runtime_error: WARNING! Fault opening with nonzero traction., v_fault: 1735, opening: 9.60479e-07, normal traction: -1.05722e-05”

I tried attaching the json file but I get an error saying “new users cannot upload attachments”. I can provide it via email if that would help solve the problem.

Thank you,


You need to adjust the solver tolerances. See the discussion of solver tolerances in the slides of the 2017 CDM tutorial 2-D Subduction Zone: Fault Friction.

Thank you, Brad.

I have tried using the tolerances recommended in the slides but continue to get the same error. I have also tried increasing the tolerances while respecting the suggestions in the tutorial (keeping ksp_atol and snes atol larger than zero_tolerance) with no luck. Increasing the tolerance of the zero_tolerance_normal to 10^-3 made it crash much later, yet it still ultimately brought up the same error.

Thank you for your help,

Solver tolerances of 10^-3 are almost surely too large for a reasonable solution. Can you post the .cfg files you are using when the solver tolerances are around 10^-8?

Note: You should keep the ksp_rtol and snes_rtol values at 10^-20

Hi Brad,

I have changed the tolerances to your recommended values (10^-20) and keep getting the same error. I get it with at least three different scripts. I attach the .cfg file for one of them (modified after step13 in hex8). I also attach the pylith.cfg file.



elastic_spontaneous.cfg (7.4 KB) pylithapp.cfg (2.6 KB)

You are using an absolute tolerance of 1.0e-20 for the KSP (linear) solve. This should be 1-2 orders of magnitude smaller than the SNES absolute tolerance (1.0e-9). So try something like ksp_atol = 1.0e-11.

I tried a range from 10^-6 to 10^-10 for the linear solver and got the same nonzero traction error

Please provide the entire log (everything that is normally written to the screen), including the error message.

pylith_log_error.txt (16.0 KB)
here it goes, thanks

The normal traction and opening are still quite small, so I would try increasing the zero_tolerance_normal to try to keep the fault closed. Sometimes small asymmetries result in very small amounts of fault opening that are difficult to avoid.

See examples/2d/subduction/step06.cfg for an example of how to set zero_tolerance_normal.

I would use something like

# Zero tolerance for locking fault (no slip). Must be larger than ksp tolerance.
zero_tolerance = 1.0e-8
zero_tolerance_normal = 1.0e-6

I followed the script on step06 and tried the values you suggested and others (while keeping values larger than ksp tolerance) but saw no difference. The updated log error is attached.

pylith_log_error.txt (16.0 KB)

Are the asymmetries a problem from the mesh? I have run other problems (both coseismic only and including post-seismic relaxation) on this mesh with no issues.

Hi @albarodriguez , did you solve this problem ? Could you comment a little on how did you fix it ? Thanks!

Hi Josimar,

Brad took a look at it and was able to figure out the issue. The buried edges of the fault were not specified and that is what was causing the ‘opening tractions’ error.