12 #include <stk_mesh/base/Bucket.hpp> 13 #include <stk_mesh/base/BulkData.hpp> 14 #include <stk_algsup/AlgorithmRunner.hpp> 20 AlgorithmInterface::~AlgorithmInterface(){}
24 void AlgorithmInterface::apply_one(
32 const bool run_it = selector( bucket );
33 get_involved_parts( union_part_vector, bucket, parts );
36 if ( 0 < m_maximum_entity_count ) {
37 for ( mesh::Bucket::iterator j = bucket.
begin(); j != bucket.
end() ; ) {
38 mesh::Bucket::iterator e = j ;
39 if ( static_cast<ptrdiff_t>( bucket.
end() - e ) < static_cast<ptrdiff_t>(m_maximum_entity_count) ) {
43 e += m_maximum_entity_count ;
45 apply( j , e , parts , reduce );
50 apply( bucket.
begin() , bucket.
end() , parts , reduce );
68 class AlgorithmRunnerNonThread :
public AlgorithmRunnerInterface {
73 const std::vector< mesh::Bucket * > & buckets,
75 void * reduce )
const ;
77 AlgorithmRunnerNonThread() {}
78 ~AlgorithmRunnerNonThread() {}
81 void AlgorithmRunnerNonThread::run_alg(
84 const std::vector< mesh::Bucket * > & buckets ,
88 for ( std::vector< mesh::Bucket * >::const_iterator
89 i = buckets.begin() ; i != buckets.end() ; ++i ) {
90 algorithm.apply_one( selector , union_parts, **i , reduce );
100 static AlgorithmRunnerNonThread runner ;
AlgorithmRunnerInterface * algorithm_runner_non_thread()
This is a class for selecting buckets based on a set of meshparts and set logic.
iterator begin() const
Beginning of the bucket.
iterator end() const
End of the bucket.
std::vector< Part *> PartVector
Collections of parts are frequently maintained as a vector of Part pointers.
A container for the field data of a homogeneous collection of entities.