#include <ddm.hpp>
Public Member Functions | |
overlapping_domain (string intr, string bdry, string ns) | |
overlapping_domain (string intr, string bdry, string ns, const set< shared_ptr< const overlapping_domain > > &ols, const map< point, shared_ptr< const overlapping_domain > > &bdry_asst) | |
overlapping_domain (size_t dimension) | |
overlapping_domain (size_t dimension, set< point > intr, set< point > bdry, map< point, vector > ns) | |
set< shared_ptr< const overlapping_domain > > | get_domains () const |
shared_ptr< const overlapping_domain > | which_domain (const point &p) const |
void | set_overlapper_info (const point &p, const shared_ptr< overlapping_domain > o) |
Private Attributes | |
set< shared_ptr< const overlapping_domain > > | overlappers |
map< point, shared_ptr< const overlapping_domain > > | boundary_assignments |
Friends | |
void | set_overlapper_info (set< shared_ptr< overlapping_domain > > domains) |
bvp::overlapping_domain::overlapping_domain | ( | string | intr, | |
string | bdry, | |||
string | ns | |||
) |
bvp::overlapping_domain::overlapping_domain | ( | string | intr, | |
string | bdry, | |||
string | ns, | |||
const set< shared_ptr< const overlapping_domain > > & | ols, | |||
const map< point, shared_ptr< const overlapping_domain > > & | bdry_asst | |||
) |
00337 :domain(intr,bdry,ns) 00338 { 00339 set<point> bdry_copy = get_boundary(); 00340 for(map<point, shared_ptr<const overlapping_domain> >::const_iterator 00341 i = bdry_asst.begin(); i != bdry_asst.end(); i++) 00342 { 00343 if(!utils::contains(ols, i->second) or 00344 !utils::contains(bdry_copy, i->first)){ 00345 badArgument exc; 00346 exc.reason = 00347 "Bad argument in overlapping_domain constructor: \n" 00348 "Every boundary assignment must be a boundary point \n" 00349 "assigned to some overlapping domain."; 00350 exc.line = __LINE__; 00351 exc.file = __FILE__; 00352 throw exc; 00353 } 00354 } 00355 overlappers = ols; 00356 boundary_assignments = bdry_asst; 00357 }
bvp::overlapping_domain::overlapping_domain | ( | size_t | dimension | ) |
bvp::overlapping_domain::overlapping_domain | ( | size_t | dimension, | |
set< point > | intr, | |||
set< point > | bdry, | |||
map< point, vector > | ns | |||
) |
set< shared_ptr< const overlapping_domain > > bvp::overlapping_domain::get_domains | ( | ) | const |
shared_ptr< const overlapping_domain > bvp::overlapping_domain::which_domain | ( | const point & | p | ) | const |
00373 { 00374 if(!utils::contains(boundary_assignments, p)){ 00375 shared_ptr<const overlapping_domain> zero; 00376 return zero; 00377 } 00378 return boundary_assignments.at(p); 00379 }
void bvp::overlapping_domain::set_overlapper_info | ( | const point & | p, | |
const shared_ptr< overlapping_domain > | o | |||
) |
00384 { 00385 if(utils::contains(this -> get_boundary(), p)) 00386 boundary_assignments[p] = o; 00387 }
void set_overlapper_info | ( | set< shared_ptr< overlapping_domain > > | domains | ) | [friend] |
00391 { 00392 for(set<shared_ptr<overlapping_domain> >::iterator d = domains.begin(); 00393 d != domains.end(); d++){ 00394 for(set<point>::iterator p = (*d) -> get_boundary().begin(); 00395 p != (*d) -> get_boundary().end(); p++){ 00396 for(set<shared_ptr<overlapping_domain> >::iterator 00397 d_other = domains.begin(); d_other != domains.end(); d_other++) 00398 if( 00399 utils::contains((*d_other ) -> get_interior(), *p) 00400 ){ 00401 (*d) -> boundary_assignments[*p] = *d_other; 00402 (*d) -> overlappers.insert(*d_other); 00403 break; //FIXME: We're assuming no three domains overlap at 00404 //one point. 00405 } 00406 } 00407 } 00408 }
set<shared_ptr<const overlapping_domain> > bvp::overlapping_domain::overlappers [private] |
map<point, shared_ptr<const overlapping_domain> > bvp::overlapping_domain::boundary_assignments [private] |