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