#include <ddm.hpp>
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 BVP > | bvp |
set< shared_ptr< const domain > > | domains |
double | tolerance |
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 }
void bvp::ddm::set_tolerance | ( | double | tol | ) |
virtual double bvp::ddm::at | ( | const point & | p | ) | const [pure virtual] |
Implemented in bvp::additive_schwarz_ddm< RBF >.
double bvp::ddm::operator() | ( | const point & | p | ) | const |
virtual void bvp::ddm::solve | ( | ) | [protected, pure virtual] |
Implemented in bvp::additive_schwarz_ddm< RBF >.
shared_ptr<const BVP> bvp::ddm::bvp [protected] |
set<shared_ptr<const domain> > bvp::ddm::domains [protected] |
double bvp::ddm::tolerance [protected] |