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

Function TclCommand_setNumberer

SRC/runtime/commands/analysis/numberer.cpp:34–96  ·  view source on GitHub ↗

command that sets the Numberer object

Source from the content-addressed store, hash-verified

32// command that sets the Numberer object
33//
34int
35TclCommand_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

Callers

nothing calls this directly

Calls 2

setProcessIDMethod · 0.45
setChannelsMethod · 0.45

Tested by

no test coverage detected