# API reference

## Python

### Public user interface

`dolfinx.common` | General tools for timing and configuration.
`dolfinx.fem` | Tools for assembling and manipulating finite element forms.
`dolfinx.fem.petsc` | High-level solver classes and functions for assembling PETSc objects.
`dolfinx.geometry` | Methods for geometric searches and operations.
`dolfinx.graph` | Graph representations and operations on graphs.
`dolfinx.io` | Tools for file input/output (IO).
`dolfinx.io.gmsh` | Tools to extract data from Gmsh models.
`dolfinx.io.vtkhdf` |
`dolfinx.jit` | Just-in-time (JIT) compilation using FFCx
`dolfinx.la` | Linear algebra functionality
`dolfinx.la.petsc` | Functions for working with PETSc linear algebra objects.
`dolfinx.mesh` | Creation, refining and marking of meshes.
`dolfinx.nls.petsc` | (Deprecated) Methods for solving nonlinear equations using PETSc solvers.
`dolfinx.pkgconfig` | Tool for querying pkg-config files.
`dolfinx.plot` | Support functions for plotting

### nanobind/C++interface

These are low-level interfaces to the C++ component of DOLFINx. These interfaces are subject to change and not generally intended for application-level use.

`dolfinx.cpp.common` | Common module
`dolfinx.cpp.fem` | FEM module
`dolfinx.cpp.fem.petsc` | PETSc-specific finite element module
`dolfinx.cpp.geometry` | Geometry module
`dolfinx.cpp.graph` | Graph module
`dolfinx.cpp.io` | I/O module
`dolfinx.cpp.la` | Linear algebra module
`dolfinx.cpp.log` | Logging module
`dolfinx.cpp.mesh` | Mesh library module
`dolfinx.cpp.nls` | Nonlinear solver module
`dolfinx.cpp.nls.petsc` | PETSc-specific nonlinear solvers
`dolfinx.cpp.refinement` | Refinement module