How to set up friction behavior and free creep on the same fault


I wonder how to assign slip-weakening frition behavior at shallow part of the subduction fault, and set the deep part of the same fault as free creep. I noticed that these two conditions seemed to work only in different types of fault interface condition (FaultCohesiveDyn and FaultCohesiveKin).The following is the content of my error and the corresponding part in cfg. Please tell me how to solve this problem.




interfaces = [fault_slabtop, fault_slabbot]

Set the type of fault interface condition.

fault_slabtop = pylith.faults.FaultCohesiveDyn
fault_slabbot = pylith.faults.FaultCohesiveKin

Slab top -------------------------------------------------------------

id = 100
label = fault_slabtop
edge = fault_slabtop_edge

We must define the quadrature information for fault cells.

The fault cells are 2D (surface).

quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 2

Velocity weakening Friction

friction = pylith.friction.SlipWeakening
friction.label = Slip weakening

Force healing after each time step, so weakening is confined to each

time step and is not carried over into subsequent time steps.

friction.force_healing = True

friction.db_properties = spatialdata.spatialdb.SimpleGridDB
friction.db_properties.label = Slip weakening
friction.db_properties.filename = spatialdb/fault_slabtop_slipweakening.spatialdb

Use the constant slip rate time function.

slip_function = pylith.faults.ConstRateSlipFn


slip_rate = spatialdata.spatialdb.SimpleGridDB
slip_rate.label = Slab top slip rate
slip_rate.filename = spatialdb/fault_slabtop_creep.spatialdb
slip_rate.query_type = linear

slip_time = spatialdata.spatialdb.UniformDB
slip_time.label = top slip time
slip_time.values = [slip-time] = [0.0*year]


writer = pylith.meshio.DataWriterHDF5
writer.filename = output/laterramp-fault-slabtop.h5
vertex_info_fields = [normal_dir, strike_dir, dip_dir, slip_time_rupture]
vertex_data_fields = [slip, slip_rate, traction]

PyLith does not currently support combining prescribed slip (implemented by FaultCohesiveKin) over one part of the fault and spontaneous rupture (friction, implemented by FaultCohesiveDyn) over another part of the fault.

Dear Aagard,

I try to set these two conditions on two faults(slabtop_1, slabtop_2), which make up the whole slabtop. I don’t know if it is feasible. And now there is a new error
"RuntimeError: Error occurred while adjusting topology to create cohesive cells for fault ‘fault_slabtop_2’.Error in topology of mesh associated with symmetry of adjacency information.".
I thought this might be related to the wrong burried edges of slabtop_1 and slabtop_2, but I did not find the problem. Here is my .exo file. (5.3 MB)

PyLith does not support breaking up a fault into two smaller faults without imposing a buried edge between the two smaller faults. Adding the buried edge will force zero slip on the buried edge between the two smaller faults, so that is not what you want to do. The solution is to have EITHER prescribed slip OR spontaneous rupture (fault friction) over the entire fault surface.

Dear Aagard,

I accepted your suggestion and tried to simulate spontaneous rupture on the fault according to examples /3d/subduction/step05.I modified and completed the .cfg. However, the convergence of nonlinear solutions is always poor and the error is reported as follow. I want to know whether step05 has been completed at present, if not, how can I improve the convergence for the nonliner solve?
Here is my modified step05.cfg and pyithapp.cfg. (2.6 MB)