Contributing to PyLith# Coding Style General guidelines Formatting source files Error Checking C/C++ style Object Declaration Files Object Implementation Files Python style Git Workflow Keeping Your Fork in Sync with geodyamics/pylith Set the upstream repository Updating Your Local Branch To Match The Upstream Repository Creating a New Feature Branch Staging, Committing, and Pushing Changes Keeping a feature branch in sync with branch main Making Pull Requests Adding Remotes For Accessing Other PyLith Forks Rebuilding PETSc and PyLith Rebuilding PETSc Rebuilding PyLith Overview Updating your fork Makefiles Build Targets Code Layout Directory Structure Code Structure Legend for class diagrams Application Problem Physics and Finite-Element Objects Materials Boundary Conditions Interior Interfaces (Faults) Mesh Importing Output PyLith Application Flow Time-Dependent Problem Boundary between Python and C++ SWIG Interface Files PETSc Finite-Element Implementation DMPlex Point Depth and Height PetscSection and PetscVec Integration Projection Pointwise functions (kernels) Adding New Governing Equations and/or Bulk Rheologies Overview Python C++ Documentation Building the documentation Prerequisites Generating the documentation MyST Quick reference Style guide Headings Heading 2 Heading 3 Heading 4 Admonitions Lists Itemized lists Definition lists Field lists Code blocks Tables Figures Math Citations Table of contents Contributing to the documentation Git Quick Reference Break commit into multiple commits Update from upstream Rebase branch off main Branches Delete branches Rename local branch Show merged/unmerged branches