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

Function TclCommand_sensLambda

SRC/runtime/commands/analysis/sensitivity.cpp:40–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38
39
40int
41TclCommand_sensLambda(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char ** const argv)
42{
43 BasicAnalysisBuilder* builder = static_cast<BasicAnalysisBuilder*>(clientData);
44
45 if (argc < 3) {
46 opserr << OpenSees::PromptValueError << "insufficient arguments\n";
47 return TCL_ERROR;
48 }
49
50 int pattern, paramTag;
51 if (Tcl_GetInt(interp, argv[1], &pattern) != TCL_OK) {
52 opserr << "ERROR reading load pattern tag\n";
53 return TCL_ERROR;
54 }
55
56 LoadPattern *thePattern = builder->getDomain()->getLoadPattern(pattern);
57 if (thePattern == nullptr) {
58 opserr << "ERROR load pattern with tag " << pattern
59 << " not found in domain\n";
60 return TCL_ERROR;
61 }
62
63 if (Tcl_GetInt(interp, argv[2], &paramTag) != TCL_OK) {
64 opserr << OpenSees::PromptValueError
65 << "sensLambda patternTag? paramTag? - could not read "
66 "paramTag? ";
67 return TCL_ERROR;
68 }
69
70 Parameter *theParam = builder->getDomain()->getParameter(paramTag);
71 if (theParam == nullptr) {
72 opserr << OpenSees::PromptValueError
73 << "sensLambda: parameter " << paramTag << " not found" << "\n";
74 return TCL_ERROR;
75 }
76
77 int gradIndex = theParam->getGradIndex();
78 double value = thePattern->getLoadFactorSensitivity(gradIndex);
79
80 Tcl_SetObjResult(interp, Tcl_NewDoubleObj(value));
81
82 return TCL_OK;
83}
84
85
86int

Callers

nothing calls this directly

Calls 5

getLoadPatternMethod · 0.45
getDomainMethod · 0.45
getParameterMethod · 0.45
getGradIndexMethod · 0.45

Tested by

no test coverage detected