00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef _ELCPARAM_H
00014 #define _ELCPARAM_H
00015
00016 #include "element.h"
00017
00018
00019
00020
00021 class cElcParam : public cElement
00022 {
00023 public:
00024 cElcParam ( eShapeType );
00025 cElcParam ( eShapeType, cAnModel * );
00026 virtual ~cElcParam ( void );
00027 virtual void ReadElmLabels ( eShapeType );
00028 virtual int ThermalEffects ( void ) { return 1; }
00029 virtual double Thickness ( void ) { return _dThickness; }
00030 virtual double GetVol ( void );
00031 virtual void Stiffness ( double * );
00032 virtual void GeoStiffness ( double * );
00033 virtual int InternalForce ( double * );
00034 virtual void CalcIntPtStress ( void );
00035 virtual void NodeStress ( sTensor * );
00036 virtual void Extrapolate ( double **, double ** );
00037 virtual void StrainVector ( double *, double *, double * );
00038 virtual void NormTensor ( sTensor *, double * );
00039 virtual void PMatrix ( sNodeCoord *, double ** );
00040 virtual void BPMatrix ( double ** );
00041 virtual double DsaVolumeAm ( sNodeCoord * );
00042 virtual void DsaIntForceAm ( sNodeCoord *, double * );
00043 virtual void DsaStiffMatAm ( sNodeCoord *, double *, double * );
00044 virtual void DsaGeoStiffAm ( sNodeCoord *, double *, double *,
00045 double * );
00046 virtual void DsaStressAm ( int, sNodeCoord *, double *,
00047 double ** );
00048
00049 protected:
00050 void CreateElement ( eShapeType );
00051 void Strain ( double **, double *, double * );
00052 void TRMatrix ( void );
00053 void LSMatrix ( void );
00054 void GetSamCoord ( cNode *, int, double, double *,
00055 sNodeCoord * );
00056 virtual int GetSurfTemp ( double *, double * );
00057 virtual int GetStrnTemp ( double *, double * );
00058 virtual void BMatrix ( sNatCoord *, sNodeCoord *, double *,
00059 double *, double ** );
00060 virtual void BnlMatrix ( sNatCoord *, sNodeCoord *,
00061 double *, double ** );
00062 virtual void DsaDerBMatrix ( sNatCoord *, sNodeCoord *, double *,
00063 sNodeCoord *, double *, double ** );
00064 virtual void DsaDerBnlMatrix ( sNatCoord *, sNodeCoord *,
00065 sNodeCoord *, double *, double ** );
00066 };
00067
00068
00069
00070
00071 class cElcParamTL : public cElcParam
00072 {
00073 public:
00074 cElcParamTL ( eShapeType );
00075 cElcParamTL ( eShapeType, cAnModel * );
00076 ~cElcParamTL ( void ) { }
00077 int GeoNonLinear ( void ) { return 1; }
00078 void Stiffness ( double * );
00079 int InternalForce ( double * );
00080 void CalcIntPtStress ( void );
00081 void DsaIntForceAm ( sNodeCoord *, double * );
00082 void DsaStiffMatAm ( sNodeCoord *, double *, double * );
00083 void DsaStressAm ( int, sNodeCoord *, double *,
00084 double ** );
00085
00086 protected:
00087 void GreenStrain ( double **, double **, double *,
00088 double * );
00089 void BlMatrix ( sNatCoord *, sNodeCoord *,
00090 double *, double *, double ** );
00091 void DsaDerBlMatrix ( sNatCoord *, sNodeCoord *, double *,
00092 sNodeCoord *, double *, double ** );
00093 };
00094
00095 #endif
00096