00001
00012 #ifndef _MAT_ELASTIC_BASSO_H_
00013 #define _MAT_ELASTIC_BASSO_H_
00014
00015
00016
00017
00018 #include "basso.h"
00019 #include "Material.h"
00020
00021 namespace basso {
00022
00023
00028 class MatElastic : public Material
00029 {
00030
00031 public:
00032
00033
00034
00035
00036 MatElastic( Numeric E, Numeric nu, Numeric rho=1.0, Numeric alpha=0.0, Numeric diff=0.0 ) : Material(), C(6,6)
00037 {
00038 fE=E; fNu=nu; fRho=rho;
00039 fThermalExpansion=alpha;
00040 fDiffusivity=diff;
00041 FormC();
00042 }
00043
00044 virtual ~MatElastic( ) { }
00045
00046
00047
00048
00049
00051 virtual Numeric Density( const MaterialState sv=MaterialState() ) const { return fRho; }
00052
00053 virtual Numeric ThermalExpansion( ) const { return fThermalExpansion; }
00054
00055 virtual Numeric Diffusivity( ) const { return fDiffusivity; }
00056
00061 virtual void ComputeStress( nArray &stress, const StressState *ssptr, const nArray &strain )
00062 {
00063
00064
00065 }
00066
00067 virtual void ComputeStress( nArray &stress, const StressState *ssptr, const MaterialState &sv )
00068 {
00069
00070 }
00071
00072 virtual void ComputeStress( nMatrix &stress, const StressState *ssptr, const MaterialState &sv )
00073 {
00074
00075
00076
00077
00078
00079 }
00080
00081
00086 virtual void ComputeTangentStiffness( nMatrix &cmat, const StressState *ssptr, const MaterialState sv=MaterialState() ) const
00087 {
00088 ssptr->Convert( C, cmat );
00089
00090
00091 }
00092
00093 protected:
00094 void SetProperties( Numeric E, Numeric nu, Numeric rho=1.0 ) { fE=E; fNu=nu; fRho=rho; FormC(); }
00095 void FormC();
00096
00097 protected:
00098 Numeric fE, fNu, fRho, fDiffusivity, fThermalExpansion;
00099 nMatrix C;
00100 };
00101
00102 void MatElastic::FormC()
00103 {
00104 Numeric Cv=fE*(1.0-fNu)/(1.0+fNu)/(1.0-2*fNu),
00105 Cp=Cv*fNu/(1.0-fNu),
00106 Cs=fE/(1+fNu)/2.0;
00107 C(0,0)=Cv; C(0,1)=Cp; C(0,2)=Cp; C(0,3)=0.; C(0,4)=0.; C(0,5)=0.;
00108 C(1,0)=Cp; C(1,1)=Cv; C(1,2)=Cp; C(0,3)=0.; C(0,4)=0.; C(0,5)=0.;
00109 C(2,0)=Cp; C(2,1)=Cp; C(2,2)=Cv; C(0,3)=0.; C(0,4)=0.; C(0,5)=0.;
00110 C(3,0)=0.; C(3,1)=0.; C(3,2)=0.; C(3,3)=Cs; C(3,4)=0.; C(3,5)=0.;
00111 C(4,0)=0.; C(4,1)=0.; C(4,2)=0.; C(4,3)=0.; C(4,4)=Cs; C(4,5)=0.;
00112 C(5,0)=0.; C(5,1)=0.; C(5,2)=0.; C(5,3)=0.; C(5,4)=0.; C(5,5)=Cs;
00113
00114 }
00115
00116 }
00117
00118
00119 #endif
00120
00121