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