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

Method newStep

SRC/analysis/integrator/ArcLength.cpp:129–223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

127}
128
129int
130ArcLength::newStep(void)
131{
132 // opserr<<"sewStep: start"<<endln;
133//opserr<<"alpha2 is "<<alpha2<<endln;
134 // get pointers to AnalysisModel and LinearSOE
135 AnalysisModel *theModel = this->getAnalysisModel();
136 LinearSOE *theLinSOE = this->getLinearSOE();
137 if (theModel == 0 || theLinSOE == 0) {
138 opserr << "WARNING ArcLength::newStep() ";
139 opserr << "No AnalysisModel or LinearSOE has been set\n";
140 return -1;
141 }
142
143 // get the current load factor
144 currentLambda = theModel->getCurrentDomainTime();
145
146 if (deltaLambdaStep < 0)
147 signLastDeltaLambdaStep = -1;
148 else
149 signLastDeltaLambdaStep = +1;
150
151 // determine dUhat
152 this->formTangent();
153 theLinSOE->setB(*phat);
154 // opserr<<" ArcLength: Phat is "<<*phat<<endln;
155 if (theLinSOE->solve() < 0) {
156 opserr << "ArcLength::newStep(void) - failed in solver\n";
157 return -1;
158 }
159
160 (*deltaUhat) = theLinSOE->getX();
161 Vector &dUhat = *deltaUhat;
162
163 // determine delta lambda(1) == dlambda
164 double dLambda = sqrt(arcLength2/((dUhat^dUhat)+alpha2));
165 dLambda *= signLastDeltaLambdaStep; // base sign of load change
166 // opserr<<"newStep: the sign is "<<signLastDeltaLambdaStep<<endln; // on what was happening last step
167 deltaLambdaStep = dLambda;
168 dLAMBDA=dLambda;
169 // opserr<<"newStep: dLAMBDA= "<<dLAMBDA<<endln;
170 currentLambda += dLambda;
171
172 // determine delta U(1) == dU
173 (*deltaU) = dUhat;
174 (*deltaU) *= dLambda;
175 (*deltaUstep) = (*deltaU);
176 (*deltaUstep2)=(*deltaU);
177
178 // update model with delta lambda and delta U
179 theModel->incrDisp(*deltaU);
180 //////
181
182 if(this->activateSensitivity()==true) {
183 Domain *theDomain=theModel->getDomainPtr();
184 ParameterIter &paramIter = theDomain->getParameters();
185 Parameter *theParam;
186

Callers

nothing calls this directly

Calls 15

formdLambdaDhMethod · 0.95
getParametersMethod · 0.80
getAnalysisModelMethod · 0.45
getLinearSOEMethod · 0.45
getCurrentDomainTimeMethod · 0.45
formTangentMethod · 0.45
setBMethod · 0.45
solveMethod · 0.45
getXMethod · 0.45
incrDispMethod · 0.45
activateSensitivityMethod · 0.45

Tested by

no test coverage detected