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

Method setResponse

DEVELOPER/core/Element.cpp:410–472  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

408}
409
410Response*
411Element::setResponse(const char **argv, int argc, OPS_Stream &output)
412{
413 Response *theResponse = 0;
414
415 output.tag("ElementOutput");
416 output.attr("eleType",this->getClassType());
417 output.attr("eleTag",this->getTag());
418 int numNodes = this->getNumExternalNodes();
419 const ID &nodes = this->getExternalNodes();
420 static char nodeData[32];
421
422 for (int i=0; i<numNodes; i++) {
423 sprintf(nodeData,"node%d",i+1);
424 output.attr(nodeData,nodes(i));
425 }
426
427 if (strcmp(argv[0],"force") == 0 || strcmp(argv[0],"forces") == 0 ||
428 strcmp(argv[0],"globalForce") == 0 || strcmp(argv[0],"globalForces") == 0) {
429 const Vector &force = this->getResistingForce();
430 int size = force.Size();
431 for (int i=0; i<size; i++) {
432 sprintf(nodeData,"P%d",i+1);
433 output.tag("ResponseType",nodeData);
434 }
435 // Using "strange" numbers to avoid conflicts with Element subclasses
436 theResponse = new ElementResponse(this, 111111, this->getResistingForce());
437 }
438
439 else if (strcmp(argv[0],"dampingForce") == 0 || strcmp(argv[0],"dampingForces") == 0) {
440 const Vector &force = this->getResistingForce();
441 int size = force.Size();
442 for (int i=0; i<size; i++) {
443 sprintf(nodeData,"P%d",i+1);
444 output.tag("ResponseType",nodeData);
445 }
446 theResponse = new ElementResponse(this, 222222, this->getResistingForce());
447 }
448
449 else if (strcmp(argv[0],"dynamicForce") == 0 || strcmp(argv[0],"dynamicForces") == 0) {
450 const Vector &force = this->getResistingForce();
451 int size = force.Size();
452 for (int i=0; i<size; i++) {
453 sprintf(nodeData,"P%d",i+1);
454 output.tag("ResponseType",nodeData);
455 }
456 theResponse = new ElementResponse(this, 333333, this->getResistingForce());
457 }
458
459 else if (strcmp(argv[0],"inertialForce") == 0 || strcmp(argv[0],"inertialForces") == 0) {
460 const Vector &force = this->getResistingForce();
461 int size = force.Size();
462 for (int i=0; i<size; i++) {
463 sprintf(nodeData,"P%d",i+1);
464 output.tag("ResponseType",nodeData);
465 }
466 theResponse = new ElementResponse(this, 444444, this->getResistingForce());
467 }

Callers 2

getElementResponseMethod · 0.45
updateMethod · 0.45

Calls 8

getResistingForceMethod · 0.80
tagMethod · 0.45
attrMethod · 0.45
getClassTypeMethod · 0.45
getTagMethod · 0.45
getNumExternalNodesMethod · 0.45
SizeMethod · 0.45
endTagMethod · 0.45

Tested by

no test coverage detected