| 286 | |
| 287 | |
| 288 | int |
| 289 | TclCommand_getNDM(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char ** const argv) |
| 290 | { |
| 291 | assert(clientData != nullptr); |
| 292 | BasicModelBuilder* builder = static_cast<BasicModelBuilder*>(clientData); |
| 293 | Domain *the_domain = builder->getDomain(); |
| 294 | |
| 295 | int ndm; |
| 296 | |
| 297 | if (argc > 1) { |
| 298 | int tag; |
| 299 | if (Tcl_GetInt(interp, argv[1], &tag) != TCL_OK) { |
| 300 | opserr << OpenSees::PromptValueError << "ndm nodeTag? \n"; |
| 301 | return TCL_ERROR; |
| 302 | } |
| 303 | |
| 304 | Node *theNode = the_domain->getNode(tag); |
| 305 | if (theNode == nullptr) { |
| 306 | opserr << OpenSees::PromptValueError << "nodeTag " << tag << " does not exist \n"; |
| 307 | return TCL_ERROR; |
| 308 | } |
| 309 | const Vector &coords = theNode->getCrds(); |
| 310 | ndm = coords.Size(); |
| 311 | |
| 312 | } else { |
| 313 | ndm = builder->getNDM(); |
| 314 | } |
| 315 | |
| 316 | Tcl_SetObjResult(interp, Tcl_NewIntObj(ndm)); |
| 317 | return TCL_OK; |
| 318 | } |
| 319 | |
| 320 | int |
| 321 | TclCommand_getNDF(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char ** const argv) |