22#ifndef BELFEM_CL_SIMPLICIALCOMPLEX_HPP
23#define BELFEM_CL_SIMPLICIALCOMPLEX_HPP
47 uint mNumLoopsReduce = 0;
48 uint mNumLoopsCoreduce = 0;
261 return * mOriginalEdges ;
267 return mChainsMap( 0 ).size();
275 return mChainsMap( 1 ).size();
283 return mChainsMap( 2 ).size();
297 return mChainsMap( k ).size();
312 return mCochainsMap( k ).size();
324 auto & tMap = mCochainsMap( k ).map_data();
325 auto it = tMap.find( aID );
326 if ( it != tMap.end() )
345#ifdef PERFORMANCE_CHECK
347 tFile.open (
"Coreduce.txt",std::ios_base::app);
348 tFile << mNumLoopsCoreduce <<
" " << mCochainsMap(0).size()+mCochainsMap(1).size()+mCochainsMap(2).size()+mCochainsMap(3).size() <<
" \n";
350 bool tRemoved =
true;
354 mNumLoopsCoreduce+=1;
359 for (
auto it = tMap1.
begin(), next_it = it; it != tMap1.
end(); it = next_it)
364 if (it->second->getBoundary()->getSimplicesMap().size() == 1)
367 index_t b = it->second->getBoundary()->getSimplicesMap().begin()->first;
371 for(
const auto [tID2, tCoeff2]: tSimpMap0 )
373 if (tID2 != it->first )
375 tMap1(tID2)->getBoundary()->setCoefficient(b,0);
381 for(
const auto [tID2, tCoeff2]: tSimpMap1 )
383 mCochainsMap(p+2)(tID2)->getBoundary()->setCoefficient(a,0);
393#ifdef PERFORMANCE_CHECK
394 tFile << mNumLoopsCoreduce <<
" " << mCochainsMap(0).size()+mCochainsMap(1).size()+mCochainsMap(2).size()+mCochainsMap(3).size() <<
" \n";
397#ifdef PERFORMANCE_CHECK
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Runtime-sized bitset; one bit per flag, packed into 64-bit words.
Definition cl_DynamicBitset.hpp:33
Hash map (unordered key-value).
Definition cl_Map.hpp:75
typename std::unordered_map< Key, Value >::const_iterator const_iterator
Definition cl_Map.hpp:83
auto end() const -> decltype(mMap.end())
Definition cl_Map.hpp:175
auto begin() const -> decltype(mMap.begin())
Definition cl_Map.hpp:169
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Formal sum of k-simplices (homology).
Definition cl_Chain.hpp:36
Cochain: a functional on chains (cohomology).
Definition cl_Cochain.hpp:37
void reduce_complexCCR()
Definition cl_SimplicialComplex.cpp:480
uint number_of_1simplices() const
Definition cl_SimplicialComplex.hpp:273
uint number_of_0simplices() const
Definition cl_SimplicialComplex.hpp:265
void pReduce(const uint p)
Definition cl_SimplicialComplex.cpp:695
Chain * get_kchain(const uint k, const index_t aID)
Definition cl_SimplicialComplex.cpp:1329
void pCoreduce(const uint p)
Definition cl_SimplicialComplex.hpp:338
void coreduce_complexPellikka()
Definition cl_SimplicialComplex.cpp:1263
Cell< Matrix< int > > createMatrixFromCoboundaryMap()
Definition cl_SimplicialComplex.cpp:1410
Cell< Matrix< int > > createMatrixFromBoundaryMap()
Definition cl_SimplicialComplex.cpp:1382
void pCocombine(const uint p)
Definition cl_SimplicialComplex.cpp:1023
Chain * boundary_of_kchain(const uint k, const index_t aID)
void coreduceOmit()
Definition cl_SimplicialComplex.cpp:1236
void reduceOmit()
Definition cl_SimplicialComplex.cpp:939
void remove_kcochainFromMap(const uint k, const index_t aID)
Definition cl_SimplicialComplex.hpp:320
void reduce_complexPellikka()
Definition cl_SimplicialComplex.cpp:967
Map< index_t, Chain * > get_kchainMap(const uint k)
Definition cl_SimplicialComplex.cpp:1351
uint number_of_kcosimplices(const uint k) const
Definition cl_SimplicialComplex.hpp:304
uint number_of_ksimplices(const uint k) const
Definition cl_SimplicialComplex.hpp:289
uint number_of_2simplices() const
Definition cl_SimplicialComplex.hpp:281
void reset()
Definition cl_SimplicialComplex.cpp:41
void create_complex(Mesh *aMesh, bool aPeriodicity)
Definition cl_SimplicialComplex.cpp:109
void coreduce_complexCCR()
Definition cl_SimplicialComplex.cpp:507
void remove_kchainFromMap(const uint k, const index_t aID)
Definition cl_SimplicialComplex.cpp:1319
Map< index_t, Cochain * > get_kcochainMap(const uint k)
Definition cl_SimplicialComplex.cpp:1358
Cochain * get_kcochain(const uint k, const index_t aID)
Definition cl_SimplicialComplex.cpp:1340
SimplicialComplex(Mesh *aMesh, bool aPeriodicity=false)
Definition cl_SimplicialComplex.cpp:23
void coreduce_complexCCR_old()
Definition cl_SimplicialComplex.cpp:586
void pCombine(const uint p)
Definition cl_SimplicialComplex.cpp:761
void print_kchains(const uint k)
Definition cl_SimplicialComplex.cpp:1441
void cocreate_kComplexField(const uint k, Mesh *aMesh, string aFieldName)
Definition cl_SimplicialComplex.cpp:1468
void pGeneralizedCocombine(const uint p)
Definition cl_SimplicialComplex.cpp:1119
void create_kComplexField(const uint k, Mesh *aMesh, string aFieldName)
Definition cl_SimplicialComplex.cpp:1451
void reduce_complexCCR_old()
Definition cl_SimplicialComplex.cpp:535
void reduce_complexPellikkaGeneralized()
Definition cl_SimplicialComplex.cpp:994
void coreduce_pair(const uint k, const uint a, Map< index_t, Cochain * >::const_iterator &bit, const int aCoeff)
Definition cl_SimplicialComplex.cpp:667
void pGeneralizedCombine(const uint p)
Definition cl_SimplicialComplex.cpp:858
void reduce_pair(const uint k, const uint a, Map< index_t, Chain * >::const_iterator &bit, const int aCoeff)
Definition cl_SimplicialComplex.cpp:639
void coreduce_complexPellikkaGeneralized()
Definition cl_SimplicialComplex.cpp:1291
const DynamicBitset & original_edges() const
Definition cl_SimplicialComplex.hpp:259
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
uint32_t index_t
Definition typedefs.hpp:52