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 #ifndef CorotCrdTransf2d_h
00036 #define CorotCrdTransf2d_h
00037
00038 #include <CrdTransf2d.h>
00039 #include <Vector.h>
00040 #include <Matrix.h>
00041
00042 class CorotCrdTransf2d: public CrdTransf2d
00043 {
00044 public:
00045 CorotCrdTransf2d(int tag, const Vector &rigJntOffsetI, const Vector &rigJntOffsetJ);
00046
00047 CorotCrdTransf2d();
00048 ~CorotCrdTransf2d();
00049
00050 int initialize(Node *nodeIPointer, Node *nodeJPointer);
00051 int update(void);
00052 double getInitialLength(void);
00053 double getDeformedLength(void);
00054
00055 int commitState(void);
00056 int revertToLastCommit(void);
00057 int revertToStart(void);
00058
00059 const Vector &getBasicTrialDisp(void);
00060 const Vector &getBasicIncrDisp(void);
00061 const Vector &getBasicIncrDeltaDisp(void);
00062 const Vector &getBasicTrialVel(void);
00063 const Vector &getBasicTrialAccel(void);
00064
00065 const Vector &getGlobalResistingForce(const Vector &basicForce, const Vector &uniformLoad);
00066 const Matrix &getGlobalStiffMatrix(const Matrix &basicStiff, const Vector &basicForce);
00067 const Matrix &getInitialGlobalStiffMatrix(const Matrix &basicStiff);
00068
00069 CrdTransf2d *getCopy(void);
00070
00071 int sendSelf(int cTag, Channel &theChannel);
00072 int recvSelf(int cTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00073
00074 void Print(OPS_Stream &s, int flag = 0);
00075
00076
00077 const Vector &getPointGlobalCoordFromLocal(const Vector &localCoords);
00078 const Vector &getPointGlobalDisplFromBasic(double xi, const Vector &basicDisps);
00079
00080 private:
00081 int compElemtLengthAndOrient(void);
00082 int compElemtLengthAndOrientWRTLocalSystem(const Vector &ul);
00083 void transfLocalDisplsToBasic(const Vector &ul);
00084 void getTransfMatrixLocalGlobal(Matrix &Tlg);
00085 void getTransfMatrixBasicLocal(Matrix &Tbl);
00086 const Matrix &getGeomStiffMatrix(const Vector &pb) const;
00087
00088
00089 Node *nodeIPtr, *nodeJPtr;
00090
00091 Vector nodeIOffset, nodeJOffset;
00092
00093 double cosTheta, sinTheta;
00094 double cosAlpha, sinAlpha;
00095 double L;
00096 double Ln;
00097 double Lx, Ly;
00098 double Lxdot, Lydot;
00099 double Lxdotdot, Lydotdot;
00100
00101 Vector ub;
00102 Vector ubcommit;
00103 Vector ubpr;
00104
00105 static Matrix Tlg;
00106 static Matrix Tbl;
00107 static Matrix kg;
00108 static Vector uxg;
00109 static Vector pg;
00110 static Vector dub;
00111 static Vector Dub;
00112
00113 double *nodeIInitialDisp, *nodeJInitialDisp;
00114 bool initialDispChecked;
00115 };
00116 #endif