1 #ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH
2 #define DUNE_DGF_BOUNDARYDOMBLOCK_HH
33 parameter_( parameter ),
34 defaultData_( defaultData )
46 return (!parameter_.empty());
60 defaultData_ = defaultData;
71 os <<
"domain data: id = " << ddata.
id();
73 os <<
", parameter = " << ddata.
parameter();
97 data_( id, parameter )
102 "ERROR in " << *
this <<
"!");
116 "ERROR in " << *
this <<
"!");
123 left_( other.left_ ),
124 right_( other.right_ ),
130 "ERROR in " << *
this <<
"!");
140 "ERROR in " << *
this <<
"!");
144 right_= other.right_;
150 template<
class Vector >
156 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )
171 os <<
"domain: " << std::endl;
174 os << domain.left_[ i ] <<
" ";
177 for(
int i = 0; i < dimensionworld; ++i )
178 os << domain.right_[ i ] <<
" ";
185 std::vector< double > left_, right_;
206 std::vector< Domain > domains_;
223 return ( counter_ < ndomains_ );
229 return domains_.at( counter_ );
235 return bool( default_ );
257 return ( counter_ <= ndomains_ );
262 template<
class Vector >
265 std::vector< int > index( ndomains_ );
266 for(
int i = 0; i < ndomains_; ++i)
270 for(
size_t i = 0; i < N; ++i )
275 const int n = index.size();
277 for(
int j = n-1; j >= 0; --j )
279 bool inside = domains_[ index[ j ] ].contains( v[ i ] );
281 index.erase( index.begin() + j );
290 if( index.size() > 1 )
291 dwarn <<
"WARNING: ambiguous boundary domain assignment, use first boundary domain in list" << std::endl;
293 return &domains_[ index[ 0 ] ].data();