12#ifndef CL_COHOMOLOGYPROCESSOR_HPP
13#define CL_COHOMOLOGYPROCESSOR_HPP
42 const uint mNumberOfDimensions ;
43 const uint mNumberOfCuts ;
123 create_thin_cut_sidesets();
143 compute_edge_bitsets();
148 compute_node_bitsets();
158 determine_cut_sets();
168 create_abstract_nodes();
178 flip_node_bitsets_tri3(
190 flip_node_bitsets_tri6(
202 flip_node_bitsets_tet4(
214 flip_node_bitsets_tet10(
231 const uint aEdgeIndex,
232 const uint aMinusNodeIndex,
233 const uint aPlusNodeIndex,
240 const uint aMinusNodeIndex,
241 const uint aPlusNodeIndex,
242 const uint aMidsideNodeIndex,
263 relink_element(
Element * aElement,
269 collect_duplicates();
277 return mAbstractNodes;
293 return mMaxSidesetID;
300 CutProcessor::check_edge(
302 const uint aEdgeIndex,
303 const uint aMinusNodeIndex,
304 const uint aPlusNodeIndex,
311 for (
uint c=0; c<mNumberOfCuts; ++c )
313 int tValue = mCutData( c )->weight( aElement->
edge( aEdgeIndex ) ) ;
315 if ( aElement->
edge_direction( aEdgeIndex ) == mIs2D ) tValue *= -1 ;
319 if ( aElement->
node( aPlusNodeIndex )->
is_flagged() ) aBitsets( aPlusNodeIndex )->set( c ) ;
321 else if ( tValue == -1 )
323 if ( aElement->
node( aMinusNodeIndex )->
is_flagged() ) aBitsets( aMinusNodeIndex )->set( c ) ;
331 CutProcessor::check_midside(
332 const uint aMinusNodeIndex,
333 const uint aPlusNodeIndex,
334 const uint aMidsideNodeIndex,
335 Cell< DynamicBitset * > & aBitsets )
337 if ( aBitsets( aPlusNodeIndex )->
count() == 0 ) return ;
338 if ( aBitsets( aMinusNodeIndex )->
count() == 0 ) return ;
340 for (
uint c=0;
c<mNumberOfCuts; ++
c )
342 if ( aBitsets( aPlusNodeIndex )->test( c ) and aBitsets( aMinusNodeIndex )->test( c ) )
344 aBitsets( aMidsideNodeIndex )->set( c );
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
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Sorted map (ordered key-value).
Definition cl_OrderedMap.hpp:32
virtual bool is_flagged(const uint8_t aIndex=0) const
Definition cl_Graph_Vertex.hpp:293
Computes the cohomology groups H^k of a mesh complex.
Definition cl_Cohomology.hpp:37
void save_debug_meshes()
Definition cl_CutProcessor.cpp:132
CutProcessor(Mesh *aMesh, Cohomology *aCohomology, const Vector< id_t > &aPhiBlocks, const Vector< id_t > &aNonPhiBlocks, const Vector< id_t > &aPhiInterfaces, const Vector< id_t > &aPhiBoundaries, const Vector< id_t > &aPhiPeriodic)
Definition cl_CutProcessor.cpp:21
Cell< Node * > & abstract_nodes()
Definition cl_CutProcessor.hpp:275
id_t max_sideset_id()
Definition cl_CutProcessor.hpp:291
id_t max_node_id()
Definition cl_CutProcessor.hpp:283
Lagrange Element baseclass.
Definition cl_Element.hpp:35
virtual bool edge_direction(const uint aEdgeIndex) const
Definition cl_Element.hpp:570
Edge * edge(const uint aIndex) override
Definition cl_Element.hpp:278
Node * node(const uint aIndex) override
Definition cl_Element.hpp:254
const real c
speed of light in m/s ( exact ) http://physics.nist.gov/cgi-bin/cuu/Value?c
Definition constants.hpp:65
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
unsigned int id_t
Definition typedefs.hpp:41
ElementType
Element types.
Definition Mesh_Enums.hpp:27
uint32_t index_t
Definition typedefs.hpp:52
count
Definition test_twist_crosscheck.py:35