This package provides combinatorial models of geometric spaces, and implements the operators of the Discrete Exterior Calculus (DEC) on these spaces.
These "combinatorial spaces" - simplicial sets and combinatorial maps - are useful in computational physics, computer graphics, and other applications where geometry plays a large role. They are also potentially useful in non-geometric applications, since structures like simplicial sets generalize graphs from binary relations to higher-arity relations.
Current features include:
- delta sets (semi-simplicial sets) in dimensions 1, 2, and 3, optionally oriented and/or embedded in Euclidean space
- construction of the dual complex associated with a delta set, via combinatorial and geometric subdivision
- operators of the Discrete Exterior Calculus, including the boundary, exterior derivative, Hodge star, codifferential, wedge product, Lie derivative, and Laplace-Beltrami operators
- experimental support for rotation systems and combinatorial maps
- binary and cubic subdivision of meshes
- mesh optimization
The Decapodes.jl library generates DEC simulation code using these meshes and DEC operators. Alternatively, you can manually allocate differential operators using this library's API, as demonstrated in the documentation.
Combinatorial spaces, like graphs, are typically C-sets (copresheaves) on some
category C. They are implemented here using the general data structures for
C-sets offered by Catlab.jl.
Thus, this package complements and extends the family of graph data structures
shipped with Catlab in the module
Catlab.Graphs
.
To install this package, open the Julia shell, press ]
to enter Pkg mode, and
run the command
(@v1.11) pkg> add CombinatorialSpaces