| 913 | |
| 914 | |
| 915 | int |
| 916 | BasicAnalysisBuilder::eigen(int numMode, bool generalized, bool findSmallest) |
| 917 | { |
| 918 | // TODO: merge with newEigenAnalysis |
| 919 | |
| 920 | assert(theAnalysisModel != nullptr); |
| 921 | assert( theEigenSOE != nullptr); |
| 922 | |
| 923 | int result = 0; |
| 924 | Domain *the_Domain = this->getDomain(); |
| 925 | |
| 926 | // for parallel processing, want all analysis doing an eigenvalue analysis |
| 927 | result = the_Domain->eigenAnalysis(numMode, generalized, findSmallest); |
| 928 | |
| 929 | int stamp = the_Domain->hasDomainChanged(); |
| 930 | |
| 931 | if (stamp != domainStamp) { |
| 932 | //domainStamp = stamp; // commented out so domainChanged() gets called with integrator, |
| 933 | // which isnt updated here |
| 934 | // result = this->domainChanged(); |
| 935 | |
| 936 | theAnalysisModel->clearAll(); |
| 937 | theHandler->clearAll(); |
| 938 | |
| 939 | // Now invoke handle() on the constraint handler which |
| 940 | // causes the creation of FE_Element and DOF_Group objects |
| 941 | // and their addition to the AnalysisModel. |
| 942 | result = theHandler->handle(); |
| 943 | |
| 944 | // Now invoke number() on the numberer which causes |
| 945 | // equation numbers to be assigned to all the DOFs in the |
| 946 | // AnalysisModel. |
| 947 | result = theNumberer->numberDOF(); |
| 948 | |
| 949 | result = theHandler->doneNumberingDOF(); |
| 950 | |
| 951 | Graph &theGraph = theAnalysisModel->getDOFGraph(); |
| 952 | |
| 953 | result = theSOE->setSize(theGraph); |
| 954 | |
| 955 | result = theEigenSOE->setSize(theGraph); |
| 956 | |
| 957 | theAnalysisModel->clearDOFGraph(); |
| 958 | |
| 959 | if (result < 0) { |
| 960 | opserr << "BasicAnalysisBuilder::eigen() - domainChanged failed\n"; |
| 961 | return -1; |
| 962 | } |
| 963 | } |
| 964 | |
| 965 | // |
| 966 | // zero A and M |
| 967 | // |
| 968 | theEigenSOE->zeroA(); |
| 969 | theEigenSOE->zeroM(); |
| 970 | |
| 971 | // |
| 972 | // form K |
no test coverage detected