Skip to content

AlgebraicJulia/CombinatorialSpaces.jl

Repository files navigation

CombinatorialSpaces.jl

Stable Documentation Development Documentation Code Coverage CI/CD

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.

Installation

To install this package, open the Julia shell, press ] to enter Pkg mode, and run the command

(@v1.11) pkg> add CombinatorialSpaces

About

Simplicial Sets and the Discrete Exterior Calculus

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 12