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 #ifndef __BEAM3DL2_H
00037 #define __BEAM3DL2_H
00038
00039
00040 #include "Equa_Solid.h"
00041 #include "UserData.h"
00042
00043 namespace OFELI {
00044
00057 class Beam3DL2 : virtual public Equa_Solid<double,2,12,1,1> {
00058
00059 public :
00060
00062 Beam3DL2() {
00063 _bending = _axial = _torsion = _shear = true;
00064 _reduced_integration = false;
00065 #ifdef _OFELI_DEBUG
00066 std::clog << "An instance of class Beam3DL2 is constructed.\n";
00067 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00068 #endif
00069 }
00070
00077 Beam3DL2(Element *el, double A, double I1, double I2);
00078
00087 Beam3DL2(Element *el, double A, double I1, double I2, const Vect<double> &u, const double &time=0);
00088
00090 Beam3DL2(Mesh &ms, const NodeVect<double> &u, NodeVect<double> &d);
00091
00093 ~Beam3DL2() {
00094 #ifdef _OFELI_DEBUG
00095 std::clog << "An instance of class Beam3DL2 is destructed.\n";
00096 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00097 #endif
00098 }
00099
00101 void LMassToLHS(double coef=1.);
00102
00104 void LMassToRHS(double coef=1.);
00105
00107 void MassToLHS(double coef=1.) { cerr << "Error: Beam3DL2::Mass2LHS not implemented" << endl; }
00108
00110 void MassToRHS(double coef=1.) { cerr << "Error: Beam3DL2::Mass2RHS not implemented" << endl; }
00111
00113 void Stiffness(double coef=1.);
00114
00115
00116
00117
00119 void Load(const NodeVect<double> &f);
00120
00121
00122
00123
00125 void setBending() { _bending = true; }
00126
00128 void setAxial() { _axial = true; }
00129
00131 void setShear() { _shear = true; }
00132
00134 void setTorsion() { _torsion = true; }
00135
00137 void setNoBending() { _bending = false; }
00138
00140 void setNoAxial() { _axial = false; }
00141
00143 void setNoShear() { _shear = false; }
00144
00146 void setNoTorsion() { _torsion = false; }
00147
00149 void setReducedIntegration() { _reduced_integration = true; }
00150
00152 double AxialForce() const;
00153
00155 Point<double> ShearForce() const;
00156
00158 Point<double> BendingMoment() const;
00159
00161 double TwistingMoment() const;
00162
00163 private:
00164
00165 double _section, _I1, _I2, _h, _mu;
00166 Point<double> _x[2];
00167 bool _bending, _axial, _torsion, _shear, _reduced_integration;
00168 };
00169
00170 }
00171
00172 #endif