Tensile stresses on a fault and rate and state friction

Hi Brad,

I am looking to know how PyLith handles tensile stresses at a fault with rate and state friction. In equation 6.69 of the manual it says that shear tractions is T_f = 0 when the normal traction is T_n > 0 (Tensile stress).

However, looking at the rate and state implementation I see that when T_n > 0 we have T_f = T_c, where T_c is cohesion. I found this information on line 337 of the file RateStateAgeing.cc under libsrc/friction.

Could you please comment on what is the precise behavior of rate and state friction when the fault is under tensile stresses ?

Thank you,

The FaultCohesiveDyn object has ultimate control of the constitutive behavior. The friction model yields the fault traction associated with the friction model, and the fault object can adjust the traction value based on more information (fault in tension and opening). See for example, FaultCohesiveDyn::_constrainSolnSpace2D() in libsrc/pylith/faults/FaultCohesiveDyn.cc. The bottom line is that code does follow what the manual says.

The code is messier than it needs to be and we will have a much cleaner implementation once we get fault constitutive behavior updated for the multiphysics formulation.


Thank you so much for the reply. I have a follow up question on this. I am trying to understand in depth this problem. When you say that:

The bottom line is that code does follow what the manual says

Are you referring to the following lines (line 2372 and 2373 at the end of the method pylith::faults::FaultCohesiveDyn::_constrainSolnSpace2D):

 } else {
        // if in tension, then traction is zero.
        (*dTractionTpdt)[0] = -tractionTpdt[0];
        (*dTractionTpdt)[1] = -tractionTpdt[1];
    } // else

Reading _constrainSolnSpace2D, I am under the impression that tractionTpdt contains the absolute values of shear and normal stresses (see for example lines 2313 and 2314 in the same method). I don’t understand how the shear traction would be zero as in the manual. Could you provide further details on this ? Thanks !

The variable tractionTpdt holds the proposed solution for the fault traction at t+dt, so by setting the traction change (dTractionTpdt) relative to the current proposed solution, to the same value with the opposite sign with result in a fault traction of zero at t+dt.

1 Like

Hi Brad,

Thanks for the reply. I think I understood now. Thanks !