| 295 | } |
| 296 | |
| 297 | void PythonAnalysisBuilder::newTransientAnalysis() |
| 298 | { |
| 299 | this->wipe(); |
| 300 | |
| 301 | if(theAnalysisModel == 0) { |
| 302 | theAnalysisModel = new AnalysisModel(); |
| 303 | } |
| 304 | if(theTest == 0) { |
| 305 | theTest = new CTestNormUnbalance(1.0e-6,25,0); |
| 306 | } |
| 307 | if(theAlgorithm == 0) { |
| 308 | opserr << "WARNING analysis Transient - no Algorithm yet specified, \n"; |
| 309 | opserr << " NewtonRaphson default will be used\n"; |
| 310 | |
| 311 | theAlgorithm = new NewtonRaphson(*theTest); |
| 312 | } |
| 313 | if(theHandler == 0) { |
| 314 | opserr << "WARNING analysis Transient dt tFinal - no ConstraintHandler\n"; |
| 315 | opserr << " yet specified, PlainHandler default will be used\n"; |
| 316 | theHandler = new PlainHandler(); |
| 317 | } |
| 318 | if(theNumberer == 0) { |
| 319 | opserr << "WARNING analysis Transient dt tFinal - no Numberer specified, \n"; |
| 320 | opserr << " RCM default will be used\n"; |
| 321 | RCM *theRCM = new RCM(false); |
| 322 | theNumberer = new DOF_Numberer(*theRCM); |
| 323 | } |
| 324 | if(theTransientIntegrator == 0) { |
| 325 | opserr << "WARNING analysis Transient dt tFinal - no Integrator specified, \n"; |
| 326 | opserr << " Newmark(.5,.25) default will be used\n"; |
| 327 | theTransientIntegrator = new Newmark(0.5,0.25); |
| 328 | } |
| 329 | if(theSOE == 0) { |
| 330 | opserr << "WARNING analysis Transient dt tFinal - no LinearSOE specified, \n"; |
| 331 | opserr << " ProfileSPDLinSOE default will be used\n"; |
| 332 | ProfileSPDLinSolver *theSolver; |
| 333 | theSolver = new ProfileSPDLinDirectSolver(); |
| 334 | theSOE = new ProfileSPDLinSOE(*theSolver); |
| 335 | } |
| 336 | |
| 337 | Domain* theDomain = OPS_GetDomain(); |
| 338 | theTransientAnalysis=new DirectIntegrationAnalysis(*theDomain,*theHandler,*theNumberer, |
| 339 | *theAnalysisModel,*theAlgorithm, |
| 340 | *theSOE,*theTransientIntegrator, |
| 341 | theTest); |
| 342 | |
| 343 | // set eigen SOE |
| 344 | if(theEigenSOE != 0) { |
| 345 | if(theTransientAnalysis != 0) { |
| 346 | theTransientAnalysis->setEigenSOE(*theEigenSOE); |
| 347 | } |
| 348 | } |
| 349 | |
| 350 | this->resetTransient(); |
| 351 | } |
| 352 | |
| 353 | void PythonAnalysisBuilder::newPFEMAnalysis(double dtmax, double dtmin, double ratio) |
| 354 | { |
no test coverage detected