| 868 | |
| 869 | |
| 870 | void |
| 871 | BasicAnalysisBuilder::newEigenAnalysis(int typeSolver, double shift) |
| 872 | { |
| 873 | assert(theAnalysisModel != nullptr); |
| 874 | |
| 875 | if (theHandler == nullptr) |
| 876 | theHandler = new TransformationConstraintHandler(); |
| 877 | |
| 878 | if (this->CurrentAnalysisFlag == EMPTY_ANALYSIS) |
| 879 | this->CurrentAnalysisFlag = TRANSIENT_ANALYSIS; |
| 880 | |
| 881 | this->fillDefaults(this->CurrentAnalysisFlag); |
| 882 | this->setLinks(this->CurrentAnalysisFlag); |
| 883 | |
| 884 | // create a new eigen system and solver |
| 885 | if (theEigenSOE != nullptr) { |
| 886 | if (theEigenSOE->getClassTag() != typeSolver) { |
| 887 | delete theEigenSOE; |
| 888 | theEigenSOE = nullptr; |
| 889 | } |
| 890 | } |
| 891 | |
| 892 | if (theEigenSOE == nullptr) { |
| 893 | domainStamp = 0; |
| 894 | if (typeSolver == EigenSOE_TAGS_SymBandEigenSOE) { |
| 895 | SymBandEigenSolver *theEigenSolver = new SymBandEigenSolver(); |
| 896 | theEigenSOE = new SymBandEigenSOE(*theEigenSolver, *theAnalysisModel); |
| 897 | |
| 898 | } else if (typeSolver == EigenSOE_TAGS_FullGenEigenSOE) { |
| 899 | FullGenEigenSolver *theEigenSolver = new FullGenEigenSolver(); |
| 900 | theEigenSOE = new FullGenEigenSOE(*theEigenSolver, *theAnalysisModel); |
| 901 | |
| 902 | } else { |
| 903 | theEigenSOE = new ArpackSOE(shift); |
| 904 | } |
| 905 | |
| 906 | // |
| 907 | // set the eigen soe in the system |
| 908 | // |
| 909 | theEigenSOE->setLinks(*theAnalysisModel); |
| 910 | theEigenSOE->setLinearSOE(*theSOE); |
| 911 | } // theEigenSOE == 0 |
| 912 | } |
| 913 | |
| 914 | |
| 915 | int |
no test coverage detected