ITK  4.2.0
Insight Segmentation and Registration Toolkit
itkFEMLoadBCMFC.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __itkFEMLoadBCMFC_h
19 #define __itkFEMLoadBCMFC_h
20 
21 #include "itkFEMLoadBase.h"
22 
23 namespace itk
24 {
25 namespace fem
26 {
51 
52 // forward declaratons...
53 // class Solver;
54 
55 class LoadBCMFC : public Load
56 {
57 public:
59  typedef LoadBCMFC Self;
60  typedef Load Superclass;
63 
65  itkSimpleNewMacro(Self);
66 
68  itkTypeMacro(LoadBCMFC, Load);
69 
72  virtual::itk::LightObject::Pointer CreateAnother(void) const;
73 
80  class MFCTerm
81  {
82  public:
83 
88 
92  unsigned int dof;
93 
98 
102  MFCTerm(Element::ConstPointer element_, int dof_,
103  Element::Float value_) : m_element(element_), dof(dof_), value(value_)
104  {
105  }
106  };
107 
111  typedef std::vector<MFCTerm> LhsType;
112 
115 
126 
129  void SetIndex(int ind);
130 
133  int GetIndex();
134 
137 
141 
143  int GetNumberOfLeftHandSideTerms() const;
144 
146  int GetNumberOfRightHandSideTerms() const;
147 
149  const MFCTerm GetLeftHandSideTerm(int lhs) const;
150 
152  Element::Float GetRightHandSideTerm(int rhs) const;
153 
156  const std::vector<MFCTerm> & GetLeftHandSideArray() const;
157  std::vector<MFCTerm> & GetLeftHandSideArray();
159 
163 
164 // friend class Solver;
165 protected:
166  virtual void PrintSelf(std::ostream& os, Indent indent) const;
167 
168  // private: // FIXME: CrankNicolsonSolver class, which is derived from Solver
169  // class also needs access to Index.
171  int m_Index;
172 
174 
182 };
183 
184 }
185 } // end namespace itk::fem
186 
187 #endif // #ifndef __itkFEMLoadBCMFC_h
188