00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef _ELCTRUSS_H
00041 #define _ELCTRUSS_H
00042
00043 #include "gbldefs.h"
00044 #include "elcbar.h"
00045
00046
00047
00048
00049 class cElcTruss : public cElcBar
00050 {
00051 protected:
00052 double _dEA;
00053 double _dForce;
00054
00055 public:
00056 cElcTruss ( void );
00057 virtual ~cElcTruss ( void );
00058 int ThermalEffects ( void ) { return 1; }
00059 double GetVol ( void );
00060 void Stiffness ( double * );
00061 void GeoStiffness ( double * );
00062 int InternalForce ( double * );
00063 void CalcIntPtStress( void );
00064 void NodeStress ( sTensor * );
00065 double DsaVolumeAm ( sNodeCoord * );
00066 void DsaIntForceAm ( sNodeCoord *, double * );
00067
00068
00069
00070 void DsaStressAm ( int, sNodeCoord *, double *, double ** );
00071
00072
00073 protected:
00074 void CompRotMat ( void );
00075 double GetLength ( sNodeCoord * );
00076 void DisplToArray ( sNodeDispl *, double * );
00077 void ElmVector ( sNodeCoord *, double * );
00078 void B0Matrix ( sNodeCoord *, double *, double * );
00079 void DsaDerB0Matrix ( sNodeCoord *, sNodeCoord *, double *,
00080 double * );
00081 };
00082
00083
00084
00085
00086 class cElcTrussTL : public cElcTruss
00087 {
00088 public:
00089 cElcTrussTL ( void );
00090 ~cElcTrussTL ( void ) { }
00091 int GeoNonLinear ( void ) { return 1; }
00092 void Stiffness ( double * );
00093 int InternalForce ( double * );
00094 void CalcIntPtStress( void );
00095 void DsaIntForceAm ( sNodeCoord *, double * );
00096 void DsaStiffMatAm ( sNodeCoord *, double *, double * );
00097 void DsaStressAm ( int, sNodeCoord *, double *, double ** );
00098
00099 protected:
00100 void UpdCoord ( sNodeCoord *, sNodeDispl * );
00101 void BlMatrix ( sNodeCoord *, sNodeDispl *, double *,
00102 double * );
00103 void DsaDerBlMatrix ( sNodeCoord *, sNodeDispl *, sNodeCoord *,
00104 double * );
00105 };
00106
00107
00108
00109
00110 class cElcTrussCR : public cElcTrussTL
00111 {
00112 public:
00113 cElcTrussCR ( void );
00114 ~cElcTrussCR ( void ) { }
00115 void Stiffness ( double * );
00116 int InternalForce ( double * );
00117 void CalcIntPtStress( void );
00118
00119 protected:
00120 void RVector ( sNodeCoord *, double *, double * );
00121 };
00122
00123 #endif