MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / newStep

Method newStep

SRC/analysis/integrator/ExplicitDifferenceStatic.cpp:99–141  ·  view source on GitHub ↗

Advance to a new time step This method implements the leap-frog scheme: - Velocity is stored at half time steps: v_{t+0.5*dt} - Displacement is at full time steps: u_t, u_{t+dt} - Acceleration is at full time steps: a_t, a_{t+dt}

Source from the content-addressed store, hash-verified

97// - Displacement is at full time steps: u_t, u_{t+dt}
98// - Acceleration is at full time steps: a_t, a_{t+dt}
99int ExplicitDifferenceStatic::newStep(double _deltaT)
100{
101 updateCount = 0;
102 deltaT = _deltaT;
103
104 if (deltaT <= 0.0) {
105 opserr << "ExplicitDifferenceStatic::newStep() - error in variable\n";
106 opserr << "dT = " << deltaT << endln;
107 return -1;
108 }
109
110 AnalysisModel *theModel = this->getAnalysisModel();
111
112 // Leap-frog update: advance velocity to t+0.5*dt and displacement to t+dt
113 Utdot->addVector(1.0, *Utdotdot, deltaT); // v_{t+0.5*dt} += a_t * dt
114 Ut->addVector(1.0, *Utdot, deltaT); // u_{t+dt} = u_t + v_{t+0.5*dt} * dt
115
116 if (Ut == 0) {
117 opserr << "ExplicitDifferenceStatic::newStep() - domainChange() failed or hasn't been called\n";
118 return -2;
119 }
120
121 // Zero acceleration for explicit method (Ma = RHS, no Ma on LHS)
122 (*Utdotdot) *= 0.0;
123
124 // Set trial response quantities
125 theModel->setVel(*Utdot);
126 theModel->setAccel(*Utdotdot);
127 theModel->setDisp(*Ut);
128
129 // Increment time and apply loads
130 double time = theModel->getCurrentDomainTime();
131 time += deltaT;
132 if (theModel->updateDomain(time, deltaT) < 0) {
133 opserr << "ExplicitDifferenceStatic::newStep() - failed to update the domain\n";
134 return -3;
135 }
136
137 // Set response at t to be that at t+deltaT of previous step
138 (*Utdotdot) = (*Utdotdot1);
139
140 return 0;
141}
142
143// Form element tangent matrix (mass matrix for explicit scheme)
144int ExplicitDifferenceStatic::formEleTangent(FE_Element *theEle)

Callers

nothing calls this directly

Calls 7

getAnalysisModelMethod · 0.45
addVectorMethod · 0.45
setVelMethod · 0.45
setAccelMethod · 0.45
setDispMethod · 0.45
getCurrentDomainTimeMethod · 0.45
updateDomainMethod · 0.45

Tested by

no test coverage detected