class Newmark : public TransientIntegrator


Inheritance:


Public Methods

Newmark()
Newmark(double gamma, double beta, bool disp = true)
Newmark(double gamma, double beta, double alphaM, double betaK, bool disp = true)
~Newmark()
virtual int formEleResidual(FE_Element *theEle)
virtual int formNodUnbalance(DOF_Group *theDof)
int formEleTangent(FE_Element *theEle)
int formNodTangent(DOF_Group *theDof)
int domainChanged(void)
int newStep(double deltaT)
int update(const Vector &deltaU)
virtual int sendSelf(int commitTag, Channel &theChannel)
virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)
void Print(ostream &s, int flag =0)

Inherited from TransientIntegrator:

Public Methods

virtual int formTangent(void)

Inherited from IncrementalIntegrator:

Public Methods

virtual void setLinks(AnalysisModel &theModel, LinearSOE &theSOE)
virtual int formUnbalance(void)
virtual int commit(void)
virtual int getLastResponse(Vector &result, const ID &id)

Protected Methods

LinearSOE* getLinearSOEPtr(void) const
AnalysisModel* getAnalysisModelPtr(void) const
virtual int formNodalUnbalance(void)
virtual int formElementResidual(void)

Documentation

Newmark is a subclass of TransientIntegrator which implements the Newmark method. In the Newmark method, to determine the velocities, accelerations and displacements at time t + \Delta t, the equilibrium equation (expressed for the TransientIntegrator) is typically solved at time t + \Delta t for \U_{t+\Delta t}, i.e. solve:



for \U_{t+\Delta t}. The following difference relations are used to relate \Ud_{t + \Delta t} and \Udd_{t + \Delta t} to \U_{t + \Delta t} and the response quantities at time t:





which results in the following



An alternative approach, which does not involve \Delta t in the denumerator (useful for impulse problems), is to solve for the accelerations at time t + \Delta t



where we use following functions to relate \U_{t + \Delta t} and \Ud_{t + \Delta t} to \Udd_{t + \Delta t} and the response quantities at time t:





which results in the following



\pagebreak s}

Newmark()

Sets \gamma to 1/2 and \beta to 1/4. Sets a flag indicating whether the incremental solution is done in terms of displacement, \Delta \U, if dispFlag is true, or acceleration, \Delta \ddot \U, if dispFlag is false. In addition, a flag is set indicating that Rayleigh damping will not be used.

Newmark(double gamma, double beta, bool disp = true)

Sets \gamma to gamma and \beta to beta. Sets a flag indicating whether the incremental solution is done in terms of displacement or acceleration to dispFlag and a flag indicating that Rayleigh damping will not be used.

Newmark(double gamma, double beta, double alphaM, double betaK, bool disp = true)

This constructor is invoked if Rayleigh damping is to be used, i.e. \D = \alpha_M M + \beta_K K. Sets \gamma to gamma, \beta to beta, \alpha_M to alphaM and \beta_K to betaK. Sets a flag indicating whether the incremental solution is done in terms of displacement or acceleration to dispFlag and a flag indicating that Rayleigh damping will be used.

~Newmark()

Invokes the destructor on the Vector objects created

virtual int formEleResidual(FE_Element *theEle)

virtual int formNodUnbalance(DOF_Group *theDof)

int formEleTangent(FE_Element *theEle)

int formNodTangent(DOF_Group *theDof)

int domainChanged(void)

int newStep(double deltaT)

int update(const Vector &deltaU)

virtual int sendSelf(int commitTag, Channel &theChannel)

virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker)

void Print(ostream &s, int flag =0)


This class has no child classes.

alphabetic index Contents

this page has been generated automatically by a slightly modified version of doc++ for OpenSees

Copyright Contact Us