ITK  4.9.0
Insight Segmentation and Registration Toolkit
itkFEMElement3DMembrane1DOF.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 
19 #ifndef itkFEMElement3DMembrane1DOF_h
20 #define itkFEMElement3DMembrane1DOF_h
21 
22 #include "itkFEMElementBase.h"
24 
25 namespace itk
26 {
27 namespace fem
28 {
44 template <typename TBaseClass = Element>
45 class Element3DMembrane1DOF : public TBaseClass
46 {
47 public:
48 
51  typedef TBaseClass Superclass;
54 
56  itkTypeMacro(Element3DMembrane1DOF, TBaseClass);
57 
58  // Repeat the required typedefs and enums from parent class
59  typedef typename Superclass::Float Float;
62 
67 
68  // ////////////////////////////////////////////////////////////////////////
69  /*
70  * Methods related to the physics of the problem.
71  */
72 
76  virtual void GetStrainDisplacementMatrix(MatrixType & B, const MatrixType & shapeDgl) const ITK_OVERRIDE;
77 
81  virtual void GetMaterialMatrix(MatrixType & D) const ITK_OVERRIDE;
82 
86  void GetMassMatrix(MatrixType & Me) const ITK_OVERRIDE;
87 
91  virtual unsigned int GetNumberOfDegreesOfFreedomPerNode(void) const ITK_OVERRIDE
92  {
93  return 3;
94  }
95 
97  virtual void GetStiffnessMatrix(MatrixType & Ke) const ITK_OVERRIDE;
98 
102  virtual Material::ConstPointer GetMaterial(void) const ITK_OVERRIDE
103  {
104  return dynamic_cast<const Material *>(m_Mat.GetPointer());
105  }
106 
107  virtual void SetMaterial(Material::ConstPointer mat_) ITK_OVERRIDE
108  {
109  m_Mat =
110  dynamic_cast<const MaterialLinearElasticity *>( mat_.GetPointer() );
111  }
112 
113 protected:
114 
115  virtual void PrintSelf(std::ostream& os, Indent indent) const ITK_OVERRIDE;
116 
121 
122 }; // class Element3DMembrane1DOF
123 
124 }
125 } // end namespace itk::fem
126 
127 #ifndef ITK_MANUAL_INSTANTIATION
128 #include "itkFEMElement3DMembrane1DOF.hxx"
129 #endif
130 
131 #endif // #ifndef itkFEMElement3DMembrane1DOF_h
virtual void PrintSelf(std::ostream &os, Indent indent) const override
virtual void SetMaterial(Material::ConstPointer mat_) override
virtual void GetStiffnessMatrix(MatrixType &Ke) const override
virtual unsigned int GetNumberOfDegreesOfFreedomPerNode(void) const override
ObjectType * GetPointer() const
vnl_matrix< Float > MatrixType
Linear elasticity material class.
Base class for storing all the implicit material and other properties required to fully define the el...
virtual void GetMaterialMatrix(MatrixType &D) const override
MaterialLinearElasticity::ConstPointer m_Mat
void GetMassMatrix(MatrixType &Me) const override
Superclass::VectorType VectorType
Class that is used to define a membrane energy problem in 3D space.
Control indentation during Print() invocation.
Definition: itkIndent.h:49
virtual Material::ConstPointer GetMaterial(void) const override
virtual void GetStrainDisplacementMatrix(MatrixType &B, const MatrixType &shapeDgl) const override
Superclass::MatrixType MatrixType