Step 6: Error 3#
Error Message#
1$ pylith step06_twofaults.cfg
2
3# Output
4>> software/pylith-debug/lib/python3.12/site-packages/pylith/apps/PyLithApp.py:76:main
5-- info (application-flow)
6-- Running on 1 process(es).
7>> src/cig/pylith/libsrc/pylith/utils/PetscOptions.cc:251:static void pylith::utils::_PetscOptions::write(pythia::journal::info_t &, const char *, const PetscOptions &)
8-- info (application-flow)
9-- Setting PETSc options:
10 dm_reorder_section = true
11 dm_reorder_section_type = cohesive
12 ksp_atol = 1.0e-7
13 ksp_converged_reason = true
14 ksp_error_if_not_converged = true
15 ksp_gmres_restart = 100
16 ksp_guess_pod_size = 8
17 ksp_guess_type = pod
18 ksp_rtol = 1.0e-14
19 mg_fine_ksp_max_it = 5
20 mg_fine_pc_type = vpbjacobi
21 pc_type = gamg
22 snes_atol = 5.0e-7
23 snes_converged_reason = true
24 snes_error_if_not_converged = true
25 snes_monitor = true
26 snes_rtol = 1.0e-14
27 ts_error_if_step_fails = true
28 ts_exact_final_time = matchstep
29 ts_monitor = true
30 ts_type = beuler
31 viewer_hdf5_collective = true
32>> src/cig/pylith/libsrc/pylith/meshio/MeshIOPetsc.cc:205:virtual void pylith::meshio::MeshIOPetsc::_read()
33-- info (application-flow)
34-- Component 'meshiopetsc.reader': Reading finite-element mesh from 'mesh_tri.msh'.
35>> src/cig/pylith/libsrc/pylith/meshio/MeshIO.cc:76:void pylith::meshio::MeshIO::read(pylith::topology::Mesh *, const bool)
36-- info (application-flow)
37-- Component 'meshiopetsc.reader': Domain bounding box:
38 (-100000, 100000)
39 (-100000, 0)
40>> src/cig/pylith/libsrc/pylith/initializers/MeshInsertInterfaces.cc:51:virtual pylith::topology::Mesh *pylith::initializers::MeshInsertInterfaces::run(pylith::topology::Mesh *, const pylith::problems::Problem &)
41-- info (application-flow)
42-- Inserting cohesive cells.
43>> src/cig/pylith/libsrc/pylith/problems/TimeDependent.cc:316:virtual void pylith::problems::TimeDependent::verifyConfiguration() const
44-- info (application-flow)
45-- Component 'timedependent.problem': Verifying problem configuration.
46>> src/cig/pylith/libsrc/pylith/topology/FieldOps.cc:224:static void pylith::topology::FieldOps::checkSubfieldsExist(const pylith::string_vector &, const std::string &, const pylith::topology::Field &)
47-- error (user-input)
48-- Could not find 'lagrange_multiplier_fault' in domain solution field. Field contains: 'displacement'; the missing fields are required for interface 'FaultCohesiveKin'.
49Fatal error. Calling MPI_Abort() to abort PyLith application.
50Traceback (most recent call last):
51 File "software/pylith-debug/lib/python3.12/site-packages/pylith/apps/PetscApplication.py", line 55, in onComputeNodes
52 self.main(*args, **kwds)
53 File "software/pylith-debug/lib/python3.12/site-packages/pylith/apps/PyLithApp.py", line 84, in main
54 self.problem.verifyConfiguration()
55 File "software/pylith-debug/lib/python3.12/site-packages/pylith/problems/Problem.py", line 206, in verifyConfiguration
56 ModuleProblem.verifyConfiguration(self)
57 File "software/pylith-debug/lib/python3.12/site-packages/pylith/problems/problems.py", line 162, in verifyConfiguration
58 return _problems.Problem_verifyConfiguration(self)
59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
60RuntimeError: Could not find 'lagrange_multiplier_fault' in domain solution field. Field contains: 'displacement'; the missing fields are required for interface 'FaultCohesiveKin'.
61C++ traceback (8 frames):
62 [0] 3 libpylith.0.dylib 0x0000000108002e40 _ZN6pylith10ValueErrorCI1NS_5ErrorEERKNS_12ErrorMessageE + 36
63 [1] 4 libpylith.0.dylib 0x000000010824f548 _ZN6pylith8topology8FieldOps19checkSubfieldsExistERKNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEERKS9_RKNS0_5FieldE + 1212
64 [2] 5 libpylith.0.dylib 0x000000010803dc14 _ZNK6pylith6faults16FaultCohesiveKin19verifyConfigurationERKNS_8topology5FieldE + 648
65 [3] 6 libpylith.0.dylib 0x00000001081d8068 _ZNK6pylith8problems7Problem19verifyConfigurationEv + 1024
66 [4] 7 libpylith.0.dylib 0x00000001081e8f4c _ZNK6pylith8problems13TimeDependent19verifyConfigurationEv + 548
67 [5] 8 _problems.so 0x000000010895e218 _ZL33_wrap_Problem_verifyConfigurationP7_objectS0_ + 216
68 [6] 42 mpinemesis 0x0000000100b91d70 main + 616
69 [7] 43 dyld 0x0000000197e0eb98 start + 6076
70
71Abort(-1) on node 0 (rank 0 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, -1) - process 0
72software/pylith-debug/bin/nemesis: mpiexec: exit 255
73software/pylith-debug/bin/pylith: software/pylith-debug/bin/nemesis: exit 1
Troubleshooting Strategy#
After the Python Traceback, we see the error message on lines 64-65.
The faults check to make sure the solution field contains the necessary subfields, and the fault cannot find the lagrange_multiplier_fault subfield.
The easiest way to diagnose an error like this is to view the JSON file automatically generated by PyLith; it contains all of the parameters, including any defaults used.
We point our web browser to https://geodynamics.github.io/pylith_parameters/ and load the parameter file output/step06_twofaults-parameters.json.
In the left panel we navigate to the solution field and see that the subfields are set to pylith.problems.SolnDisp, so that the solution field only contains a single subfield, displacement.
We want the solution field to contain both displacement and lagrange_multiplier_fault.
Resolution#
[pylithapp.problem]
solution = pylith.problems.SolnDispLagrange