view html/classbvp_1_1ddm.html @ 4:9d4fda54a41d

Buggy, must check why interpolator assignment destroys precomputed data.
author Jordi Guitérrez Hermoso <jordigh@gmail.com>
date Sun, 29 Jun 2008 04:06:48 -0500
parents 4fa56dc7e271
children
line wrap: on
line source

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>bvp::ddm Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacebvp.html">bvp</a>::<a class="el" href="classbvp_1_1ddm.html">ddm</a>
  </div>
</div>
<div class="contents">
<h1>bvp::ddm Class Reference</h1><!-- doxytag: class="bvp::ddm" --><code>#include &lt;<a class="el" href="ddm_8hpp-source.html">ddm.hpp</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for bvp::ddm:</div>
<div class="dynsection">
<p><center><img src="classbvp_1_1ddm__inherit__graph.png" border="0" usemap="#bvp_1_1ddm__inherit__map" alt="Inheritance graph"></center>
<map name="bvp_1_1ddm__inherit__map">
<area shape="rect" href="classbvp_1_1additive__schwarz__ddm.html" title="bvp::additive_schwarz_ddm\&lt; RBF \&gt;" alt="" coords="5,84,256,110"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classbvp_1_1ddm-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#86206316fb83fdefbdbebcaab64f1afe">ddm</a> (const set&lt; shared_ptr&lt; const <a class="el" href="classbvp_1_1domain.html">domain</a> &gt; &gt; &amp;ds, shared_ptr&lt; const <a class="el" href="classbvp_1_1BVP.html">BVP</a> &gt; thebvp)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#f7a4d4534331ed937e604893a115c480">set_tolerance</a> (double tol)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#d7c6ac93874c610b9bc22a5538a40390">at</a> (const point &amp;p) const =0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#dd283782e9a0c6114a9b4d3c22d3c270">operator()</a> (const point &amp;p) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#3b0b60c457247052812bba973d719641">~ddm</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#7fbcf71573a76e315829fa0c2d2f56e6">solve</a> ()=0</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">shared_ptr&lt; const <a class="el" href="classbvp_1_1BVP.html">BVP</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#1c0240b22224562065f30bf9d0301d50">bvp</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">set&lt; shared_ptr&lt; const <a class="el" href="classbvp_1_1domain.html">domain</a> &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#f2e30635e9973ff63f0db0f2a1fa731e">domains</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbvp_1_1ddm.html#ab02efc5912dbe803c17cd4cfb4ed5c9">tolerance</a></td></tr>

</table>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="86206316fb83fdefbdbebcaab64f1afe"></a><!-- doxytag: member="bvp::ddm::ddm" ref="86206316fb83fdefbdbebcaab64f1afe" args="(const set&lt; shared_ptr&lt; const domain &gt; &gt; &amp;ds, shared_ptr&lt; const BVP &gt; thebvp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bvp::ddm::ddm           </td>
          <td>(</td>
          <td class="paramtype">const set&lt; shared_ptr&lt; const <a class="el" href="classbvp_1_1domain.html">domain</a> &gt; &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>ds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">shared_ptr&lt; const <a class="el" href="classbvp_1_1BVP.html">BVP</a> &gt;&nbsp;</td>
          <td class="paramname"> <em>thebvp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<div class="fragment"><pre class="fragment"><a name="l00051"></a>00051                                              {
<a name="l00052"></a>00052     <span class="comment">//Gotta check this is actually a domain decomposition...</span>
<a name="l00053"></a>00053     set&lt;point&gt; union_interior;
<a name="l00054"></a>00054     set&lt;point&gt; union_boundary;
<a name="l00055"></a>00055 
<a name="l00056"></a>00056     <span class="keywordflow">for</span>(<span class="keyword">set</span>&lt;shared_ptr&lt;const domain&gt; &gt;::iterator i = ds.begin();
<a name="l00057"></a>00057         i != ds.end(); i++){
<a name="l00058"></a>00058       set&lt;point&gt; intr = (*i) -&gt; get_interior();
<a name="l00059"></a>00059       set&lt;point&gt; bdry = (*i) -&gt; get_boundary();
<a name="l00060"></a>00060       union_interior.insert(intr.begin(), intr.end());
<a name="l00061"></a>00061       union_boundary.insert(bdry.begin(), bdry.end());
<a name="l00062"></a>00062     }
<a name="l00063"></a>00063 
<a name="l00064"></a>00064     <a class="code" href="classbvp_1_1ddm.html#1c0240b22224562065f30bf9d0301d50">bvp</a> = thebvp;
<a name="l00065"></a>00065     shared_ptr&lt;const domain&gt; Omega = <a class="code" href="classbvp_1_1ddm.html#1c0240b22224562065f30bf9d0301d50">bvp</a> -&gt; get_domain();
<a name="l00066"></a>00066     set&lt;point&gt; interior = Omega -&gt; get_interior();
<a name="l00067"></a>00067     set&lt;point&gt; boundary = Omega -&gt; get_boundary();
<a name="l00068"></a>00068 
<a name="l00069"></a>00069     <span class="keywordflow">if</span>( interior != union_interior){
<a name="l00070"></a>00070       badArgument exc;
<a name="l00071"></a>00071       exc.reason = 
<a name="l00072"></a>00072         <span class="stringliteral">"Bad argument in domain decomposition method constructor: \n"</span>
<a name="l00073"></a>00073         <span class="stringliteral">"The union of the interior of the proposed domains does not \n"</span>
<a name="l00074"></a>00074         <span class="stringliteral">"equal the interior of the domain."</span>;
<a name="l00075"></a>00075       exc.line = __LINE__;
<a name="l00076"></a>00076       exc.file = __FILE__;
<a name="l00077"></a>00077       <span class="keywordflow">throw</span> exc;
<a name="l00078"></a>00078     }
<a name="l00079"></a>00079 
<a name="l00080"></a>00080     <span class="keywordflow">if</span>(!<a class="code" href="namespaceutils.html#2426192e16d4950542ccb869b17dcd64" title="Does set s1 include set s2?">utils::includes</a>(boundary,union_boundary) ){
<a name="l00081"></a>00081       badArgument exc;
<a name="l00082"></a>00082       exc.reason = 
<a name="l00083"></a>00083         <span class="stringliteral">"Bad argument in domain decomposition method constructor: \n"</span>
<a name="l00084"></a>00084         <span class="stringliteral">"The union of the boundary of the proposed domains does not \n"</span>
<a name="l00085"></a>00085         <span class="stringliteral">"contain the boundary of the  domain."</span>;
<a name="l00086"></a>00086       exc.line = __LINE__;
<a name="l00087"></a>00087       exc.file = __FILE__;
<a name="l00088"></a>00088       <span class="keywordflow">throw</span> exc;
<a name="l00089"></a>00089     }
<a name="l00090"></a>00090     
<a name="l00091"></a>00091     <a class="code" href="classbvp_1_1ddm.html#f2e30635e9973ff63f0db0f2a1fa731e">domains</a> = ds;
<a name="l00092"></a>00092     <a class="code" href="classbvp_1_1ddm.html#ab02efc5912dbe803c17cd4cfb4ed5c9">tolerance</a> = 1e-6;
<a name="l00093"></a>00093 
<a name="l00094"></a>00094  }
</pre></div>
<p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classbvp_1_1ddm_86206316fb83fdefbdbebcaab64f1afe_cgraph.png" border="0" usemap="#classbvp_1_1ddm_86206316fb83fdefbdbebcaab64f1afe_cgraph_map" alt=""></center>
<map name="classbvp_1_1ddm_86206316fb83fdefbdbebcaab64f1afe_cgraph_map">
<area shape="rect" href="namespaceutils.html#2426192e16d4950542ccb869b17dcd64" title="Does set s1 include set s2?" alt="" coords="175,5,281,32"><area shape="rect" href="namespaceutils.html#eb13fd347c73edecdd80bf2bd3a97dd2" title="utils::includes" alt="" coords="332,5,439,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="3b0b60c457247052812bba973d719641"></a><!-- doxytag: member="bvp::ddm::~ddm" ref="3b0b60c457247052812bba973d719641" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bvp::ddm::~ddm           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<div class="fragment"><pre class="fragment"><a name="l00096"></a>00096            {
<a name="l00097"></a>00097     <span class="comment">//Nothing!</span>
<a name="l00098"></a>00098   }
</pre></div>
<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="f7a4d4534331ed937e604893a115c480"></a><!-- doxytag: member="bvp::ddm::set_tolerance" ref="f7a4d4534331ed937e604893a115c480" args="(double tol)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bvp::ddm::set_tolerance           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<div class="fragment"><pre class="fragment"><a name="l00100"></a>00100                                    {
<a name="l00101"></a>00101     <a class="code" href="classbvp_1_1ddm.html#ab02efc5912dbe803c17cd4cfb4ed5c9">tolerance</a> = tol;    
<a name="l00102"></a>00102   }
</pre></div>
<p>

</div>
</div><p>
<a class="anchor" name="d7c6ac93874c610b9bc22a5538a40390"></a><!-- doxytag: member="bvp::ddm::at" ref="d7c6ac93874c610b9bc22a5538a40390" args="(const point &amp;p) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual double bvp::ddm::at           </td>
          <td>(</td>
          <td class="paramtype">const point &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Implemented in <a class="el" href="classbvp_1_1additive__schwarz__ddm.html#338a5269cd3e001df6c6a0b05140be1f">bvp::additive_schwarz_ddm&lt; RBF &gt;</a>.</p>

</div>
</div><p>
<a class="anchor" name="dd283782e9a0c6114a9b4d3c22d3c270"></a><!-- doxytag: member="bvp::ddm::operator()" ref="dd283782e9a0c6114a9b4d3c22d3c270" args="(const point &amp;p) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double bvp::ddm::operator()           </td>
          <td>(</td>
          <td class="paramtype">const point &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104                                             {
<a name="l00105"></a>00105     <span class="keywordflow">return</span> <a class="code" href="classbvp_1_1ddm.html#d7c6ac93874c610b9bc22a5538a40390">at</a>(p);
<a name="l00106"></a>00106   }
</pre></div>
<p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classbvp_1_1ddm_dd283782e9a0c6114a9b4d3c22d3c270_cgraph.png" border="0" usemap="#classbvp_1_1ddm_dd283782e9a0c6114a9b4d3c22d3c270_cgraph_map" alt=""></center>
<map name="classbvp_1_1ddm_dd283782e9a0c6114a9b4d3c22d3c270_cgraph_map">
<area shape="rect" href="classbvp_1_1ddm.html#d7c6ac93874c610b9bc22a5538a40390" title="bvp::ddm::at" alt="" coords="209,5,311,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="7fbcf71573a76e315829fa0c2d2f56e6"></a><!-- doxytag: member="bvp::ddm::solve" ref="7fbcf71573a76e315829fa0c2d2f56e6" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void bvp::ddm::solve           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Implemented in <a class="el" href="classbvp_1_1additive__schwarz__ddm.html#a6f5045b43f412e3c8feffe69338345e">bvp::additive_schwarz_ddm&lt; RBF &gt;</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="1c0240b22224562065f30bf9d0301d50"></a><!-- doxytag: member="bvp::ddm::bvp" ref="1c0240b22224562065f30bf9d0301d50" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">shared_ptr&lt;const <a class="el" href="classbvp_1_1BVP.html">BVP</a>&gt; <a class="el" href="classbvp_1_1ddm.html#1c0240b22224562065f30bf9d0301d50">bvp::ddm::bvp</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="f2e30635e9973ff63f0db0f2a1fa731e"></a><!-- doxytag: member="bvp::ddm::domains" ref="f2e30635e9973ff63f0db0f2a1fa731e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">set&lt;shared_ptr&lt;const <a class="el" href="classbvp_1_1domain.html">domain</a>&gt; &gt; <a class="el" href="classbvp_1_1ddm.html#f2e30635e9973ff63f0db0f2a1fa731e">bvp::ddm::domains</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="ab02efc5912dbe803c17cd4cfb4ed5c9"></a><!-- doxytag: member="bvp::ddm::tolerance" ref="ab02efc5912dbe803c17cd4cfb4ed5c9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classbvp_1_1ddm.html#ab02efc5912dbe803c17cd4cfb4ed5c9">bvp::ddm::tolerance</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li>include/<a class="el" href="ddm_8hpp-source.html">ddm.hpp</a><li><a class="el" href="ddm_8cpp.html">ddm.cpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat Jun 28 00:33:26 2008 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>