Problem with static friction of multiple through-going faults

Hello, CIG team!
I’m using Pylith 2.2.2 to model static friction of faults within a 3D mesh. I’m trying to calculate slip rates with zero fault friction. I want the whole fault to slip, so i don’t specify any buries edge of fault. I create two 3D models: one with a single through-going fault (“klf”) and another with two through-going faults (“klf” and “gyf”). I apply the same velocity boundary condition on the vertical boundaries for both models. The model with single fault “klf” can run successfully, but when i use the two-faults model to calculate slip rates of these faults, a “Fault opening with nonzero traction” error happens.

In addition, when using the two-fault model to calculate the slip rate for a single fault (ps: only specify a single fault in pylithapp.timedependent.interfaces), I find that the model with the “gyf” fault can run to completion, while the model with the “klf” fault fails with the “Fault opening with nonzero traction” error. Here are some figures and files about my model settings. Please give some advice. Thanks!

BHsim.cfg (3.6 KB)
pylithapp.cfg (6.9 KB)

My guess is that the nonplanar geometry is causing the fault opening.

It looks like you are using the following tolerances:

ksp_rtol = 1.0e-12
ksp_atol = 1.0e-8
snes_rtol = 1.0e-12
snes_atol = 1.0e-6
zero_tolerance = 1.0e-8
zero_tolerance_normal = 1.0e-6

The recommended settings are an KSP absolute tolerance to be smaller than your zero tolerances by at least an order of magnitude. Similarly, the SNES absolute tolerance should be at least an order of magnitude larger than your zero tolerances. You want your SNES absolute tolerance to be small enough so that the errors are much smaller than the deformation you are trying to resolve.