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

Function TclCommand_newNewtonHallM

SRC/runtime/commands/analysis/algorithm.cpp:278–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

276
277
278int
279TclCommand_newNewtonHallM(ClientData clientData, Tcl_Interp* interp, Tcl_Size argc, TCL_Char**const argv)
280{
281 BasicAnalysisBuilder *builder = (BasicAnalysisBuilder *)clientData;
282 assert(builder != nullptr);
283
284 int method = 0;
285 double iFactor = .1;
286 double alpha = .01;
287 double c = 100;
288 double data[2];
289
290 int numData = 1;
291 if (OPS_GetDoubleInput(&numData,&data[0]) < 0) {
292 opserr << "WARNING invalid data reading 2 hall factors\n";
293 return 0;
294 }
295 iFactor = data[0];
296
297 for (int i=2; i<argc; i++) {
298
299 if (strcmp(argv[i], "-exp")==0 ||
300 strcmp(argv[i], "-Exp")==0) {
301 numData = 1;
302 if (OPS_GetDoubleInput(&numData,&data[0]) < 0) {
303 opserr << "WARNING invalid data reading 2 hall factors\n";
304 return 0;
305 } else
306 alpha = data[0];
307
308 } else if (strcmp(argv[i], "-sigmoid")==0 ||
309 strcmp(argv[i], "-Sigmoid")==0) {
310 method = 1;
311 int numData = 2;
312 if (OPS_GetDoubleInput(&numData,&data[0]) < 0) {
313 opserr << "WARNING invalid data reading 2 hall factors\n";
314 return 0;
315 } else {
316 alpha = data[0];
317 c = data[1];
318 }
319
320 } else if (strcmp(argv[i], "-constant")==0 ||
321 strcmp(argv[i], "-Constant")==0) {
322 method = 2;
323 int numData = 1;
324 if (OPS_GetDoubleInput(&numData,&data[0]) < 0) {
325 opserr << "WARNING invalid data reading 2 hall factors\n";
326 return 0;
327 } else {
328 c = data[0];
329 }
330 }
331 }
332
333 auto algorithm = new NewtonHallM(iFactor, method, alpha, c);
334 builder->set(algorithm);
335 return TCL_OK;

Callers

nothing calls this directly

Calls 2

OPS_GetDoubleInputFunction · 0.50
setMethod · 0.45

Tested by

no test coverage detected