Dear Aagaard,
I encountered some issues while using PyLith 4.2.1 to simulate coseismic poroelastic changes and would like to seek your advice.
In my model, I defined a fault with dimensions of 100 km × 20 km within a 300 km × 300 km × 40 km domain and prescribed a 2 m dislocation on the fault. I used SolnDispPresTracStrainLagrange to investigate the coupled effects of coseismic deformation and pore-pressure diffusion.
However, during the second stage of the simulation, the calculation failed and produced an error. I have attached the model setup and error information for reference.
Best regards.
model.zip (111.2 KB)
We have found this error when the initial guess is not accurate. The workaround is to adjust the divergence tolerance for the linear solver:
[pylithapp.petsc]
# Increase divergence tolerance. Initial guess at second time step is not accurate.
ksp_divtol = 1.0e+6
This is discussed in Step2 of the magma-2d example.
Thanks for your reply. I adjusted the divergence tolerance, but the same errors still occur. The settings I used for this simulation are as follows:
[pylithapp.petsc]
ts_type = beuler
pc_type = fieldsplit
pc_fieldsplit_type = multiplicative
pc_fieldsplit_0_fields = 2
pc_fieldsplit_1_fields = 1
pc_fieldsplit_2_fields = 0
pc_fieldsplit_3_fields = 3
fieldsplit_trace_strain_pc_type = bjacobi
fieldsplit_pressure_pc_type = bjacobi
fieldsplit_displacement_pc_type = ml
fieldsplit_displacement_ksp_type = gmres
fieldsplit_displacement_mg_fine_pc_type = vpbjacobi
fieldsplit_lagrange_multiplier_fault_pc_type = jacobi
dm_reorder_section = True
dm_reorder_section_type = cohesive
snes_rtol = 1.0e-6
snes_atol = 1.0e-8
ksp_rtol = 1.0e-8
ksp_atol = 1.0e-10
snes_converged_reason = true
ksp_converged_reason = true
ksp_divtol = 1.0e+5
Under the same configuration, the simulation runs successfully for an elastic material model [step01 in model.zip]; however, it fails to converge when using a poroelastic formulation.
A couple options:
- Update to the new release (v5.0.0; we are doing a soft rollout for a workshop next week). We have improved the default solver settings and nondimensionalization.
- Increase
ksp_gmres_restart to avoid reduce how often GMRES orthogonalizes vectors against the previous ones using a Gram-Schmidt process.
[pylithapp.petsc]
# Try increasing to half the number of KSP iterations or even a bit larger
ksp_gmres_restart = 300