xc
Public Member Functions | Protected Member Functions | Friends | List of all members

HHT is an algorithmic class for performing a transient analysis using the Hilber-Hughes-Taylor integration scheme. More...

#include <HHT.h>

Inheritance diagram for XC::HHT:
Inheritance graph
[legend]
Collaboration diagram for XC::HHT:
Collaboration graph
[legend]

Public Member Functions

int formEleTangent (FE_Element *theEle)
 This tangent for each FE_Element is defined to be \(K_e = c1\alpha K //! + c2\alpha D + c3 M\), where c1,c2 and c3 were determined in the last invocation of the newStep() method. More...
 
int formNodTangent (DOF_Group *theDof)
 This performs the following: {tabbing} while \= + while \= while \= if (RayleighDamping == false) + theDof- \(>\)addMtoTang(c3) - else + theDof- \(>\)addMtoTang(c3 + c2 * \(\alpha_M\)) - {tabbing}.
 
int domainChanged (void)
 If the size of the LinearSOE has changed, the object deletes any old Vectors created and then creates \(8\) new Vector objects of size equal to {theLinearSOE- \(>\)getNumEqn()}. More...
 
int newStep (double deltaT)
 The following are performed when this method is invoked: {enumerate} First sets the values of the three constants {c1}, {c2} and {c3}, {c1} is set to \(1.0\), {c2} to \( //! \gamma / (\beta * \Delta t)\) and {c3} to \(1/ (\beta * \Delta t^2)\). More...
 
int revertToLastStep (void)
 
int update (const Vector &deltaU)
 Invoked this first causes the object to increment the DOF_Group response quantities at time \(t + \Delta t\). More...
 
int commit (void)
 First the response quantities at the DOF_Group objects are updated with the new approximations by invoking setResponse() on the AnalysisModel with displacement, velocity and accelerations at time \(t + //! \Delta t\). More...
 
virtual int sendSelf (Communicator &)
 Send object through the communicator argument.
 
virtual int recvSelf (const Communicator &)
 Receives object through the communicator argument.
 
void Print (std::ostream &s, int flag=0) const
 The object sends to \(s\) its type, the current time, \(\alpha\), \(\gamma\) and \(\beta\). More...
 
- Public Member Functions inherited from XC::DampingFactorsIntegrator
void Print (std::ostream &s, int flag=0) const
 

Protected Member Functions

int sendData (Communicator &)
 Send object members through the communicator argument.
 
int recvData (const Communicator &)
 Receives object members through the communicator argument.
 
 HHT (SolutionStrategy *)
 Constructor. More...
 
 HHT (SolutionStrategy *, double alpha)
 Constructor. More...
 
 HHT (SolutionStrategy *, double alpha, const RayleighDampingFactors &rF)
 Constructor. More...
 
 HHT (SolutionStrategy *, double alpha, double beta, double gamma)
 Constructor. More...
 
 HHT (SolutionStrategy *, double alpha, double beta, double gamma, const RayleighDampingFactors &)
 Constructor. More...
 
IntegratorgetCopy (void) const
 
- Protected Member Functions inherited from XC::HHTBase
int sendData (Communicator &)
 Send object members through the communicator argument.
 
int recvData (const Communicator &)
 Receives object members through the communicator argument.
 
 HHTBase (SolutionStrategy *, int classTag)
 Constructor. More...
 
 HHTBase (SolutionStrategy *, int classTag, double alpha)
 Constructor. More...
 
 HHTBase (SolutionStrategy *, int classTag, double alpha, const RayleighDampingFactors &rF)
 Constructor. More...
 
 HHTBase (SolutionStrategy *, int classTag, double alpha, double beta, double gamma)
 Constructor. More...
 
 HHTBase (SolutionStrategy *, int classTag, double alpha, double beta, double gamma, const RayleighDampingFactors &rF)
 Constructor. More...
 
- Protected Member Functions inherited from XC::HHTRayleighBase
int sendData (Communicator &)
 Send object members through the communicator argument.
 
int recvData (const Communicator &)
 Receives object members through the communicator argument.
 
 HHTRayleighBase (SolutionStrategy *, int classTag)
 Constructor. More...
 
 HHTRayleighBase (SolutionStrategy *, int classTag, double alpha)
 Constructor. More...
 
 HHTRayleighBase (SolutionStrategy *, int classTag, double alpha, const RayleighDampingFactors &rF)
 Constructor. More...
 
 HHTRayleighBase (SolutionStrategy *, int classTag, double alpha, double gamma)
 Constructor. More...
 
 HHTRayleighBase (SolutionStrategy *, int classTag, double alpha, double gamma, const RayleighDampingFactors &rF)
 Constructor. More...
 
- Protected Member Functions inherited from XC::RayleighBase
int sendData (Communicator &)
 Send object members through the communicator argument.
 
int recvData (const Communicator &)
 Receives object members through the communicator argument.
 
 RayleighBase (SolutionStrategy *, int classTag)
 Constructor. More...
 
 RayleighBase (SolutionStrategy *, int classTag, const RayleighDampingFactors &)
 Constructor. More...
 
- Protected Member Functions inherited from XC::DampingFactorsIntegrator
void setRayleighDampingFactors (void)
 
int sendData (Communicator &)
 Send object members through the communicator argument.
 
int recvData (const Communicator &)
 Receives object members through the communicator argument.
 
 DampingFactorsIntegrator (SolutionStrategy *, int classTag)
 Constructor. More...
 
 DampingFactorsIntegrator (SolutionStrategy *, int classTag, const RayleighDampingFactors &rF)
 Constructor. More...
 

Friends

class SolutionStrategy
 
class FEM_ObjectBroker
 

Additional Inherited Members

- Protected Attributes inherited from XC::HHTBase
double beta
 
double c1
 parameter More...
 
- Protected Attributes inherited from XC::HHTRayleighBase
double alpha
 should be between 0.67 and 1.0 (alpha factor corresponds to Newmark method. More...
 
double gamma
 factor.
 
double c2
 
double c3
 
ResponseQuantities Ut
 response quantities at time t
 
ResponseQuantities U
 response quantities at time t + delta t
 
ResponseQuantities Ualpha
 response quantities at time t+alpha delta t
 
- Protected Attributes inherited from XC::RayleighBase
double deltaT
 
- Protected Attributes inherited from XC::DampingFactorsIntegrator
RayleighDampingFactors rayFactors
 Rayleigh damping factors.
 

Detailed Description

HHT is an algorithmic class for performing a transient analysis using the Hilber-Hughes-Taylor integration scheme.

HHT is a subclass of TransientIntegrator which implements the Hilber-Hughes-Taylor (HHT) method. In the HHT method, to determine the velocities, accelerations and displacements at time \(t + \Delta t\), by solving the following equilibrium equation.

{ Description}

[ R (U_{t + t}) = P(t + t) - F_I(Udd_{t+ t}) - F_R(Ud_{t + t},U_{t + t}) ]

where

[ U_{t + } = ( 1 - ) U_t + U_{t + t} ]

[ Ud_{t + } = ( 1 - ) Ud_t + Ud_{t + t} ]

and the velocities and accelerations at time \(t + \Delta t\) are determined using the Newmark relations. The HHT method results in the following for determining the response at \(t + \Delta t\)

[ [ {1}{ t^2} M + { }{ t} C + K ] U_{t + t}^{(i)} = P(t

Constructor & Destructor Documentation

◆ HHT() [1/5]

XC::HHT::HHT ( SolutionStrategy owr)
protected

Constructor.

Parameters
owranalysis aggregation that will own this object.

◆ HHT() [2/5]

XC::HHT::HHT ( SolutionStrategy owr,
double  _alpha 
)
protected

Constructor.

Parameters
owranalysis aggregation that will own this object.

◆ HHT() [3/5]

XC::HHT::HHT ( SolutionStrategy owr,
double  _alpha,
const RayleighDampingFactors rF 
)
protected

Constructor.

Sets \(\alpha\) to alpha, \(\gamma\) to \((1.5 - \alpha)\) and \(\beta\) to \(0.25*\alpha^2\).

Parameters
owranalysis aggregation that will own this object.
rFvalue of the Rayleigh damping factors.

◆ HHT() [4/5]

XC::HHT::HHT ( SolutionStrategy owr,
double  _alpha,
double  _beta,
double  _gamma 
)
protected

Constructor.

Parameters
owranalysis aggregation that will own this object.
_alphavalue for the alpha parameter.
_betavalue for the beta parameter.
_gammavalue for the gamma parameter.

◆ HHT() [5/5]

XC::HHT::HHT ( SolutionStrategy owr,
double  _alpha,
double  _beta,
double  _gamma,
const RayleighDampingFactors rF 
)
protected

Constructor.

Parameters
owranalysis aggregation that will own this object.
_alphavalue for the alpha parameter.
_betavalue for the beta parameter.
_gammavalue for the gamma parameter.
rFvalue of the Rayleigh damping factors.

Member Function Documentation

◆ commit()

int XC::HHT::commit ( void  )

First the response quantities at the DOF_Group objects are updated with the new approximations by invoking setResponse() on the AnalysisModel with displacement, velocity and accelerations at time \(t + //! \Delta t\).

Finally updateDomain()} and {commitDomain() are invoked on the AnalysisModel. Returns \(0\) if successful, a warning message and a negative number if not: \(-1\) if no AnalysisModel associated with the object and \(-2\) if commitDomain() failed.

◆ domainChanged()

int XC::HHT::domainChanged ( void  )

If the size of the LinearSOE has changed, the object deletes any old Vectors created and then creates \(8\) new Vector objects of size equal to {theLinearSOE- \(>\)getNumEqn()}.

There is a Vector object created to store the current displacement, velocity and accelerations at times \(t\) and \(t + \Delta t\), and the displacement and velocity at time \(t + \alpha //! \Delta t\). The response quantities at time \(t + \Delta t\) are then set by iterating over the DOF_Group objects in the model and obtaining their committed values. Returns \(0\) if successful, otherwise a warning message and a negative number is returned: \(-1\) if no memory was available for constructing the Vectors.

NOTE WE CAN't DO TOGETHER BECAUSE DOF_GROUPS USING SINGLE VECTOR ****** for (int i=0; i < id.Size(); i++) { int loc = id(i); if (loc >= 0) { (*U)(loc) = disp(i); (U.getDot())(loc) = vel(i); (U.getDotDot())(loc) = accel(i); } }

◆ formEleTangent()

int XC::HHT::formEleTangent ( FE_Element theEle)

This tangent for each FE_Element is defined to be \(K_e = c1\alpha K //! + c2\alpha D + c3 M\), where c1,c2 and c3 were determined in the last invocation of the newStep() method.

Returns \(0\) after performing the following operations: {tabbing} while \= + while \= while \= if (RayleighDamping == false) + theEle- \(>\)zeroTang() theEle- \(>\)addKtoTang(c1) theEle- \(>\)addCtoTang(c2) theEle- \(>\)addMtoTang(c3) - theEle- \(>\)zeroTang() theEle- \(>\)addKtoTang(c1 + c2 * \(\beta_K\)) theEle- \(>\)addMtoTang(c3 + c2 * \(\alpha_M\)) - {tabbing}

◆ newStep()

int XC::HHT::newStep ( double  _deltaT)

The following are performed when this method is invoked: {enumerate} First sets the values of the three constants {c1}, {c2} and {c3}, {c1} is set to \(1.0\), {c2} to \( //! \gamma / (\beta * \Delta t)\) and {c3} to \(1/ (\beta * \Delta t^2)\).

Then the Vectors for response quantities at time \(t\) are set equal to those at time \(t + \Delta t\). {tabbing} while \= while \= while \= while \= >> \( U_t = U_{t + \Delta t}\) >> \( Ud_t = Ud_{t + \Delta t} \) >> \( Udd_t = Udd_{t + \Delta t} \) {tabbing} Then the velocity and accelerations approximations at time \(t + //! \Delta t\) and the displacement and velocity at time \(t + \alpha \Delta t\) are set using the difference approximations. {tabbing} while \= while \= while \= while \= >> \( U_{t + \alpha \Delta t} = U_t\) >> \( \dot U_{t + \Delta t} = //! \left( 1 - \frac{\gamma}{\beta}\right) \dot U_t + \Delta t \left(1 //! - \frac{\gamma}{2 \beta}\right) \ddot U_t \) >> \( Ud_{t + \alpha \Delta t} = (1 - \alpha) Ud_t + \alpha Ud_{t + //! \Delta t}\) >> \( \ddot U_{t + \Delta t} = //! - \frac{1}{\beta \Delta t} \dot U_t + \left( 1 - \frac{1}{2 //! \beta} \right) \ddot U_t \) >> theModel- \(>\)setResponse \((U_{t + \alpha \Delta t}, Ud_{t+\alpha //! \Delta t}, Udd_{t+\Delta t})\) {tabbing} The response quantities at the DOF_Group objects are updated with the new approximations by invoking setResponse() on the AnalysisModel with displacements and velocities at time \(t + \alpha //! \Delta t\) and the accelerations at time \(t + \Delta t\). {tabbing} while \= while \= while \= while \= >> theModel- \(>\)setResponse \((U_{t + \alpha \Delta t}, Ud_{t+\alpha //! \Delta t}, Udd_{t+\Delta t})\) {tabbing} current time is obtained from the AnalysisModel, incremented by \(\Delta t\), and {applyLoad(time, 1.0)} is invoked on the AnalysisModel. Finally updateDomain() is invoked on the AnalysisModel. {enumerate} The method returns \(0\) if successful, otherwise a negative number is returned: \(-1\) if \(\gamma\) or \(\beta\) are \(0\), \(-2\) if dispFlag was true and \(\Delta t\) is \(0\), and \(-3\) if domainChanged() failed or has not been called.

◆ Print()

void XC::HHT::Print ( std::ostream &  s,
int  flag = 0 
) const

The object sends to \(s\) its type, the current time, \(\alpha\), \(\gamma\) and \(\beta\).

If Rayleigh damping is specified, the constants \(\alpha_M\) and \(\beta_K\) are also printed.

◆ update()

int XC::HHT::update ( const Vector deltaU)

Invoked this first causes the object to increment the DOF_Group response quantities at time \(t + \Delta t\).

The displacement Vector is incremented by \( c1 * \Delta U\), the velocity Vector by \( //! c2 * \Delta U\), and the acceleration Vector by \(c3 * \Delta U\). The displacement Vector at time \(t + \alpha \Delta t\) is incremented by \(c1 \alpha \Delta U\) and the velocity Vector by \(c2 \alpha //! \Delta U\). The response quantities at the DOF_Group objects are then updated with the new approximations by invoking setResponse() on the AnalysisModel with displacement and velocity at time \(t + \alpha //! \Delta t\) and the accelerations at time \(t + \Delta t\). Finally updateDomain() is invoked on the AnalysisModel. {tabbing} while \= + while \= while \= >> \( U_{t + \Delta t} += \Delta U\) >> \( \dot U_{t + \Delta t} += \frac{\gamma}{\beta \Delta t} \Delta U \) >> \( \ddot U_{t + \Delta t} += \frac{1}{\beta {\Delta t}^2} \Delta U \) >> \( U_{t + \alpha \Delta t} += \alpha \Delta U \) >> \( Ud_{t + \alpha \Delta t} += \frac{\alpha \gamma}{\beta \Delta t} //! \Delta U \) >> theModel- \(>\)setResponse \((U_{t + \alpha \Delta t}, Ud_{t+\alpha //! \Delta t}, Udd_{t+\Delta t})\) >> theModel- \(>\)updateDomain() {tabbing} Returns \(0\) if successful. A warning message is printed and a negative number returned if an error occurs: \(-1\) if no associated AnalysisModel, \(-2\) if the Vector objects have not been created, \(-3\) if the Vector objects and \(\Delta U\) are of different sizes.


The documentation for this class was generated from the following files: