Step 6: Error 6#

Error Message#

Listing 190 Error message 6 when running Step 6.#
 1$ pylith step06_twofaults.cfg
 2
 3# -- many lines omitted --
 4
 5 -- Solving problem.
 60 TS dt 0.01 time 0.
 7    0 SNES Function norm 2.001189838638e-02 
 8[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
 9[0]PETSC ERROR: Zero pivot in LU factorization: https://petsc.org/release/faq/#zeropivot
10[0]PETSC ERROR: Zero pivot row 78 value 1.11022e-16 tolerance 2.22045e-14
11# -- lines with PETSc configuration omitted --
12[0]PETSC ERROR: #1 MatPivotCheck_none() at /software/baagaard/petsc-dev/include/petsc/private/matimpl.h:802
13[0]PETSC ERROR: #2 MatPivotCheck() at /software/baagaard/petsc-dev/include/petsc/private/matimpl.h:821
14# -- many lines of PETSc stack omitted --
15[0]PETSC ERROR: #34 void pylith::problems::TimeDependent::deallocate()() at /home/baagaard/src/cig/pylith/libsrc/pylith/problems/TimeDependent.cc:92
16Traceback (most recent call last):
17  File "/software/baagaard/py38-venv/pylith-debug/lib/python3.8/site-packages/pylith/apps/PetscApplication.py", line 61, in onComputeNodes
18    self.main(*args, **kwds)
19  File "/software/baagaard/py38-venv/pylith-debug/lib/python3.8/site-packages/pylith/apps/PyLithApp.py", line 120, in main
20    self.problem.run(self)
21  File "/software/baagaard/py38-venv/pylith-debug/lib/python3.8/site-packages/pylith/problems/TimeDependent.py", line 141, in run
22    ModuleTimeDependent.solve(self)
23  File "/software/baagaard/py38-venv/pylith-debug/lib/python3.8/site-packages/pylith/problems/problems.py", line 223, in solve
24    return _problems.TimeDependent_solve(self)
25RuntimeError: Error detected while in PETSc function.

Troubleshooting Strategy#

PETSc encounters a zero pivot during the LU factorization. This suggests there is an error in how we setup the problem. We examine the parameters in step06_twofaults.cfg, and we do not find any obvious errors. We load the info files into ParaView to visualize their contents for errors. After loading step06_twofaults-fault_info.xmf and step06_twofaults-splay_info.xmf, we see that the faults cross each other as shown in Fig. 114. In step06_twofaults.cfg we see that the splay fault is listed first in the array of faults. The through-going fault (main fault) should be listed first.

Fig. 114 Incorrect geometry for the splay and main faults. The splay fault crosses the main fault instead of terminating where they intersect.#

Resolution#

Listing 191 Correct error in step06_twofaults.cfg.#
# Error
[pylithapp.problem]
interfaces = [splay, fault]

# Correct
[pylithapp.problem]
interfaces = [fault, splay]