3 #ifndef DUNE_DGF_BOUNDARYDOMBLOCK_HH
4 #define DUNE_DGF_BOUNDARYDOMBLOCK_HH
35 parameter_( parameter ),
36 defaultData_( defaultData )
48 return (!parameter_.empty());
62 defaultData_ = defaultData;
73 os <<
"domain data: id = " << ddata.
id();
75 os <<
", parameter = " << ddata.
parameter();
99 data_( id, parameter )
104 "ERROR in " << *
this <<
"!");
118 "ERROR in " << *
this <<
"!");
125 left_( other.left_ ),
126 right_( other.right_ ),
132 "ERROR in " << *
this <<
"!");
142 "ERROR in " << *
this <<
"!");
146 right_= other.right_;
152 template<
class Vector >
158 if( x[ i ] < left_[ i ] || x[ i ] > right_[ i ] )
172 os <<
"domain: " << std::endl;
175 os << domain.left_[ i ] <<
" ";
179 os << domain.right_[ i ] <<
" ";
186 std::vector< double > left_, right_;
207 std::vector< Domain > domains_;
224 return ( counter_ < ndomains_ );
230 return domains_.at( counter_ );
236 return bool( default_ );
258 return ( counter_ <= ndomains_ );
263 template<
class Vector >
266 std::vector< int > index( ndomains_ );
267 for(
int i = 0; i < ndomains_; ++i)
271 for(
size_t i = 0; i < N; ++i )
276 const int n = index.size();
278 for(
int j = n-1; j >= 0; --j )
280 bool inside = domains_[ index[ j ] ].contains( v[ i ] );
282 index.erase( index.begin() + j );
291 if( index.size() > 1 )
292 dwarn <<
"WARNING: ambiguous boundary domain assignment, use first boundary domain in list" << std::endl;
294 return &domains_[ index[ 0 ] ].data();