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

Method newEigenAnalysis

SRC/interpreter/PythonAnalysisBuilder.cpp:415–474  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

413}
414
415void PythonAnalysisBuilder::newEigenAnalysis(int typeSolver, double shift, EigenSOE *providedEigenSOE)
416{
417 // If a pre-constructed EigenSOE was provided (e.g., from Python factory), use it
418 if (providedEigenSOE != NULL) {
419 if (theEigenSOE != 0 && theEigenSOE != providedEigenSOE) {
420 delete theEigenSOE;
421 }
422 theEigenSOE = providedEigenSOE;
423 theEigenSOE->setLinks(*theAnalysisModel);
424 if (theSOE != 0) {
425 theEigenSOE->setLinearSOE(*theSOE);
426 }
427
428 if (theStaticAnalysis != 0) {
429 theStaticAnalysis->setEigenSOE(*theEigenSOE);
430 } else if (theTransientAnalysis != 0) {
431 theTransientAnalysis->setEigenSOE(*theEigenSOE);
432 }
433 return;
434 }
435
436 // create a new eigen system and solver
437 if(theEigenSOE != 0) {
438 if(theEigenSOE->getClassTag() != typeSolver) {
439 // delete theEigenSOE;
440 theEigenSOE = 0;
441 }
442 }
443
444 if(theEigenSOE == 0) {
445
446 if(typeSolver == EigenSOE_TAGS_SymBandEigenSOE) {
447 SymBandEigenSolver *theEigenSolver = new SymBandEigenSolver();
448 theEigenSOE = new SymBandEigenSOE(*theEigenSolver, *theAnalysisModel);
449
450 } else if(typeSolver == EigenSOE_TAGS_FullGenEigenSOE) {
451
452 FullGenEigenSolver *theEigenSolver = new FullGenEigenSolver();
453 theEigenSOE = new FullGenEigenSOE(*theEigenSolver, *theAnalysisModel);
454
455 } else if(typeSolver == EigenSOE_TAGS_SparsePythonCompressedEigenSOE ||
456 typeSolver == EigenSOE_TAGS_SparsePythonCOOEigenSOE) {
457 // This case should not be reached here - should use providedEigenSOE instead
458 opserr << "WARNING: PythonCompressedSparseEigenSOE should be created via factory function" << endln;
459 theEigenSOE = new ArpackSOE(shift);
460 } else {
461 theEigenSOE = new ArpackSOE(shift);
462 }
463
464 //
465 // set the eigen soe in the system
466 //
467
468 if(theStaticAnalysis != 0) {
469 theStaticAnalysis->setEigenSOE(*theEigenSOE);
470 } else if(theTransientAnalysis != 0) {
471 theTransientAnalysis->setEigenSOE(*theEigenSOE);
472 }

Callers 1

ops_eigenAnalysisFunction · 0.45

Calls 4

setLinksMethod · 0.45
setLinearSOEMethod · 0.45
setEigenSOEMethod · 0.45
getClassTagMethod · 0.45

Tested by

no test coverage detected