| 3457 | } |
| 3458 | |
| 3459 | int OPS_sensLambda() |
| 3460 | { |
| 3461 | if (OPS_GetNumRemainingInputArgs() < 2) { |
| 3462 | opserr << "WARNING no load pattern supplied -- getLoadFactor\n"; |
| 3463 | return -1; |
| 3464 | } |
| 3465 | |
| 3466 | int data[2]; |
| 3467 | int numdata = 2; |
| 3468 | if (OPS_GetIntInput(&numdata, &data[0]) < 0) { |
| 3469 | opserr << "WARNING: failed to read patternTag or paramTag\n"; |
| 3470 | return -1; |
| 3471 | } |
| 3472 | |
| 3473 | Domain* domain = OPS_GetDomain(); |
| 3474 | if (domain == 0) return 0; |
| 3475 | |
| 3476 | LoadPattern *thePattern = domain->getLoadPattern(data[0]); |
| 3477 | if (thePattern == 0) { |
| 3478 | opserr << "ERROR load pattern with tag " << data[0] << " not found in domain\n"; |
| 3479 | return -1; |
| 3480 | } |
| 3481 | |
| 3482 | Parameter *theParam = domain->getParameter(data[1]); |
| 3483 | if (theParam == 0) { |
| 3484 | opserr << "sensLambda: parameter " << data[1] << " not found" << "\n"; |
| 3485 | return -1; |
| 3486 | } |
| 3487 | |
| 3488 | int gradIndex = theParam->getGradIndex(); |
| 3489 | double factor = thePattern->getLoadFactorSensitivity(gradIndex); |
| 3490 | |
| 3491 | numdata = 1; |
| 3492 | if (OPS_SetDoubleOutput(&numdata, &factor, true) < 0) { |
| 3493 | opserr<<"WARNING failed to set output\n"; |
| 3494 | return -1; |
| 3495 | } |
| 3496 | |
| 3497 | return 0; |
| 3498 | } |
| 3499 | |
| 3500 | int OPS_sensSectionForce() |
| 3501 | { |
no test coverage detected