Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > d5e74628f0e673bb8680aebce32b2c04 > files > 11698

itk-doc-3.12.0-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ITK: itk::fem::Solver Class Reference</title>
<link href="DoxygenStyle.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">


<!--  Section customized for INSIGHT : Tue Jul 17 01:02:45 2001 -->
<center>
<a href="index.html" class="qindex">Main Page</a>&nbsp;&nbsp; 
<a href="modules.html" class="qindex">Groups</a>&nbsp;&nbsp;
<a href="namespaces.html" class="qindex">Namespace List</a>&nbsp;&nbsp;
<a href="hierarchy.html" class="qindex">Class Hierarchy</a>&nbsp;&nbsp;
<a href="classes.html" class="qindex">Alphabetical List</a>&nbsp;&nbsp;
<a href="annotated.html" class="qindex">Compound List</a>&nbsp;&nbsp; 
<a href="files.html" class="qindex">File
List</a>&nbsp;&nbsp; 
<a href="namespacemembers.html" class="qindex">Namespace Members</a>&nbsp;&nbsp; 
<a href="functions.html" class="qindex">Compound Members</a>&nbsp;&nbsp; 
<a href="globals.html" class="qindex">File Members</a>&nbsp;&nbsp;
<a href="pages.html" class="qindex">Concepts</a></center>


<!-- Generated by Doxygen 1.5.9 -->
  <div class="navpath"><a class="el" href="namespaceitk.html">itk</a>::<a class="el" href="namespaceitk_1_1fem.html">fem</a>::<a class="el" href="classitk_1_1fem_1_1Solver.html">Solver</a>
  </div>
<div class="contents">
<h1>itk::fem::Solver Class Reference</h1><!-- doxytag: class="itk::fem::Solver" -->Main FEM solver.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for itk::fem::Solver:</div>
<div class="dynsection">
<p><center><img src="classitk_1_1fem_1_1Solver__inherit__graph.png" border="0" usemap="#itk_1_1fem_1_1Solver__inherit__map" alt="Inheritance graph"></center>
<map name="itk_1_1fem_1_1Solver__inherit__map">
<area shape="rect" id="node3" href="classitk_1_1fem_1_1SolverHyperbolic.html" title="Solver class suitable for hyperbolic problems." alt="" coords="5,83,200,112"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
<div class="dynheader">
Collaboration diagram for itk::fem::Solver:</div>
<div class="dynsection">
<p><center><img src="classitk_1_1fem_1_1Solver__coll__graph.png" border="0" usemap="#itk_1_1fem_1_1Solver__coll__map" alt="Collaboration graph"></center>
<map name="itk_1_1fem_1_1Solver__coll__map">
<area shape="rect" id="node2" href="classitk_1_1fem_1_1FEMPArray.html" title="Array for FEMP objects." alt="" coords="513,47,708,76"><area shape="rect" id="node4" href="classitk_1_1fem_1_1LinearSystemWrapperVNL.html" title="LinearSystemWrapper class that uses VNL numeric library functions to define a sparse..." alt="" coords="481,100,740,129"><area shape="rect" id="node6" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a..." alt="" coords="196,100,428,129"><area shape="rect" id="node8" href="classitk_1_1fem_1_1Solution.html" title="Provides functions to access the values of the solution vector." alt="" coords="5,100,144,129"><area shape="rect" id="node10" href="classitk_1_1SmartPointer.html" title="Implements transparent reference counting." alt="" coords="484,153,737,183"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classitk_1_1fem_1_1Solver-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 Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Element::ArrayType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#2d5529ae60b8ce66e8540e49bbc23f2f">ElementArray</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1fem_1_1Element.html#c55f879c15daa302723012b7f9d21b94">Element::Float</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1Image.html">itk::Image</a><br class="typebreak">
&lt; <a class="el" href="classitk_1_1fem_1_1Element.html">Element::ConstPointer</a>, <br class="typebreak">
MaxGridDimensions &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#1ed801173a178f4b73db7c1863cfed9f">InterpolationGridType</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Load::ArrayType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#964128f515d7ba6b804c4cbee9bdc016">LoadArray</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Material::ArrayType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#ffae74f3d9d2de8d0453c25e7efb657f">MaterialArray</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Node::ArrayType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#e18f600e4f3b1782d74257b0f33c5636">NodeArray</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classvnl__vector.html">Element::VectorType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#442958a53672d2899b2f81c8547777df">VectorType</a></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#826f03c2fb925f35e59cdf5a9d4f241f">ApplyBC</a> (int dim=0, unsigned int matrix=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#c7b511053301115cf987b7bbdba6ebc1">AssembleElementMatrix</a> (<a class="el" href="classitk_1_1fem_1_1Element.html">Element::Pointer</a> e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#53397f2e367f07721f566edf6ee7ed3f">AssembleF</a> (int dim=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#344ef3f19bfcf305af43d54597632782">AssembleK</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#4e4526c203e081c8f4b2f8b4adf7f5da">AssembleLandmarkContribution</a> (<a class="el" href="classitk_1_1fem_1_1Element.html">Element::Pointer</a> e, float)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#7a255226c48b5bda03911d3f16d27c82">Clear</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#b79d74274c60fde250264200bc47a76a">DecomposeK</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#ddea79b5dbd2ea4d005e9a600a0ae56d">FinalizeMatrixAfterAssembly</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#e264fad911491bc0bd58efd7ebfbcbdf">GenerateGFN</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#fe57d9dd39f8ea6d748f53f3b8131c56">GetDeformationEnergy</a> (unsigned int SolutionIndex=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classitk_1_1fem_1_1Element.html">Element</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#283bf84597aaa88dfc132d37d3059a79">GetElementAtPoint</a> (const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;pt) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classitk_1_1Image.html">InterpolationGridType</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#b1cc210b38e6cc6193df4503c6813912">GetInterpolationGrid</a> (void) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#fe05ec0b4b1b5a52a5bfb712fc2a38ff">GetLinearSystemWrapper</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#b4976b11a31382a3e6e2f34a990a44fb">GetNumberOfDegreesOfFreedom</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#0f341208c8516aa18a2194133edbfc02">GetSolution</a> (unsigned int i, unsigned int which=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#75f96c6a8282cdc4728e481a57ca43cd">GetTimeStep</a> (void) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#c648debf94f686eadb682c14ae8625ba">InitializeInterpolationGrid</a> (const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;size, const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;bb1, const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;bb2)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#78a8a446bf308b3ea8cc4c85ce049738">InitializeLinearSystemWrapper</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#789cc6c7beebce0f37f5c3ceb290de7f">InitializeMatrixForAssembly</a> (unsigned int N)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#954e93629e4055eaff0c12b09b1ec712">itkStaticConstMacro</a> (MaxGridDimensions, unsigned int, 3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#9292175bd5f735b99fd37a605f39a8aa">Read</a> (std::istream &amp;f)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#b6f9f5c887c1a4468a80d99006f5f694">SetLinearSystemWrapper</a> (<a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a> ls)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#0b12daf400b92c77a18dba496e7df108">SetTimeStep</a> (<a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a>)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#51a30382e69273da15b8f8967eb58f96">Solve</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#7983575d156eebdf44afbb04844bf692">Solver</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#ceddbdcb541ac5e99eb41fd8794b1275">UpdateDisplacements</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#84bd13e3a4d716c9f8b5dd628b454d33">Write</a> (std::ostream &amp;f)</td></tr>

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

<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#3e7dc50c626fbe771ab9dcc5d7f3daa3">InitializeInterpolationGrid</a> (const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;size)</td></tr>

<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">ElementArray</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#6f2852ca227980b30bb1cc0ee3f5260f">el</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">LoadArray</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#7f6bb9739f97c41a075d25f02c66395b">load</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">MaterialArray</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#75e35b0c24e7ac0be0b88ccba5cb23f6">mat</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">NodeArray</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#6762185b526b949d140efe0b36792f6b">node</a></td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#22ce8e0f6c63c72542aa83a4055d76e4">m_ls</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#0a7e098e5ae7324ae62afcdb62d391d2">NGFN</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitk_1_1fem_1_1Solver.html#7ad5f5085b838f93bf12e9a1736d9b44">NMFC</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Main FEM solver. 
<p>
This is the main class used for solving the FEM problems. It also stores all the objects that define the specific FEM problem. Normally there is one <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> object for each FEM problem. 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00041">41</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="2d5529ae60b8ce66e8540e49bbc23f2f"></a><!-- doxytag: member="itk::fem::Solver::ElementArray" ref="2d5529ae60b8ce66e8540e49bbc23f2f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Element::ArrayType</a> <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">itk::fem::Solver::ElementArray</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array</a> that holds pointers to all elements. since we want to be able to manipulate the array we have to use special pointers 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00054">54</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="335c6c3cfdae6e714302d4da3e9b3c37"></a><!-- doxytag: member="itk::fem::Solver::Float" ref="335c6c3cfdae6e714302d4da3e9b3c37" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1fem_1_1Element.html#c55f879c15daa302723012b7f9d21b94">Element::Float</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">itk::fem::Solver::Float</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Local float type 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00048">48</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="1ed801173a178f4b73db7c1863cfed9f"></a><!-- doxytag: member="itk::fem::Solver::InterpolationGridType" ref="1ed801173a178f4b73db7c1863cfed9f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1Image.html">itk::Image</a>&lt;<a class="el" href="classitk_1_1fem_1_1Element.html">Element::ConstPointer</a>,MaxGridDimensions&gt; <a class="el" href="classitk_1_1Image.html">itk::fem::Solver::InterpolationGridType</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Type used to store interpolation grid 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00095">95</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="964128f515d7ba6b804c4cbee9bdc016"></a><!-- doxytag: member="itk::fem::Solver::LoadArray" ref="964128f515d7ba6b804c4cbee9bdc016" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Load::ArrayType</a> <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">itk::fem::Solver::LoadArray</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array</a> that holds special pointers to all external loads 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00066">66</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="ffae74f3d9d2de8d0453c25e7efb657f"></a><!-- doxytag: member="itk::fem::Solver::MaterialArray" ref="ffae74f3d9d2de8d0453c25e7efb657f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Material::ArrayType</a> <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">itk::fem::Solver::MaterialArray</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array</a> that holds pointers to the materials 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00072">72</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="e18f600e4f3b1782d74257b0f33c5636"></a><!-- doxytag: member="itk::fem::Solver::NodeArray" ref="e18f600e4f3b1782d74257b0f33c5636" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">Node::ArrayType</a> <a class="el" href="classitk_1_1fem_1_1FEMPArray.html">itk::fem::Solver::NodeArray</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array</a> that holds special pointers to the nodes 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00060">60</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="442958a53672d2899b2f81c8547777df"></a><!-- doxytag: member="itk::fem::Solver::VectorType" ref="442958a53672d2899b2f81c8547777df" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classvnl__vector.html">Element::VectorType</a> <a class="el" href="classvnl__vector.html">itk::fem::Solver::VectorType</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
VectorType from the <a class="el" href="classitk_1_1fem_1_1Element.html" title="Abstract base element class.">Element</a> base class 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00078">78</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="7983575d156eebdf44afbb04844bf692"></a><!-- doxytag: member="itk::fem::Solver::Solver" ref="7983575d156eebdf44afbb04844bf692" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">itk::fem::Solver::Solver           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Default constructor sets <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> to use VNL linear system . <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classitk_1_1fem_1_1Solver.html#b6f9f5c887c1a4468a80d99006f5f694">Solver::SetLinearSystemWrapper</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="b6c84cc43b52be9eb0eafebc449bd35e"></a><!-- doxytag: member="itk::fem::Solver::~Solver" ref="b6c84cc43b52be9eb0eafebc449bd35e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual itk::fem::Solver::~Solver           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Virtual destructor 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00275">275</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="826f03c2fb925f35e59cdf5a9d4f241f"></a><!-- doxytag: member="itk::fem::Solver::ApplyBC" ref="826f03c2fb925f35e59cdf5a9d4f241f" args="(int dim=0, unsigned int matrix=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::ApplyBC           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>dim</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>matrix</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Apply the boundary conditions to the system.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This function must be called after <a class="el" href="classitk_1_1fem_1_1Solver.html#344ef3f19bfcf305af43d54597632782">AssembleK()</a>.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>matrix</em>&nbsp;</td><td><a class="el" href="classitk_1_1Index.html" title="Represent a n-dimensional index in a n-dimensional image.">Index</a> of a matrix, to which the BCs should be applied (master stiffness matrix). Normally this is zero, but in derived classes many matrices may be used and this index must be specified. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dim</em>&nbsp;</td><td>This is a parameter that can be passed to the function and is normally used with isotropic elements to specify the dimension in which the DOF is fixed. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="itkFEMSolver_8h_source.html#l00189">FinalizeMatrixAfterAssembly()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c7b511053301115cf987b7bbdba6ebc1"></a><!-- doxytag: member="itk::fem::Solver::AssembleElementMatrix" ref="c7b511053301115cf987b7bbdba6ebc1" args="(Element::Pointer e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::AssembleElementMatrix           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classitk_1_1fem_1_1Element.html">Element::Pointer</a>&nbsp;</td>
          <td class="paramname"> <em>e</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy the element stiffness matrix into the correct position in the master stiffess matrix. Since more complex <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> classes may need to assemble many matrices and may also do some funky stuff to them, this function is virtual and can be overriden in a derived solver class. 
<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#03d46fc9cc94241e55d9413302f8ad17">itk::fem::SolverHyperbolic</a>.</p>

</div>
</div><p>
<a class="anchor" name="53397f2e367f07721f566edf6ee7ed3f"></a><!-- doxytag: member="itk::fem::Solver::AssembleF" ref="53397f2e367f07721f566edf6ee7ed3f" args="(int dim=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::AssembleF           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>dim</em> = <code>0</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assemble the master force vector.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dim</em>&nbsp;</td><td>This is a parameter that can be passed to the function and is normally used with isotropic elements to specify the dimension for which the master force vector should be assembled. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="344ef3f19bfcf305af43d54597632782"></a><!-- doxytag: member="itk::fem::Solver::AssembleK" ref="344ef3f19bfcf305af43d54597632782" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::AssembleK           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assemble the master stiffness matrix (also apply the MFCs to K) 
</div>
</div><p>
<a class="anchor" name="4e4526c203e081c8f4b2f8b4adf7f5da"></a><!-- doxytag: member="itk::fem::Solver::AssembleLandmarkContribution" ref="4e4526c203e081c8f4b2f8b4adf7f5da" args="(Element::Pointer e, float)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::AssembleLandmarkContribution           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classitk_1_1fem_1_1Element.html">Element::Pointer</a>&nbsp;</td>
          <td class="paramname"> <em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add the contribution of the landmark-containing elements to the correct position in the master stiffess matrix. Since more complex <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> classes may need to assemble many matrices and may also do some funky stuff to them, this function is virtual and can be overriden in a derived solver class. 
</div>
</div><p>
<a class="anchor" name="7a255226c48b5bda03911d3f16d27c82"></a><!-- doxytag: member="itk::fem::Solver::Clear" ref="7a255226c48b5bda03911d3f16d27c82" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::Clear           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Cleans all data members, and initializes the solver to initial state. 
</div>
</div><p>
<a class="anchor" name="b79d74274c60fde250264200bc47a76a"></a><!-- doxytag: member="itk::fem::Solver::DecomposeK" ref="b79d74274c60fde250264200bc47a76a" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::DecomposeK           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Decompose matrix using svd, qr, whatever ... 
</div>
</div><p>
<a class="anchor" name="ddea79b5dbd2ea4d005e9a600a0ae56d"></a><!-- doxytag: member="itk::fem::Solver::FinalizeMatrixAfterAssembly" ref="ddea79b5dbd2ea4d005e9a600a0ae56d" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::FinalizeMatrixAfterAssembly           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function is called after the assebly has been completed. In this class it is only used to apply the BCs. You may however use it to perform other stuff in derived solver classes. 
<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#0800c95b6607fab3adc27d2a2d722da4">itk::fem::SolverHyperbolic</a>.</p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00189">189</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="classitk_1_1fem_1_1Solver.html#826f03c2fb925f35e59cdf5a9d4f241f">ApplyBC()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e264fad911491bc0bd58efd7ebfbcbdf"></a><!-- doxytag: member="itk::fem::Solver::GenerateGFN" ref="e264fad911491bc0bd58efd7ebfbcbdf" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::GenerateGFN           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
System solver functions. Call all six functions below (in listed order) to solve system. Assign a global freedom numbers to each DOF in a system. This must be done before any other solve function can be called. 
</div>
</div><p>
<a class="anchor" name="fe57d9dd39f8ea6d748f53f3b8131c56"></a><!-- doxytag: member="itk::fem::Solver::GetDeformationEnergy" ref="fe57d9dd39f8ea6d748f53f3b8131c56" args="(unsigned int SolutionIndex=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a> itk::fem::Solver::GetDeformationEnergy           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>SolutionIndex</em> = <code>0</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the total deformation energy using the chosen solution 
</div>
</div><p>
<a class="anchor" name="283bf84597aaa88dfc132d37d3059a79"></a><!-- doxytag: member="itk::fem::Solver::GetElementAtPoint" ref="283bf84597aaa88dfc132d37d3059a79" args="(const VectorType &amp;pt) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classitk_1_1fem_1_1Element.html">Element</a>* itk::fem::Solver::GetElementAtPoint           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pt</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the pointer to the element which contains global point pt.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pt</em>&nbsp;</td><td><a class="el" href="classitk_1_1Point.html" title="A templated class holding a geometric point in n-Dimensional space.">Point</a> in global coordinate system.</td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Interpolation grid must be initializes before you can call this function. </dd></dl>

</div>
</div><p>
<a class="anchor" name="b1cc210b38e6cc6193df4503c6813912"></a><!-- doxytag: member="itk::fem::Solver::GetInterpolationGrid" ref="b1cc210b38e6cc6193df4503c6813912" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classitk_1_1Image.html">InterpolationGridType</a>* itk::fem::Solver::GetInterpolationGrid           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns pointer to interpolation grid, which is an <a class="el" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">itk::Image</a> of pointers to <a class="el" href="classitk_1_1fem_1_1Element.html" title="Abstract base element class.">Element</a> objects. Normally you would use physical coordinates to get specific points (pointers to elements) from the image. You can then use the Elemenet::InterpolateSolution member function on the returned element to obtain the solution at this point.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Physical coordinates in an image correspond to the global coordinate system in which the mesh (nodes) are. </dd></dl>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00132">132</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="itkSmartPointer_8h_source.html#l00094">itk::SmartPointer&lt; TObjectType &gt;::GetPointer()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fe05ec0b4b1b5a52a5bfb712fc2a38ff"></a><!-- doxytag: member="itk::fem::Solver::GetLinearSystemWrapper" ref="fe05ec0b4b1b5a52a5bfb712fc2a38ff" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a> itk::fem::Solver::GetLinearSystemWrapper           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Gets the <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classitk_1_1fem_1_1Solver.html#b6f9f5c887c1a4468a80d99006f5f694">SetLinearSystemWrapper</a> </dd></dl>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00298">298</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="itkFEMSolver_8h_source.html#l00332">m_ls</a>.</p>

</div>
</div><p>
<a class="anchor" name="b4976b11a31382a3e6e2f34a990a44fb"></a><!-- doxytag: member="itk::fem::Solver::GetNumberOfDegreesOfFreedom" ref="b4976b11a31382a3e6e2f34a990a44fb" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int itk::fem::Solver::GetNumberOfDegreesOfFreedom           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00257">257</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="itkFEMSolver_8h_source.html#l00323">NGFN</a>.</p>

</div>
</div><p>
<a class="anchor" name="0f341208c8516aa18a2194133edbfc02"></a><!-- doxytag: member="itk::fem::Solver::GetSolution" ref="0f341208c8516aa18a2194133edbfc02" args="(unsigned int i, unsigned int which=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a> itk::fem::Solver::GetSolution           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>which</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00252">252</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="classitk_1_1fem_1_1Solution.html#4d4ea59c159d3d809bd5f7cb83f44818">itk::fem::Solution::GetSolutionValue()</a>, and <a class="el" href="itkFEMSolver_8h_source.html#l00332">m_ls</a>.</p>

</div>
</div><p>
<a class="anchor" name="75f96c6a8282cdc4728e481a57ca43cd"></a><!-- doxytag: member="itk::fem::Solver::GetTimeStep" ref="75f96c6a8282cdc4728e481a57ca43cd" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a> itk::fem::Solver::GetTimeStep           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the time step used for dynamic problems. 
<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#8afd09ea54670b9e9f360fc304b42362">itk::fem::SolverHyperbolic</a>.</p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00309">309</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3e7dc50c626fbe771ab9dcc5d7f3daa3"></a><!-- doxytag: member="itk::fem::Solver::InitializeInterpolationGrid" ref="3e7dc50c626fbe771ab9dcc5d7f3daa3" args="(const VectorType &amp;size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::InitializeInterpolationGrid           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>size</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as InitializeInterpolationGrid(size, {0,0...}, size); 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00116">116</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>References <a class="el" href="classitk_1_1fem_1_1Solver.html#c648debf94f686eadb682c14ae8625ba">InitializeInterpolationGrid()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c648debf94f686eadb682c14ae8625ba"></a><!-- doxytag: member="itk::fem::Solver::InitializeInterpolationGrid" ref="c648debf94f686eadb682c14ae8625ba" args="(const VectorType &amp;size, const VectorType &amp;bb1, const VectorType &amp;bb2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::InitializeInterpolationGrid           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bb1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classvnl__vector.html">VectorType</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bb2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize the interpolation grid. The interpolation grid is used to find elements that containg specific points in a mesh. The interpolation grid stores pointers to elements for each point on a grid thereby providing a fast way (lookup table) to perform interpolation of results.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Interpolation grid must be reinitialized each time a mesh changes.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><a class="el" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector</a> that represents number of points on a grid in each dimension. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bb1</em>&nbsp;</td><td>Lower limit of a bounding box of a grid. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bb2</em>&nbsp;</td><td>Upper limit of a bounding box of a grid.</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classitk_1_1fem_1_1Solver.html#b1cc210b38e6cc6193df4503c6813912">GetInterpolationGrid</a> </dd></dl>

<p>Referenced by <a class="el" href="itkFEMSolver_8h_source.html#l00116">InitializeInterpolationGrid()</a>.</p>

</div>
</div><p>
<a class="anchor" name="78a8a446bf308b3ea8cc4c85ce049738"></a><!-- doxytag: member="itk::fem::Solver::InitializeLinearSystemWrapper" ref="78a8a446bf308b3ea8cc4c85ce049738" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::InitializeLinearSystemWrapper           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Performs any initialization needed for <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object i.e. sets the maximum number of matrices and vectors. 
<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#8518b25eef86b2e632d5b9d894f9d7d2">itk::fem::SolverHyperbolic</a>.</p>

</div>
</div><p>
<a class="anchor" name="789cc6c7beebce0f37f5c3ceb290de7f"></a><!-- doxytag: member="itk::fem::Solver::InitializeMatrixForAssembly" ref="789cc6c7beebce0f37f5c3ceb290de7f" args="(unsigned int N)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::InitializeMatrixForAssembly           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>N</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function is called before assembling the matrices. You can override it in a derived class to account for special needs.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>N</em>&nbsp;</td><td><a class="el" href="classitk_1_1Size.html" title="Represent the size (bounds) of a n-dimensional image.">Size</a> of the matrix. </td></tr>
  </table>
</dl>

<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#3eac16ca082e55720f7284074f6788a6">itk::fem::SolverHyperbolic</a>.</p>

</div>
</div><p>
<a class="anchor" name="954e93629e4055eaff0c12b09b1ec712"></a><!-- doxytag: member="itk::fem::Solver::itkStaticConstMacro" ref="954e93629e4055eaff0c12b09b1ec712" args="(MaxGridDimensions, unsigned int, 3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">itk::fem::Solver::itkStaticConstMacro           </td>
          <td>(</td>
          <td class="paramtype">MaxGridDimensions&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>int</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">3&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Since the <a class="el" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">itk::Image</a> is templated over the number of dimensions, we have to know this at compile time. <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> class, however, can handle elements in any number of dimensions. In order to be able to use the <a class="el" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image</a>, we choose the maximum number of space dimension that this function will be able to handle. Any unused dimensions are filled with zero.<p>
For example: If a 2D node coordinates are {1.0,3.0} then the corresponding phisycal point in an image is {1.0,3.0,0.0}; 
</div>
</div><p>
<a class="anchor" name="9292175bd5f735b99fd37a605f39a8aa"></a><!-- doxytag: member="itk::fem::Solver::Read" ref="9292175bd5f735b99fd37a605f39a8aa" args="(std::istream &amp;f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::Read           </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&nbsp;</td>
          <td class="paramname"> <em>f</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reads the whole system (nodes, materials and elements) from input stream 
</div>
</div><p>
<a class="anchor" name="b6f9f5c887c1a4468a80d99006f5f694"></a><!-- doxytag: member="itk::fem::Solver::SetLinearSystemWrapper" ref="b6f9f5c887c1a4468a80d99006f5f694" args="(LinearSystemWrapper::Pointer ls)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::SetLinearSystemWrapper           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a>&nbsp;</td>
          <td class="paramname"> <em>ls</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object that will be used when solving the master equation. If this function is not called, a default VNL linear system representation will be used (class <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapperVNL.html" title="LinearSystemWrapper class that uses VNL numeric library functions to define a sparse...">LinearSystemWrapperVNL</a>).<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ls</em>&nbsp;</td><td>Pointer to an object of class which is derived from <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a>.</td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Once the <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object is changed, it is used until the member function SetLinearSystemWrapper is called again. Since <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object was created outside the <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> class, it should also be destroyed outside. <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> class will not destroy it when the <a class="el" href="classitk_1_1fem_1_1Solver.html" title="Main FEM solver.">Solver</a> object is destroyed. </dd></dl>

</div>
</div><p>
<a class="anchor" name="0b12daf400b92c77a18dba496e7df108"></a><!-- doxytag: member="itk::fem::Solver::SetTimeStep" ref="0b12daf400b92c77a18dba496e7df108" args="(Float)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::SetTimeStep           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classitk_1_1fem_1_1Solver.html#335c6c3cfdae6e714302d4da3e9b3c37">Float</a>&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the time step used for dynamic problems.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dt</em>&nbsp;</td><td>New time step. </td></tr>
  </table>
</dl>

<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#064e3931373db951b4d959b58839e14e">itk::fem::SolverHyperbolic</a>.</p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00316">316</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="51a30382e69273da15b8f8967eb58f96"></a><!-- doxytag: member="itk::fem::Solver::Solve" ref="51a30382e69273da15b8f8967eb58f96" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void itk::fem::Solver::Solve           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Solve for the displacement vector u. May be overriden in derived classes. 
<p>Reimplemented in <a class="el" href="classitk_1_1fem_1_1SolverHyperbolic.html#5dce1285ae4318f4bf05435300bbf9ef">itk::fem::SolverHyperbolic</a>.</p>

</div>
</div><p>
<a class="anchor" name="ceddbdcb541ac5e99eb41fd8794b1275"></a><!-- doxytag: member="itk::fem::Solver::UpdateDisplacements" ref="ceddbdcb541ac5e99eb41fd8794b1275" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::UpdateDisplacements           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy solution vector u to the corresponding nodal values, which are stored in node objects). This is standard post processing of the solution 
</div>
</div><p>
<a class="anchor" name="84bd13e3a4d716c9f8b5dd628b454d33"></a><!-- doxytag: member="itk::fem::Solver::Write" ref="84bd13e3a4d716c9f8b5dd628b454d33" args="(std::ostream &amp;f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void itk::fem::Solver::Write           </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&nbsp;</td>
          <td class="paramname"> <em>f</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Writes everything (nodes, materials and elements) to output stream 
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="6f2852ca227980b30bb1cc0ee3f5260f"></a><!-- doxytag: member="itk::fem::Solver::el" ref="6f2852ca227980b30bb1cc0ee3f5260f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">ElementArray</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#6f2852ca227980b30bb1cc0ee3f5260f">itk::fem::Solver::el</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00055">55</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="7f6bb9739f97c41a075d25f02c66395b"></a><!-- doxytag: member="itk::fem::Solver::load" ref="7f6bb9739f97c41a075d25f02c66395b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">LoadArray</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#7f6bb9739f97c41a075d25f02c66395b">itk::fem::Solver::load</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00067">67</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="22ce8e0f6c63c72542aa83a4055d76e4"></a><!-- doxytag: member="itk::fem::Solver::m_ls" ref="22ce8e0f6c63c72542aa83a4055d76e4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html">LinearSystemWrapper::Pointer</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#22ce8e0f6c63c72542aa83a4055d76e4">itk::fem::Solver::m_ls</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to <a class="el" href="classitk_1_1fem_1_1LinearSystemWrapper.html" title="Defines all functions required by Solver class to allocate, assemble and solve a...">LinearSystemWrapper</a> object. 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00332">332</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>Referenced by <a class="el" href="itkFEMSolver_8h_source.html#l00298">GetLinearSystemWrapper()</a>, and <a class="el" href="itkFEMSolver_8h_source.html#l00252">GetSolution()</a>.</p>

</div>
</div><p>
<a class="anchor" name="75e35b0c24e7ac0be0b88ccba5cb23f6"></a><!-- doxytag: member="itk::fem::Solver::mat" ref="75e35b0c24e7ac0be0b88ccba5cb23f6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">MaterialArray</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#75e35b0c24e7ac0be0b88ccba5cb23f6">itk::fem::Solver::mat</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00073">73</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="0a7e098e5ae7324ae62afcdb62d391d2"></a><!-- doxytag: member="itk::fem::Solver::NGFN" ref="0a7e098e5ae7324ae62afcdb62d391d2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classitk_1_1fem_1_1Solver.html#0a7e098e5ae7324ae62afcdb62d391d2">itk::fem::Solver::NGFN</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Number of global degrees of freedom in a system 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00323">323</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

<p>Referenced by <a class="el" href="itkFEMSolver_8h_source.html#l00257">GetNumberOfDegreesOfFreedom()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ad5f5085b838f93bf12e9a1736d9b44"></a><!-- doxytag: member="itk::fem::Solver::NMFC" ref="7ad5f5085b838f93bf12e9a1736d9b44" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classitk_1_1fem_1_1Solver.html#7ad5f5085b838f93bf12e9a1736d9b44">itk::fem::Solver::NMFC</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Number of multi freedom constraints in a system. This member is set in a AssembleK function. 
<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00329">329</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6762185b526b949d140efe0b36792f6b"></a><!-- doxytag: member="itk::fem::Solver::node" ref="6762185b526b949d140efe0b36792f6b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classitk_1_1fem_1_1FEMPArray.html">NodeArray</a> <a class="el" href="classitk_1_1fem_1_1Solver.html#6762185b526b949d140efe0b36792f6b">itk::fem::Solver::node</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="itkFEMSolver_8h_source.html#l00061">61</a> of file <a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="itkFEMSolver_8h_source.html">itkFEMSolver.h</a></ul>
</div>
<hr><address><small>
Generated at Fri May 8 08:53:31 2009 for ITK  by <a href="http://www.stack.nl/~dimitri/doxygen/index.html"> <img 
src="http://www.stack.nl/~dimitri/doxygen/doxygen.png" alt="doxygen"
align="middle" border=0 width=110 height=53>
</a> 1.5.9 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2000</small></address>
</body>
</html>