ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 00019 #ifndef __itkFEMMaterialLinearElasticity_h 00020 #define __itkFEMMaterialLinearElasticity_h 00021 00022 #include "itkFEMMaterialBase.h" 00023 00024 namespace itk 00025 { 00026 namespace fem 00027 { 00037 class MaterialLinearElasticity : public Material 00038 { 00039 public: 00040 00042 typedef MaterialLinearElasticity Self; 00043 typedef Material Superclass; 00044 typedef SmartPointer<Self> Pointer; 00045 typedef SmartPointer<const Self> ConstPointer; 00046 00048 itkSimpleNewMacro(Self); 00049 00051 itkTypeMacro(MaterialLinearElasticity, Material); 00052 00055 virtual::itk::LightObject::Pointer CreateAnother(void) const; 00056 00060 MaterialLinearElasticity(); 00061 00065 void SetCrossSectionalArea(double area); 00066 00070 double GetCrossSectionalArea() const; 00071 00075 void SetYoungsModulus(double modulus); 00076 00080 double GetYoungsModulus() const; 00081 00085 void SetThickness(double t); 00086 00090 double GetThickness() const; 00091 00095 void SetMomentOfInertia(double iner); 00096 00100 double GetMomentOfInertia() const; 00101 00105 void SetPoissonsRatio(double poi); 00106 00110 double GetPoissonsRatio() const; 00111 00115 void SetDensityHeatProduct(double dhp); 00116 00120 double GetDensityHeatProduct() const; 00121 00122 protected: 00123 00124 virtual void PrintSelf(std::ostream& os, Indent indent) const; 00125 00126 /* Data members of MaterialLinearElasticity class */ 00127 00131 double m_YoungModulus; 00132 00136 double m_CrossSectionalArea; // 00137 00141 double m_MomentOfInertia; 00142 00146 double m_PoissonRatio; 00147 00151 double m_Thickness; 00152 00153 /* 00154 * ... we can add properties here as required without the influence on the already defined elements 00155 */ 00156 00160 double m_DensityHeatCapacity; 00161 }; 00162 00163 } 00164 } // end namespace itk::fem 00165 00166 #endif // #ifndef __itkFEMMaterialLinearElasticity_h 00167