BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Homology.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#include "cl_Mesh.hpp"
13#include "cl_Chain.hpp"
16#include "fn_Smith.hpp"
17#include "cl_Map.hpp"
18#include "cl_Cell.hpp"
19#include "cl_Vector.hpp"
20
21#ifndef BELFEM_CL_HOMOLOGY_HPP
22#define BELFEM_CL_HOMOLOGY_HPP
23
24namespace belfem
25{
26 namespace mesh
27 {
28//-----------------------------------------------------------------------------
36 {
37
38 Cell <Cell< Chain * >> mGenerators;
39
40 Cell <Cell< int >> mOrders;
41
43
45
47
49
51
53
55
56 SimplicialComplex * mSimplicialComplex;
57
58 //Mesh
59 Mesh * mMesh ;
60
61
62//-----------------------------------------------------------------------------
63 public:
64
65//-----------------------------------------------------------------------------
66
67 Homology( Mesh * aMesh, Cell<Cell< id_t >> aTerminals,
68 Cell< id_t > aThinShellIndices ) ;
69
70//-----------------------------------------------------------------------------
71
72 Homology(SimplicialComplex * aSimplicialComplex, Mesh * aMesh);
73
74//-----------------------------------------------------------------------------
75
76 ~Homology();
77
78//-----------------------------------------------------------------------------
79
80 void
81 reset();
82
83//-----------------------------------------------------------------------------
84
85 void
87
88//-----------------------------------------------------------------------------
89
90 void
92
93//-----------------------------------------------------------------------------
94
95 void
97
98//-----------------------------------------------------------------------------
99
100 void
101 create_kGeneratorsField(const uint k, Mesh * aMesh, string tFieldName );
102
103//-----------------------------------------------------------------------------
104
105 void
107 Cell< id_t > aThinShellIndices );
108
109//-----------------------------------------------------------------------------
110
113
114//-----------------------------------------------------------------------------
115
116 Cell <Cell< Chain * >> &
118
119//-----------------------------------------------------------------------------
120
121 void
122 create_self_intersecting(const uint tGeneratorIndex);
123
124//-----------------------------------------------------------------------------
125
126 Cell < int >
127 generators_orientation(Cell< Vector <real> > & aDirections);
128
129//-----------------------------------------------------------------------------
130
131 void
133
134//-----------------------------------------------------------------------------
135
136 };
137 }
138}
139
140#endif //BELFEM_CL_HOMOLOGY_HPP
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Hash map (unordered key-value).
Definition cl_Map.hpp:75
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Cell< Matrix< int > > & get_BoundaryMatrix()
Definition cl_Homology.cpp:413
Cell< Cell< Chain * > > & get_Generators()
Definition cl_Homology.cpp:421
void homologyGroupOfChainComplex()
Definition cl_Homology.cpp:77
Homology(Mesh *aMesh, Cell< Cell< id_t > > aTerminals, Cell< id_t > aThinShellIndices)
Definition cl_Homology.cpp:22
void reset()
Definition cl_Homology.cpp:55
void create_kGeneratorsField(const uint k, Mesh *aMesh, string tFieldName)
Definition cl_Homology.cpp:180
void reorient_generators()
Definition cl_Homology.cpp:657
void create_self_intersecting(const uint tGeneratorIndex)
Definition cl_Homology.cpp:430
void generatorsOfHomology()
Definition cl_Homology.cpp:137
Cell< int > generators_orientation(Cell< Vector< real > > &aDirections)
Definition cl_Homology.cpp:505
void suggest_Homology(Cell< Cell< id_t > > aTerminals, Cell< id_t > aThinShellIndices)
Definition cl_Homology.cpp:204
void quotientGroup()
Definition cl_Homology.cpp:99
Simplicial complex reduction engine underlying the homology and cohomology computation.
Definition cl_SimplicialComplex.hpp:37
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30