command that sets the Numberer object
| 32 | // command that sets the Numberer object |
| 33 | // |
| 34 | int |
| 35 | TclCommand_setNumberer(ClientData clientData, Tcl_Interp* interp, int argc, TCL_Char ** const argv) |
| 36 | { |
| 37 | BasicAnalysisBuilder *builder = (BasicAnalysisBuilder *)clientData; |
| 38 | assert(builder != nullptr); |
| 39 | |
| 40 | |
| 41 | DOF_Numberer *theNumberer = nullptr; |
| 42 | |
| 43 | // make sure at least one other argument to contain numberer |
| 44 | if (argc < 2) { |
| 45 | opserr << "WARNING need to specify a Numberer type \n"; |
| 46 | return TCL_ERROR; |
| 47 | } |
| 48 | |
| 49 | #if defined(_PARALLEL_PROCESSING) |
| 50 | // check argv[1] for type of Numberer and create the object |
| 51 | if (strcmp(argv[1], "Plain") == 0) { |
| 52 | theNumberer = new ParallelNumberer(); |
| 53 | } else if (strcmp(argv[1], "RCM") == 0) { |
| 54 | RCM *theRCM = new RCM(false); |
| 55 | theNumberer = new ParallelNumberer(*theRCM); |
| 56 | } else { |
| 57 | opserr << "WARNING No Numberer type exists (Plain, RCM only) \n"; |
| 58 | return TCL_ERROR; |
| 59 | } |
| 60 | #else |
| 61 | |
| 62 | // check argv[1] for type of Numberer and create the object |
| 63 | if (strcmp(argv[1], "Plain") == 0) { |
| 64 | theNumberer = new PlainNumberer(); |
| 65 | |
| 66 | } else if (strcmp(argv[1], "RCM") == 0) { |
| 67 | RCM *theRCM = new RCM(false); |
| 68 | theNumberer = new DOF_Numberer(*theRCM); |
| 69 | |
| 70 | } else if (strcmp(argv[1], "AMD") == 0) { |
| 71 | AMD *theAMD = new AMD(); |
| 72 | theNumberer = new DOF_Numberer(*theAMD); |
| 73 | } |
| 74 | |
| 75 | # ifdef _PARALLEL_INTERPRETERS |
| 76 | else if ((strcmp(argv[1], "ParallelPlain") == 0) || |
| 77 | (strcmp(argv[1], "Parallel") == 0)) { |
| 78 | ParallelNumberer *theParallelNumberer = new ParallelNumberer; |
| 79 | theNumberer = theParallelNumberer; |
| 80 | theParallelNumberer->setProcessID(OPS_rank); |
| 81 | theParallelNumberer->setChannels(numChannels, theChannels); |
| 82 | |
| 83 | } else if (strcmp(argv[1], "ParallelRCM") == 0) { |
| 84 | RCM *theRCM = new RCM(false); |
| 85 | ParallelNumberer *theParallelNumberer = new ParallelNumberer(*theRCM); |
| 86 | theNumberer = theParallelNumberer; |
| 87 | theParallelNumberer->setProcessID(OPS_rank); |
| 88 | theParallelNumberer->setChannels(numChannels, theChannels); |
| 89 | } |
| 90 | # endif |
| 91 | #endif |
nothing calls this directly
no test coverage detected