PETSC ERROR when use simulations in Pylith 4.1.3

Dear Sir,
I would like to ask a question regarding my use of poroelastic simulations in Pylith 4.1.3. When I use the no_faultzone_permeability3.spatialdb file for all materials, the simulation runs successfully. However, when I use the no_faultzone_permeability.spatialdb file for all materials, an error occurs, displaying the following message:
[0]: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Residual norm computed by GMRES recursion formula 16442.8 is far from the computed residual norm 41861.1 at restart, residual norm at start of cycle 97030.1
Could you please advise on how to resolve this issue? I found a reference in the manual mentioning an “edge” issue, but my simulation only involves blocks.
Additionally, I would like to know how to output stress, pressure, and other values on the fault surface in Pylith 4.1.3. The syntax seems to differ significantly from that in Pylith 2, and I have not yet found any relevant examples. I apologize for the inconvenience.
file.zip (1.6 MB)

Dear Baagaard, I encountered some issues while trying to export the values on the fault surface. Could you provide some guidance or reference?

Try using these solver settings (these will be the default in v4.2.0) for poroelasticity without a fault:

[pylithapp.petsc]
pc_type = fieldsplit
pc_fieldsplit_type = multiplicative
pc_fieldsplit_0_fields = 2
pc_fieldsplit_1_fields = 1
pc_fieldsplit_2_fields = 0

fieldsplit_trace_strain_pc_type = bjacobi
fieldsplit_pressure_pc_type = bjacobi

fieldsplit_displacement_pc_type = ml
fieldsplit_displacement_ksp_type = gmres

Information available on the fault surface is limited to values that are available on the fault. When prescribing slip, this includes the slip and the change in tractions. Note that PyLith v4.1.3 contains a fault orientation bug the gives erroneous results for the tractions. Refer to Fault orientation bug in PyLith v4.1.3 (and v4.0.0-v4.1.1) for more information.

If you want the traction and fluid pressure at the location where a fault is (without having the fault), then use the material output and compute the fault traction from the stress tensor, making use of the fault orientation. This will need to be done as part of the post processing, such as in a Python script.

Thank you very much. However, when I try to set up the fault surface and output the results, I encounter some issues. I’m not quite sure how to configure the fault surface ID in PyLith v4.1.3, and I don’t understand the differences in output on the surface compared to PyLith2. Are there any specific reference examples available?

And I’m still not quite sure why replacing no_faultzone_permeability.spatialdb results in the above PETSC ERROR. The solver I’m currently using is the same as the one you provided earlier.

Fault output

For information on specifying faults in PyLith v3 and later, I recommend the PyLith tutorials on YoutTube (for example, https://www.youtube.com/watch?v=fcHKL8PqFDk&list=PLNTb1ey7FFk7aaP7meQlevDqahYa-7S1h&index=3) and Horizontal Cross-Section of Strike-Slip Fault (2D) — PyLith 4.2.0dev documentation.

In PyLith v3 and later, in most cases you do not need to do as much for output. In examples/strikeslip-2d, we specify the fields we want output (we can select from slip, traction change, and any solution fields) in pylithapp.cfg:

# Output `slip` and the change in tractions on the fault.
observers.observer.data_fields = [slip, traction_change]

Poroelasticity solver error

Changing the material properties may be creating an ill-conditioned system due to the inconsistency between the material properties and the scales used for nondimensionalization. For a well-conditioned system for poroelasticity, the ratio of the nondimensional permeability to viscosity should be about 1. Assuming the stress and length scales are appropriate for your problem, then you would adjust the time scale so that the nondimensional permeability to viscosity ratio is about 1.

Thank you very much for your reply!