Hello, CIG team and users!
I’m running a 3d-mesh model with a static friction fault by using Pylith 2.2.2. I apply velocity boundary conditions in east-west and north-south directions and fix the bottom boundary. I want to model the situations with full locking fault or full unlocking fault. So I set the friction coefficient to 1000000000 (approximate infinity) or 0 for the above situations. I also set the solver settings according to Chapter 6.4.5.2 in Pylith manual. Unfortunately, it was stuck after linear friction solve converged. The model can run when we remove the static friction fault. So it must be the static friction problem. I also test the influence of the normal traction on the fault. The results show that the problem persists regardless of the normal traction. The pictures show the fault nodes in 3d-mesh model and the stuck situation, respectively. The BHsim.cfg and pylithapp.cfg show as follows. Please give me some advice to solve the problem. Thanks!
###################BHsim.cfg################
[pylithapp]
[pylithapp.problem.formulation]
time_step = pylith.problems.TimeStepAdapt ;
[pylithapp.problem.formulation.time_step]
total_time = 100.0year
max_dt = 1year
adapt_skip = 10 ; Default value
stability_factor = 2
[pylithapp.timedependent]
###################################
[pylithapp.timedependent]
bc=[modelBC,bott]
[pylithapp.timedependent.implicit]
Set the output to an array of 2 output managers.
We will output the solution over the domain and the ground surface.
output = [domain,subdomain]
Set subdomain component to OutputSolnSubset (subset of domain).
output.subdomain = pylith.meshio.OutputSolnSubset
solver = pylith.problems.SolverNonlinear
#-----------------------------------------------------------------------
[pylithapp.timedependent.bc.modelBC]
bc_dof = [0,1]
label = modelBC
db_initial.label = Dirichlet BC on modelBC
db_rate = spatialdata.spatialdb.SimpleDB
db_rate.label = Dirichlet rate BC on modelBC
db_rate.iohandler.filename = spatialdb/modelBCdV.spatialdb
[pylithapp.timedependent.bc.bott]
bc_dof = [2]
label = bott
db_initial.label = Dirichlet BC on bott
----------------------------------------------------------------------
[pylithapp.timedependent]
interfaces=[lmsf]
Set the type of fault interface condition.
[pylithapp.timedependent.interfaces]
lmsf = pylith.faults.FaultCohesiveDyn
[pylithapp.timedependent.interfaces.lmsf]
zero_tolerance = 1.0e-7
zero_tolerance_normal=1.0e-9
label =lmsf
id=21
edge=lmsf_edge
id=22
friction = pylith.friction.StaticFriction
friction.label = static friction
friction.db_properties = spatialdata.spatialdb.UniformDB
friction.db_properties.label = static friction
friction.db_properties.values = [friction-coefficient, cohesion]
friction.db_properties.data = [1000000000, 0.0*Pa]
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 2
output
----------------------------------------------------------------------
[pylithapp.problem.formulation.output.domain]
writer.filename = output/CDstress.h5
Ground surface
[pylithapp.problem.formulation.output.subdomain]
writer.filename = output/Sgroundsurf.h5
----------------------------------------------------------------------
PETSc
----------------------------------------------------------------------
[pylithapp.petsc]
friction_pc_type = asm
friction_sub_pc_factor_shift_type = nonzero
friction_ksp_max_it = 25
friction_ksp_gmres_restart = 30
friction_ksp_converged_reason = true
###################BHsim.cfg################
###################Pylithapp.cfg##############
[pylithapp]
----------------------------------------------------------------------
launcher
----------------------------------------------------------------------
[pylithapp.launcher]
command = mpirun -np 2
----------------------------------------------------------------------
journal
----------------------------------------------------------------------
[pylithapp.journal.info]
timedependent = 1
implicit = 1
petsc = 1
solverlinear = 1
meshiocubit = 1
implicitelasticity = 1
faultcohesivekin = 1
fiatsimplex = 1
pylithapp = 1
materials = 1
----------------------------------------------------------------------
mesh_generator
----------------------------------------------------------------------
[pylithapp.mesh_generator]
reader = pylith.meshio.MeshIOCubit
[pylithapp.mesh_generator.reader]
filename = mesh/mesh_tet.exo
coordsys.space_dim = 3
----------------------------------------------------------------------
problem
----------------------------------------------------------------------
[pylithapp.timedependent]
dimension = 3
----------------------------------------------------------------------
materials
----------------------------------------------------------------------
[pylithapp.timedependent]
materials=[bh1,bh2,bh3,qq1,qq2,qq3,qt1,qt2,qt3,sc1,sc2,sc3]
[pylithapp.timedependent.materials]
bh1 = pylith.materials.ElasticIsotropic3D
bh2 = pylith.materials.MaxwellIsotropic3D
bh3 = pylith.materials.MaxwellIsotropic3D
qq1 = pylith.materials.ElasticIsotropic3D
qq2 = pylith.materials.MaxwellIsotropic3D
qq3 = pylith.materials.MaxwellIsotropic3D
qt1 = pylith.materials.ElasticIsotropic3D
qt2 = pylith.materials.MaxwellIsotropic3D
qt3 = pylith.materials.MaxwellIsotropic3D
sc1 = pylith.materials.ElasticIsotropic3D
sc2 = pylith.materials.MaxwellIsotropic3D
sc3 = pylith.materials.MaxwellIsotropic3D
Continental crust -----------------------------
[pylithapp.timedependent.materials.bh1]
label = bh1
id = 4
db_properties.label = bh1 properties
db_properties.iohandler.filename = spatialdb/bhup.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
[pylithapp.timedependent.materials.bh2]
label = bh2
id = 7
db_properties.label = bh2 properties
db_properties.iohandler.filename = spatialdb/bhlow.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.bh3]
label = bh3
id = 8
db_properties.label = bh3 properties
db_properties.iohandler.filename = spatialdb/bhmantle.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.sc1]
label = sc1
id = 3
db_properties.label = sc1 properties
db_properties.iohandler.filename = spatialdb/scup.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
[pylithapp.timedependent.materials.sc2]
label = sc2
id = 9
db_properties.label = sc2 properties
db_properties.iohandler.filename = spatialdb/sclow.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.sc3]
label = sc3
id = 10
db_properties.label = sc3 properties
db_properties.iohandler.filename = spatialdb/scmantle.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.qq1]
label = qq1
id = 2
db_properties.label = qq1 properties
db_properties.iohandler.filename = spatialdb/qqup.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
[pylithapp.timedependent.materials.qq2]
label = qq2
id = 11
db_properties.label = qq2 properties
db_properties.iohandler.filename = spatialdb/qqlow.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.qq3]
label = qq3
id = 12
db_properties.label = qq3 properties
db_properties.iohandler.filename = spatialdb/qqmantle.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
[pylithapp.timedependent.materials.qt1]
label = qt1
id = 1
db_properties.label = qt1 properties
db_properties.iohandler.filename = spatialdb/qtup.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
[pylithapp.timedependent.materials.qt2]
label = qt2
id = 5
db_properties.label = qt2 properties
db_properties.iohandler.filename = spatialdb/qtlow.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
[pylithapp.timedependent.materials.qt3]
label = qt3
id = 6
db_properties.label = qt3 properties
db_properties.iohandler.filename = spatialdb/qtmantle.spatialdb
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_info_fields = [density,mu,lambda,maxwell_time]
----------------------------------------------------------------------
output
----------------------------------------------------------------------
[pylithapp.timedependent.formulation]
output = [domain,subdomain]
output.subdomain = pylith.meshio.OutputSolnSubset
Domain
[pylithapp.problem.formulation.output.domain]
output_freq = time_step
time_step = 10*year
writer = pylith.meshio.DataWriterHDF5
vertex_data_fields = [displacement,velocity]
Ground surface
[pylithapp.problem.formulation.output.subdomain]
label = groundface ; Name of CUBIT nodeset for ground surface.
writer = pylith.meshio.DataWriterHDF5
vertex_data_fields = [displacement,velocity]
----------------------------------------------------------------------
PETSc
----------------------------------------------------------------------
Set the solver options.
[pylithapp.petsc]
Preconditioner settings.
pc_type = asm
sub_pc_factor_shift_type = nonzero
Convergence parameters.
ksp_rtol = 1.0e-20
ksp_atol = 1.0e-10
ksp_max_it = 1000
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 solver monitoring options.
snes_rtol = 1.0e-20
snes_atol = 1.0e-2
snes_max_it = 100
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_view = true
Uncomment to launch gdb when starting PyLith.
start_in_debugger = true
###################Pylithapp.cfg##############
Best,
Egg_chen