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

Function TclCommand_addPattern

SRC/runtime/commands/domain/loading/pattern.cpp:84–745  ·  view source on GitHub ↗

This command creates a scope where the following commands behave differently: - load - sp

Source from the content-addressed store, hash-verified

82// - load
83// - sp
84int
85TclCommand_addPattern(ClientData clientData, Tcl_Interp *interp, int argc,
86 TCL_Char ** const argv)
87{
88 assert(clientData != nullptr);
89 BasicModelBuilder *builder = static_cast<BasicModelBuilder*>(clientData);
90 Domain* domain = builder->getDomain();
91 LoadPattern *thePattern = nullptr;
92
93 // make sure at least one other argument to contain integrator
94 if (argc < 3) {
95 opserr << OpenSees::PromptValueError << "invalid command - want: pattern type ";
96 opserr << " <type args> {list of load and sp constraints commands}\n";
97 opserr << " valid types: Plain, UniformExcitation, MultiSupport\n";
98 return TCL_ERROR;
99 }
100
101 int commandEndMarker = 3;
102
103 TimeSeries *theSeries = nullptr;
104
105 int patternID;
106 if (Tcl_GetInt(interp, argv[2], &patternID) != TCL_OK) {
107 opserr << OpenSees::PromptValueError << "invalid patternID: " << argv[2] << "\n";
108 return TCL_ERROR;
109 }
110
111 if (strcmp(argv[1], "Plain") == 0) {
112 if (argc < 4) {
113 opserr << OpenSees::PromptValueError << "Invalid command for Plain pattern.\n";
114 return TCL_ERROR;
115 }
116
117 double fact = 1.0;
118 const char* series_arg = nullptr;
119
120 while (commandEndMarker < argc) {
121 if ((strcmp(argv[commandEndMarker], "-fact") == 0) ||
122 (strcmp(argv[commandEndMarker], "-factor") == 0)) {
123
124 if (Tcl_GetDouble(interp, argv[++commandEndMarker], &fact) != TCL_OK) {
125 opserr << OpenSees::PromptValueError
126 << "invalid factor: " << argv[commandEndMarker] << "\n";
127 return TCL_ERROR;
128 }
129 commandEndMarker++;
130
131 } else if (series_arg == nullptr) {
132 series_arg = argv[commandEndMarker];
133 commandEndMarker++;
134
135 } else {
136 break;
137 }
138 }
139
140 thePattern = new LoadPattern(patternID, fact);
141 theSeries = TclSeriesCommand(clientData, interp, series_arg);

Callers

nothing calls this directly

Calls 7

TclSeriesCommandFunction · 0.85
setTimeSeriesMethod · 0.80
setMapsMethod · 0.80
getDomainMethod · 0.45
sizeMethod · 0.45
addLoadPatternMethod · 0.45

Tested by

no test coverage detected