| 1119 | } |
| 1120 | |
| 1121 | int OPS_getRVParamTag() { |
| 1122 | if (OPS_GetNumRemainingInputArgs() < 1) { |
| 1123 | opserr << "ERROR: need getRVParamTag rvTag\n"; |
| 1124 | return -1; |
| 1125 | } |
| 1126 | |
| 1127 | // random variable tag input |
| 1128 | int rvTag; |
| 1129 | int num = 1; |
| 1130 | if (OPS_GetIntInput(&num, &rvTag) < 0) { |
| 1131 | opserr << "ERROR: failed to get rvTag\n"; |
| 1132 | return -1; |
| 1133 | } |
| 1134 | |
| 1135 | // reliability domain |
| 1136 | auto *theReliabilityDomain = cmds->getDomain(); |
| 1137 | if (theReliabilityDomain == 0) { |
| 1138 | opserr << "ERROR: reliability domain is null\n"; |
| 1139 | return -1; |
| 1140 | } |
| 1141 | |
| 1142 | // get random variable pointer |
| 1143 | auto *rv = theReliabilityDomain->getRandomVariablePtr(rvTag); |
| 1144 | if (rv == 0) { |
| 1145 | opserr << "ERROR: random variable with tag " << rvTag |
| 1146 | << " not found\n"; |
| 1147 | return -1; |
| 1148 | } |
| 1149 | |
| 1150 | // get random variable index |
| 1151 | int rvIndex = theReliabilityDomain->getRandomVariableIndex(rvTag); |
| 1152 | |
| 1153 | // get parameter index |
| 1154 | int paramIndex = |
| 1155 | theReliabilityDomain->getParameterIndexFromRandomVariableIndex( |
| 1156 | rvIndex); |
| 1157 | if (paramIndex < 0) { |
| 1158 | opserr |
| 1159 | << "ERROR: failed to get parameter index for random variable" |
| 1160 | << rvTag << "\n"; |
| 1161 | return -1; |
| 1162 | } |
| 1163 | |
| 1164 | // get parameter pointer |
| 1165 | auto *domain = cmds->getStructuralDomain(); |
| 1166 | if (domain == 0) { |
| 1167 | opserr << "ERROR: domain is null\n"; |
| 1168 | return -1; |
| 1169 | } |
| 1170 | |
| 1171 | auto *param = domain->getParameterFromIndex(paramIndex); |
| 1172 | if (param == 0) { |
| 1173 | opserr << "ERROR: failed to get parameter for random variable" |
| 1174 | << rvTag << "\n"; |
| 1175 | return -1; |
| 1176 | } |
| 1177 | |
| 1178 | int paramTag = param->getTag(); |
no test coverage detected