bvp::ddm Class Reference

#include <ddm.hpp>

Inheritance diagram for bvp::ddm:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 ddm (const set< shared_ptr< const domain > > &ds, shared_ptr< const BVP > thebvp)
void set_tolerance (double tol)
virtual double at (const point &p) const =0
double operator() (const point &p) const
virtual ~ddm ()

Protected Member Functions

virtual void solve ()=0

Protected Attributes

shared_ptr< const BVPbvp
set< shared_ptr< const domain > > domains
double tolerance


Constructor & Destructor Documentation

bvp::ddm::ddm ( const set< shared_ptr< const domain > > &  ds,
shared_ptr< const BVP thebvp 
)

00051                                              {
00052     //Gotta check this is actually a domain decomposition...
00053     set<point> union_interior;
00054     set<point> union_boundary;
00055 
00056     for(set<shared_ptr<const domain> >::iterator i = ds.begin();
00057         i != ds.end(); i++){
00058       set<point> intr = (*i) -> get_interior();
00059       set<point> bdry = (*i) -> get_boundary();
00060       union_interior.insert(intr.begin(), intr.end());
00061       union_boundary.insert(bdry.begin(), bdry.end());
00062     }
00063 
00064     bvp = thebvp;
00065     shared_ptr<const domain> Omega = bvp -> get_domain();
00066     set<point> interior = Omega -> get_interior();
00067     set<point> boundary = Omega -> get_boundary();
00068 
00069     if( interior != union_interior){
00070       badArgument exc;
00071       exc.reason = 
00072         "Bad argument in domain decomposition method constructor: \n"
00073         "The union of the interior of the proposed domains does not \n"
00074         "equal the interior of the domain.";
00075       exc.line = __LINE__;
00076       exc.file = __FILE__;
00077       throw exc;
00078     }
00079 
00080     if(!utils::includes(boundary,union_boundary) ){
00081       badArgument exc;
00082       exc.reason = 
00083         "Bad argument in domain decomposition method constructor: \n"
00084         "The union of the boundary of the proposed domains does not \n"
00085         "contain the boundary of the  domain.";
00086       exc.line = __LINE__;
00087       exc.file = __FILE__;
00088       throw exc;
00089     }
00090     
00091     domains = ds;
00092     tolerance = 1e-6;
00093 
00094  }

Here is the call graph for this function:

bvp::ddm::~ddm (  )  [virtual]

00096            {
00097     //Nothing!
00098   }


Member Function Documentation

void bvp::ddm::set_tolerance ( double  tol  ) 

00100                                    {
00101     tolerance = tol;    
00102   }

virtual double bvp::ddm::at ( const point &  p  )  const [pure virtual]

double bvp::ddm::operator() ( const point &  p  )  const

00104                                             {
00105     return at(p);
00106   }

Here is the call graph for this function:

virtual void bvp::ddm::solve (  )  [protected, pure virtual]


Member Data Documentation

shared_ptr<const BVP> bvp::ddm::bvp [protected]

set<shared_ptr<const domain> > bvp::ddm::domains [protected]

double bvp::ddm::tolerance [protected]


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