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 #ifndef UserDefinedHingeIntegration3d_h
00026 #define UserDefinedHingeIntegration3d_h
00027
00028 #include <BeamIntegration.h>
00029
00030 #include <Vector.h>
00031
00032 class Channel;
00033 class FEM_ObjectBroker;
00034
00035 class UserDefinedHingeIntegration3d : public BeamIntegration
00036 {
00037 public:
00038 UserDefinedHingeIntegration3d(int npL, const Vector &ptL, const Vector &wtL,
00039 int npR, const Vector &ptR, const Vector &wtR,
00040 double E, double A, double Iz,
00041 double Iy, double G, double J);
00042 UserDefinedHingeIntegration3d();
00043 ~UserDefinedHingeIntegration3d();
00044
00045 void getSectionLocations(int numSections, double L, double *xi);
00046 void getSectionWeights(int numSections, double L, double *wt);
00047
00048 void addElasticDeformations(ElementalLoad *theLoad, double loadFactor,
00049 double L, double *v0);
00050 int addElasticFlexibility(double L, Matrix &fe);
00051
00052 BeamIntegration *getCopy(void);
00053
00054 int sendSelf(int cTag, Channel &theChannel);
00055 int recvSelf(int cTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00056
00057 int setParameter(const char **argv, int argc, Information &info);
00058 int updateParameter(int parameterID, Information &info);
00059 int activateParameter(int parameterID);
00060
00061 void Print(OPS_Stream &s, int flag = 0);
00062
00063 private:
00064 Vector ptsL;
00065 Vector wtsL;
00066 Vector ptsR;
00067 Vector wtsR;
00068
00069 double E;
00070 double A;
00071 double Iz;
00072 double Iy;
00073 double G;
00074 double J;
00075 };
00076
00077 #endif