|
xc
|
HHT is an algorithmic class for performing a transient analysis using the Hilber-Hughes-Taylor integration scheme. More...
#include <HHT.h>
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 (CommParameters &) |
| virtual int | recvSelf (const CommParameters &) |
| void | Print (std::ostream &s, int flag=0) |
| 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) |
Protected Member Functions | |
| int | sendData (CommParameters &) |
| Send object members through the channel being passed as parameter. | |
| int | recvData (const CommParameters &) |
| Receives object members through the channel being passed as parameter. More... | |
| HHT (AnalysisAggregation *) | |
| Constructor. More... | |
| HHT (AnalysisAggregation *, double alpha) | |
| Constructor. More... | |
| HHT (AnalysisAggregation *, double alpha, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
| HHT (AnalysisAggregation *, double alpha, double beta, double gamma) | |
| Constructor. More... | |
| HHT (AnalysisAggregation *, double alpha, double beta, double gamma, const RayleighDampingFactors &) | |
| Constructor. More... | |
| Integrator * | getCopy (void) const |
Protected Member Functions inherited from XC::HHTBase | |
| int | sendData (CommParameters &) |
| Send object members through the channel being passed as parameter. | |
| int | recvData (const CommParameters &) |
| Receives object members through the channel being passed as parameter. | |
| HHTBase (AnalysisAggregation *, int classTag) | |
| Constructor. More... | |
| HHTBase (AnalysisAggregation *, int classTag, double alpha) | |
| Constructor. More... | |
| HHTBase (AnalysisAggregation *, int classTag, double alpha, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
| HHTBase (AnalysisAggregation *, int classTag, double alpha, double beta, double gamma) | |
| Constructor. More... | |
| HHTBase (AnalysisAggregation *, int classTag, double alpha, double beta, double gamma, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
Protected Member Functions inherited from XC::HHTRayleighBase | |
| int | sendData (CommParameters &) |
| Send object members through the channel being passed as parameter. | |
| int | recvData (const CommParameters &) |
| Receives object members through the channel being passed as parameter. | |
| HHTRayleighBase (AnalysisAggregation *, int classTag) | |
| Constructor. More... | |
| HHTRayleighBase (AnalysisAggregation *, int classTag, double alpha) | |
| Constructor. More... | |
| HHTRayleighBase (AnalysisAggregation *, int classTag, double alpha, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
| HHTRayleighBase (AnalysisAggregation *, int classTag, double alpha, double gamma) | |
| Constructor. More... | |
| HHTRayleighBase (AnalysisAggregation *, int classTag, double alpha, double gamma, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
Protected Member Functions inherited from XC::RayleighBase | |
| int | sendData (CommParameters &) |
| Send object members through the channel being passed as parameter. | |
| int | recvData (const CommParameters &) |
| Receives object members through the channel being passed as parameter. | |
| RayleighBase (AnalysisAggregation *, int classTag) | |
| Constructor. More... | |
| RayleighBase (AnalysisAggregation *, int classTag, const RayleighDampingFactors &) | |
| Constructor. More... | |
Protected Member Functions inherited from XC::DampingFactorsIntegrator | |
| void | setRayleighDampingFactors (void) |
| int | sendData (CommParameters &) |
| Send object members through the channel being passed as parameter. | |
| int | recvData (const CommParameters &) |
| Receives object members through the channel being passed as parameter. | |
| DampingFactorsIntegrator (AnalysisAggregation *, int classTag) | |
| Constructor. More... | |
| DampingFactorsIntegrator (AnalysisAggregation *, int classTag, const RayleighDampingFactors &rF) | |
| Constructor. More... | |
Friends | |
| class | AnalysisAggregation |
| 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. | |
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
|
protected |
Constructor.
| owr | analysis aggregation that will own this object. |
|
protected |
Constructor.
| owr | analysis aggregation that will own this object. |
|
protected |
Constructor.
Sets \(\alpha\) to alpha, \(\gamma\) to \((1.5 - \alpha)\) and \(\beta\) to \(0.25*\alpha^2\).
| owr | analysis aggregation that will own this object. |
| rF | value of the Rayleigh damping factors. |
|
protected |
Constructor.
| owr | analysis aggregation that will own this object. |
| _alpha | value for the alpha parameter. |
| _beta | value for the beta parameter. |
| _gamma | value for the gamma parameter. |
|
protected |
Constructor.
| owr | analysis aggregation that will own this object. |
| _alpha | value for the alpha parameter. |
| _beta | value for the beta parameter. |
| _gamma | value for the gamma parameter. |
| rF | value of the Rayleigh damping factors. |
| 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.
| 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); } }
| 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}
| 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.
| void XC::HHT::Print | ( | std::ostream & | s, |
| int | flag = 0 |
||
| ) |
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.
|
protected |
Receives object members through the channel being passed as parameter.
| 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.
1.8.12