bvp::overlapping_domain Class Reference

#include <ddm.hpp>

Inheritance diagram for bvp::overlapping_domain:

Inheritance graph
[legend]
Collaboration diagram for bvp::overlapping_domain:

Collaboration graph
[legend]

List of all members.

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)


Constructor & Destructor Documentation

bvp::overlapping_domain::overlapping_domain ( string  intr,
string  bdry,
string  ns 
)

00330     :domain(intr,bdry,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   }

Here is the call graph for this function:

bvp::overlapping_domain::overlapping_domain ( size_t  dimension  ) 

00360     :domain(dimension){}

bvp::overlapping_domain::overlapping_domain ( size_t  dimension,
set< point >  intr,
set< point >  bdry,
map< point, vector ns 
)

00364     :domain(dimension, intr, bdry, ns){}


Member Function Documentation

set< shared_ptr< const overlapping_domain > > bvp::overlapping_domain::get_domains (  )  const

00368                                        {
00369     return overlappers;
00370   }

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   }

Here is the call graph for this function:

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   }

Here is the call graph for this function:


Friends And Related Function Documentation

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   }


Member Data Documentation

set<shared_ptr<const overlapping_domain> > bvp::overlapping_domain::overlappers [private]

map<point, shared_ptr<const overlapping_domain> > bvp::overlapping_domain::boundary_assignments [private]


The documentation for this class was generated from the following files:

Generated on Fri Jun 6 17:28:26 2008 by  doxygen 1.5.6