Class SimplicialComplex

Class Documentation

class SimplicialComplex

A simplicial complex based using a trie data structure.

A class which can be used to hold simplicial complexes on large or exapanding vertex sets. For a lighter-weight option, see LightSimplicialComplex

Public Functions

inline SimplicialComplex()
inline SimplicialComplex(size_t maxdim)

Initialization up to a certain dimension

Parameters

maxdim[in] - the maximum dimension simplex expected to be added

inline SimplicialComplex(size_t n, size_t maxdim)

Initialization on a certain vertex

Parameters
  • n[in] - the maximum expected vertex index

  • maxdim[in] - the maximum dimension simplex expected to be added

inline SimplicialComplex(const std::vector<size_t> &dim)
inline SimplicialComplex(const std::string &&fname)
inline size_t find_idx(const std::vector<size_t> &s)

Find the index of a simplex

Parameters

s[in] A vector containing the simplex

Returns

The index associated with the simplex. Returns bats::NO_IND if the simplex is not in the complex.

inline size_t find_idx(const std::vector<size_t> &s) const
inline size_t maxdim() const
inline size_t ncells(const size_t k) const
inline size_t ncells() const
inline cell_ind add(std::vector<size_t> &s)
inline cell_ind add(std::vector<size_t> &&s)
inline cell_ind add_directed(const std::vector<size_t> &s)
inline std::vector<cell_ind> add_recursive(std::vector<size_t> &s)
inline std::vector<cell_ind> add_recursive(std::vector<size_t> &&s)
inline std::vector<cell_ind> add_directed_recursive(std::vector<size_t> &s)
inline auto faces_begin(const size_t dim, const size_t i) const
inline auto faces_begin(const cell_ind &ci) const
inline auto faces_end(const size_t dim, const size_t i) const
inline auto faces_end(const cell_ind &ci) const
inline auto simplex_begin(const size_t dim, const size_t i) const
inline auto simplex_end(const size_t dim, const size_t i) const
inline void get_simplex(size_t dim, size_t i, std::vector<size_t> &s) const

fill s with simple i in dimension dim

inline std::vector<size_t> get_simplex(size_t dim, size_t i) const

return simplex i in dimension dim

inline auto get_cell(size_t dim, size_t i, std::vector<size_t> &s) const
inline auto get_cell(size_t dim, size_t i) const
inline std::vector<std::vector<size_t>> get_simplices(const size_t dim) const
inline std::vector<std::vector<size_t>> get_simplices() const
inline void union_add(const SimplicialComplex &Y)
inline std::vector<size_t> get_indices(const SimplicialComplex &A, size_t dim) const
inline std::vector<std::vector<size_t>> get_indices(const SimplicialComplex &A) const
inline auto boundary(const size_t dim, const size_t k) const

indices and values of simplex k in dimension dim

inline CSCMatrix<int, size_t> boundary_csc(const size_t dim) const
inline ~SimplicialComplex()
inline void save(std::string &fname) const
inline void print_summary() const
inline void print_cells() const

Friends

friend class MorsePairing< SimplicialComplex >
inline friend SimplicialComplex simplicial_union(const SimplicialComplex &X, const SimplicialComplex &Y)
inline friend SimplicialComplex intersection(const SimplicialComplex &X, const SimplicialComplex &Y)