Computer Algebra Research Papers - Academia.edu (original) (raw)
A chain complex is a sequence of linear spaces of d-chains, 0 ≤ d ≤ n, with a sequence of boundary operators, each mapping the space of d-chains to the space of (d − 1)-chains. The dual of the chain complex is the cochain complex; the... more
A chain complex is a sequence of linear spaces of d-chains, 0 ≤ d ≤ n, with a sequence of boundary operators, each mapping the space of d-chains to the space of (d − 1)-chains. The dual of the chain complex is the cochain complex; the duals of the boundary operators ∂ are the coboundary operator δ, that map the spaces of d-cochains to the spaces of (d + 1)-cochains. All meshes, say partitioning either the boundary or the interior of a model, and their associated physical fields, are properly represented by a (co)chain complex. Such a complex therefore gives a complete discrete representation of any type of field over any type of geometric model. Huge geometric structures may be properly and efficiently represented by sparse matrices, and therefore efficiently manipulated through linear computational algebra, in particular by using the last-generation of highly parallel vector GPUs. The (co)chain representation captures formally and unambiguously all the combinatorial relationships of abstract, geometric, and physical modelling, via the standard topological operators of boundary and coboundary. This representation apply to all cell complexes, without restriction of type, dimension, codimension, orientability, manifoldness, etc. Furthermore, this approach unifies the geometric and physical computation in a common formal computational structure. Last but not least, this approach explicitly shows that the totality of computations on geometric domains may be formulated and implemented using computational techniques based only on the sparse matrix data type. A Python package compy, layered over numpy and scipy is therefore being developed to compute with (co)chain complexes. The package contains efficient methods for generation of dimension-independent-linear and higher order-simplicial complexes, complexes of convex cells, Cartesian product of cell complexes, skeleton and boundary extraction, various types of local and global cell and (co)chain refinement, finite integration of polynomials over subcomplexes, and so on. A strict integration with the geometric language PLaSM based on Backus' FL ("at function level") language , recently ported to Python, is on the way.