| 155 | |
| 156 | |
| 157 | int Newmark::newStep(double deltaT) |
| 158 | { |
| 159 | if ((beta == 0 || gamma == 0) && displ != 3) { |
| 160 | opserr << "Newmark::newStep() - error in variable\n"; |
| 161 | opserr << "gamma = " << gamma << " beta = " << beta << endln; |
| 162 | return -1; |
| 163 | } |
| 164 | |
| 165 | if (deltaT < 0.0 || (displ != 3 && deltaT == 0.0)) { |
| 166 | opserr << "Newmark::newStep() - error in variable\n"; |
| 167 | opserr << "dT = " << deltaT << endln; |
| 168 | return -2; |
| 169 | } |
| 170 | |
| 171 | // get a pointer to the AnalysisModel |
| 172 | AnalysisModel *theModel = this->getAnalysisModel(); |
| 173 | |
| 174 | // set the constants |
| 175 | if (displ == 1) { |
| 176 | c1 = 1.0; |
| 177 | c2 = gamma/(beta*deltaT); |
| 178 | c3 = 1.0/(beta*deltaT*deltaT); |
| 179 | } else if (displ == 2) { |
| 180 | c1 = deltaT*beta/gamma; |
| 181 | c2 = 1.0; |
| 182 | c3 = 1.0/(gamma*deltaT); |
| 183 | } else if (displ == 3) { |
| 184 | c1 = beta*deltaT*deltaT; |
| 185 | c2 = gamma*deltaT; |
| 186 | c3 = 1.0; |
| 187 | } |
| 188 | |
| 189 | if (U == 0) { |
| 190 | opserr << "Newmark::newStep() - domainChange() failed or hasn't been called\n"; |
| 191 | return -3; |
| 192 | } |
| 193 | |
| 194 | // set response at t to be that at t+deltaT of previous step |
| 195 | /* |
| 196 | if (converged == true) { |
| 197 | std::ofstream outfile; |
| 198 | |
| 199 | outfile.open("Newmark.dat",std::ofstream::out | std::ofstream::app); |
| 200 | int size = U->Size(); |
| 201 | for (int i=0; i<size; i++) |
| 202 | outfile << (*U)(i) << " "; |
| 203 | outfile << "\n"; |
| 204 | outfile.close(); |
| 205 | } |
| 206 | */ |
| 207 | |
| 208 | converged = true; |
| 209 | |
| 210 | (*Ut) = *U; |
| 211 | (*Utdot) = *Udot; |
| 212 | (*Utdotdot) = *Udotdot; |
| 213 | |
| 214 | if (displ == 1) { |
nothing calls this directly
no test coverage detected