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

Method solveCurrentStep

SRC/analysis/algorithm/equiSolnAlgo/ExpressNewton.cpp:106–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

104}
105
106int
107ExpressNewton::solveCurrentStep(void)
108{
109 // set up some pointers and check they are valid
110 // NOTE this could be taken away if we set Ptrs as protecetd in superclass
111
112 AnalysisModel *theAnalysisModel = this->getAnalysisModelPtr();
113 LinearSOE *theSOE = this->getLinearSOEptr();
114 IncrementalIntegrator *theIntegrator = this->getIncrementalIntegratorPtr();
115
116 if ((theAnalysisModel == 0) || (theIntegrator ==0 ) || (theSOE == 0)){
117 opserr << "WARNING ExpressNewton::solveCurrentStep() -";
118 opserr << "setLinks() has not been called.\n";
119 return -5;
120 }
121
122 if (factorOnce != 2) {
123 if (theIntegrator->formTangent(HALL_TANGENT, kMultiplier1, kMultiplier2) < 0) {
124 opserr << "WARNING ExpressNewton::solveCurrentStep() -";
125 opserr << "the Integrator failed in formTangent()\n";
126 return -1;
127 }
128 if (factorOnce == 1)
129 factorOnce = 2;
130 }
131
132 for (int iter = 0; iter <nIter; ++iter)
133 {
134 if (theIntegrator->formUnbalance() < 0) {
135 opserr << "WARNING ExpressNewton::solveCurrentStep() -";
136 opserr << "the Integrator failed in formUnbalance()\n";
137 return -2;
138 }
139
140 if (theSOE->solve() < 0) {
141 opserr << "WARNING ExpressNewton::solveCurrentStep() -";
142 opserr << "the LinearSOE failed in solve()\n";
143 return -3;
144 }
145
146 if (theIntegrator->update(theSOE->getX()) < 0) {
147 opserr << "WARNING ExpressNewton::solveCurrentStep() -";
148 opserr << "the Integrator failed in update()\n";
149 return -4;
150 }
151 }
152
153 return 0;
154}
155
156int
157ExpressNewton::setConvergenceTest(ConvergenceTest *theNewTest)

Callers

nothing calls this directly

Calls 8

getLinearSOEptrMethod · 0.80
getAnalysisModelPtrMethod · 0.45
formTangentMethod · 0.45
formUnbalanceMethod · 0.45
solveMethod · 0.45
updateMethod · 0.45
getXMethod · 0.45

Tested by

no test coverage detected