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

Function ops_eigenAnalysis

SRC/interpreter/PythonAnalysisBuilder.cpp:1149–1255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1147}
1148
1149PyObject *ops_eigenAnalysis(PyObject *self, PyObject *args)
1150{
1151 OPS_ResetCommandLine(PyTuple_Size(args), 0, args);
1152
1153 // check inputs
1154 int numArgs = OPS_GetNumRemainingInputArgs();
1155 if(numArgs < 1) {
1156 PyErr_SetString(PyExc_RuntimeError,"ERROR eigen('type',numModes) or eigen('PythonSparse',numModes,dict)");
1157 return NULL;
1158 }
1159
1160 // get parameters
1161 bool generalizedAlgo = true;// 0 - frequency/generalized (default),1 - standard, 2 - buckling
1162 int typeSolver = EigenSOE_TAGS_ArpackSOE;
1163 double shift = 0.0;
1164 bool findSmallest = true;
1165 int numEigen = 0;
1166 EigenSOE *providedEigenSOE = nullptr;
1167
1168 // Check if first argument is "PythonSparse" - if so, expect numModes and dict
1169 std::string firstArg = OPS_GetString();
1170 if (firstArg == "PythonSparse" || firstArg == "PythonCompressedSparseEigen") {
1171 // PythonSparse eigen solver - requires numModes as second argument, dict as third
1172 // First get numModes
1173 int numData = 1;
1174 if(OPS_GetIntInput(&numData,&numEigen) < 0) {
1175 PyErr_SetString(PyExc_RuntimeError,"ERROR eigen('PythonSparse',numModes,dict) - invalid numModes");
1176 return NULL;
1177 }
1178
1179 // Then get dict argument
1180 extern void *OPS_SparsePythonEigenSolver();
1181 void *eigenSOEPtr = OPS_SparsePythonEigenSolver();
1182 if (eigenSOEPtr == NULL) {
1183 return NULL;
1184 }
1185 providedEigenSOE = static_cast<EigenSOE *>(eigenSOEPtr);
1186 typeSolver = providedEigenSOE->getClassTag();
1187 } else {
1188 // Traditional eigen analysis - parse type and numModes
1189 // check type of eigenvalue analysis
1190 if(numArgs > 1) {
1191 if(firstArg=="frequency"||firstArg=="-frequency"||firstArg=="generalized"||firstArg=="-generalized") {
1192 generalizedAlgo = true;
1193 } else if(firstArg=="standard"||firstArg=="-standard") {
1194 generalizedAlgo = false;
1195 } else if(firstArg=="-findLargest") {
1196 findSmallest = false;
1197 } else if(firstArg=="genBandArpack"||firstArg=="--genBandArpack"||
1198 firstArg=="genBandArpackEigen"||firstArg=="-genBandArpackEigen") {
1199 typeSolver = EigenSOE_TAGS_ArpackSOE;
1200 } else if(firstArg=="symmBandLapack"||firstArg=="-symmBandLapack"||
1201 firstArg=="symmBandLapackEigen"||firstArg=="-symmBandLapackEigen") {
1202 typeSolver = EigenSOE_TAGS_SymBandEigenSOE;
1203 } else if(firstArg=="fullGenLapack"||firstArg=="-fullGenLapack"||
1204 firstArg=="fullGenLapackEigen"||firstArg=="-fullGenLapackEigen") {
1205 typeSolver = EigenSOE_TAGS_FullGenEigenSOE;
1206 } else {

Callers

nothing calls this directly

Calls 12

OPS_ResetCommandLineFunction · 0.85
OPS_GetStringFunction · 0.70
OPS_GetIntInputFunction · 0.70
OPS_GetDomainFunction · 0.70
getClassTagMethod · 0.45
newEigenAnalysisMethod · 0.45
getStaticAnalysisMethod · 0.45
getTransientAnalysisMethod · 0.45
newTransientAnalysisMethod · 0.45
eigenMethod · 0.45

Tested by

no test coverage detected