00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#ifndef __itkFEMElement1DStress_h
00019
#define __itkFEMElement1DStress_h
00020
00021
#include "itkFEMElementBase.h"
00022
#include "itkFEMMaterialLinearElasticity.h"
00023
00024
namespace itk {
00025
namespace fem {
00026
00027
00028
00029
00044
template<
class TBaseClass=Element>
00045 class Element1DStress :
public TBaseClass
00046 {
00047 FEM_ABSTRACT_CLASS(
Element1DStress,TBaseClass)
00048 public:
00049
00050
00051 typedef typename
Superclass::
Float Float;
00052 typedef typename
Superclass::
MatrixType MatrixType;
00053 typedef typename
Superclass::
VectorType VectorType;
00054
00058 virtual
void Read( std::istream&,
void* info );
00059
00063 virtual
void Write( std::ostream& f ) const;
00064
00068
Element1DStress();
00069
00070
00071
00072
00074
00075
00076
00077
00081 virtual
void GetStrainDisplacementMatrix(MatrixType& B, const MatrixType& shapeDgl) const;
00082
00086 virtual
void GetMaterialMatrix(MatrixType& D) const;
00087
00093 virtual
void GetStiffnessMatrix(MatrixType& Ke) const;
00094
00102 virtual
unsigned int GetNumberOfDegreesOfFreedomPerNode(
void )
const
00103
{
return 2; }
00104
00105
00106
00107
public:
00108
00112 MaterialLinearElasticity::ConstPointer m_mat;
00113 virtual Material::ConstPointer GetMaterial(
void)
const {
return m_mat; }
00114 virtual void SetMaterial(
Material::ConstPointer mat_ ) { m_mat=dynamic_cast<const MaterialLinearElasticity*>(&*mat_); }
00115
00116
00117 };
00118
00119
00120
00121
00122
#ifdef _MSC_VER
00123
00124
00125
00126
00127
static void Dummy(
void );
00128
#endif // #ifdef _MSC_VER
00129
00130 }}
00131
00132
#ifndef ITK_MANUAL_INSTANTIATION
00133
#include "itkFEMElement1DStress.txx"
00134
#endif
00135
00136
#endif // #ifndef __itkFEMElement1DStress_h