Dear Brad,
Thank you!
Are there any limits on setting the reference friction level for rate-and state friction (like with regard to zero_tolerance or friction.linear_slip_rate) or is it just a number that goes into the equation for updating mu and theta?
Also could you please have a look at my tolerances and tell me if it looks correct?
The only two constraints I found in the manual are: zero_tolerance should be larger than absolute tolerance in KSP solves and friction.linear_slip_rate should be about one order of magnitude larger than absolute tolerance in solve.
I would really like to decrease the zero_tolerance to get weakening for smaller slip rates, but it already takes forever to converge with these values.
Am I doing something wrong?
The simulation is quasistatic with dynamic rupture implementation.
----------------------------------------------------------------------
faults
----------------------------------------------------------------------
[pylithapp.timedependent.interfaces]
Change fault to dynamic fault interface.
fault = pylith.faults.FaultCohesiveDyn
[pylithapp.timedependent.interfaces.fault]
zero_tolerance = 1.0e-8
The label corresponds to the name of the nodeset in CUBIT.
label = fault
edge = fault_edge
We must define the quadrature information for fault cells.
The fault cells are 1D (surface).
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 1
Use rate- and state-friction with the ageing law for evolution of
the state variable.
friction = pylith.friction.RateStateAgeing
friction.label = Rate and state
friction.linear_slip_rate = 1.0e-6
friction.db_properties = spatialdata.spatialdb.SimpleDB
friction.db_properties.label = Rate State Ageing
friction.db_properties.iohandler.filename = spatialdb/2_v6_friction_rate_and_state_26.25_middle_0.5.spatialdb
[pylithapp.timedependent.interfaces.fault]
Set spatial database for the initial value of the state variable.
friction.db_initial_state = spatialdata.spatialdb.UniformDB
friction.db_initial_state.label = Rate State Ageing State
friction.db_initial_state.values = [state-variable]
theta_ss = characteristic_slip_dist / reference_slip_rate
friction.db_initial_state.data = [0.5*s]
----------------------------------------------------------------------
PETSc settings
----------------------------------------------------------------------
NOTE: There are additional settings specific to fault friction.
[pylithapp.petsc]
Set the solver options.
[pylithapp.petsc]
malloc_dump =
Preconditioner settings.
pc_type = asm
sub_pc_factor_shift_type = nonzero
#pc_type = lu
#pc_factor_mat_solver_type = umfpack
Convergence parameters.
ksp_rtol = 1.0e-12
ksp_atol = 5.0e-9
ksp_max_it = 3000
ksp_gmres_restart = 50
Linear solver monitoring options.
ksp_monitor = true
#ksp_view = true
ksp_converged_reason = true
ksp_error_if_not_converged = true
Nonlinear convergence parameters.
snes_rtol = 1.0e-12
snes_atol = 1.0e-7
snes_max_it = 3000
Nonlinear solver monitoring options.
snes_monitor = true
snes_linesearch_monitor = true
#snes_view = true
snes_converged_reason = true
snes_error_if_not_converged = true
PETSc summary – useful for performance information.
log_summary = true
Uncomment to launch gdb when starting PyLith.
start_in_debugger = true
Friction sensitivity solve used to compute the increment in slip
associated with changes in the Lagrange multiplier imposed by the
fault constitutive model.
friction_pc_type = asm
friction_sub_pc_factor_shift_type = nonzero
friction_ksp_max_it = 50
friction_ksp_gmres_restart = 30
Uncomment to view details of friction sensitivity solve.
friction_ksp_monitor = true
friction_ksp_view = true
friction_ksp_converged_reason = true
And the friction db values are:
#SPATIAL.ascii 1
SimpleDB {
num-values = 6
value-names = reference-friction-coefficient reference-slip-rate characteristic-slip-distance constitutive-parameter-a constitutive-parameter-b cohesion
value-units = none m/s m none none MPa
num-locs = 3
data-dim = 1 // locations form a line
space-dim = 2
cs-data = cartesian {
to-meters = 1.0 // specify coordinates in m
space-dim = 2
}
}
// Columns are
// (1) x coordinate (m)
// (2) y coordinate (m)
// (3) reference-friction-coefficient (none)
// (4) reference-slip-rate (m/s)
// (5) characteristic-slip-distance (m)
// (6) constitutive-parameter-a (none)
// (7) constitutive-parameter-b (none)
// (8) cohesion (MPa)
-0.1 0.0 0.6145 2e-4 0.2047e-5 0.0029 0.0043 0.0
0.0 0.0 0.6 2e-4 0.2047e-5 1e-16 1e-16 0.0
0.1 0.0 0.6145 2e-4 0.2047e-5 0.0029 0.0043 0.0
Thanks!