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 Collocation_h
00026 #define Collocation_h
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <TransientIntegrator.h>
00039
00040 class DOF_Group;
00041 class FE_Element;
00042 class Vector;
00043
00044 class Collocation : public TransientIntegrator
00045 {
00046 public:
00047
00048 Collocation();
00049 Collocation(double theta);
00050 Collocation(double theta,
00051 double alphaM, double betaK, double betaKi, double betaKc);
00052 Collocation(double theta, double beta, double gamma);
00053 Collocation(double theta, double beta, double gamma,
00054 double alphaM, double betaK, double betaKi, double betaKc);
00055
00056
00057 ~Collocation();
00058
00059
00060
00061 int formEleTangent(FE_Element *theEle);
00062 int formNodTangent(DOF_Group *theDof);
00063
00064 int domainChanged(void);
00065 int newStep(double deltaT);
00066 int revertToLastStep(void);
00067 int update(const Vector &deltaU);
00068 int commit(void);
00069
00070 virtual int sendSelf(int commitTag, Channel &theChannel);
00071 virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00072
00073 void Print(OPS_Stream &s, int flag = 0);
00074
00075 protected:
00076
00077 private:
00078 double theta;
00079 double beta;
00080 double gamma;
00081 double deltaT;
00082
00083
00084 double alphaM;
00085 double betaK;
00086 double betaKi;
00087 double betaKc;
00088
00089 double c1, c2, c3;
00090 Vector *Ut, *Utdot, *Utdotdot;
00091 Vector *U, *Udot, *Udotdot;
00092 };
00093
00094 #endif