diff --git a/SRC/interpreter/OpenSeesOutputCommands.cpp b/SRC/interpreter/OpenSeesOutputCommands.cpp index d92ae8f668..a6a164e14d 100644 --- a/SRC/interpreter/OpenSeesOutputCommands.cpp +++ b/SRC/interpreter/OpenSeesOutputCommands.cpp @@ -92,6 +92,11 @@ BackgroundMesh& OPS_getBgMesh(); void* OPS_DriftRecorder(); void* OPS_EnvelopeDriftRecorder(); +int OPS_sectionLocation(); +int OPS_sectionWeight(); +int OPS_sectionTag(); +int OPS_sectionDisplacement(); + namespace { struct char_cmp { @@ -2864,329 +2869,6 @@ int OPS_sectionFlexibility() return 0; } -int OPS_sectionLocation() -{ - // make sure at least one other argument to contain type of system - if (OPS_GetNumRemainingInputArgs() < 1) { - opserr << "WARNING want - sectionLocation eleTag? \n"; - return -1; - } - - //opserr << "sectionLocation: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int numdata = 1; - int tag; - if (OPS_GetIntInput(&numdata, &tag) < 0) { - opserr << "WARNING sectionLocation eleTag? - could not read int input? \n"; - return -1; - } - - int secNum = 0; - if (OPS_GetNumRemainingInputArgs() > 0) { - if (OPS_GetIntInput(&numdata, &secNum) < 0) { - opserr << "WARNING sectionLocation eleTag? - could not read int input? \n"; - return -1; - } - } - - Domain* theDomain = OPS_GetDomain(); - if (theDomain == 0) return -1; - - Element *theElement = theDomain->getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionLocation element with tag " << tag << " not found in domain \n"; - return -1; - } - - int argcc = 1; - char a[80] = "integrationPoints"; - const char *argvv[1]; - argvv[0] = a; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - return 0; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); - - const Vector &theVec = *(info.theVector); - int Np = theVec.Size(); - - if (secNum > 0 && secNum <= Np) { // One IP - double value = theVec(secNum-1); - numdata = 1; - if (OPS_SetDoubleOutput(&numdata, &value, true) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } else { // All IPs in a list - std::vector data(Np); - for (int i = 0; i < Np; i++) - data[i] = theVec(i); - numdata = Np; - if (OPS_SetDoubleOutput(&numdata, &data[0], false) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } - - delete theResponse; - - return 0; -} - -int OPS_sectionWeight() -{ - // make sure at least one other argument to contain type of system - if (OPS_GetNumRemainingInputArgs() < 1) { - opserr << "WARNING want - sectionWeight eleTag? \n"; - return -1; - } - - //opserr << "sectionWeight: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int numdata = 1; - int tag; - if (OPS_GetIntInput(&numdata, &tag) < 0) { - opserr << "WARNING sectionWeight eleTag? - could not read int input? \n"; - return -1; - } - - int secNum = 0; - if (OPS_GetNumRemainingInputArgs() > 0) { - if (OPS_GetIntInput(&numdata, &secNum) < 0) { - opserr << "WARNING sectionWeight eleTag? - could not read int input? \n"; - return -1; - } - } - - Domain* theDomain = OPS_GetDomain(); - if (theDomain == 0) return -1; - - Element *theElement = theDomain->getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionWeight element with tag " << tag << " not found in domain \n"; - return -1; - } - - int argcc = 1; - char a[80] = "integrationWeights"; - const char *argvv[1]; - argvv[0] = a; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - return 0; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); - - const Vector &theVec = *(info.theVector); - int Np = theVec.Size(); - - if (secNum > 0 && secNum <= Np) { // One IP - double value = theVec(secNum-1); - numdata = 1; - if (OPS_SetDoubleOutput(&numdata, &value, true) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } else { // All IPs in a list - std::vector data(Np); - for (int i = 0; i < Np; i++) - data[i] = theVec(i); - numdata = Np; - if (OPS_SetDoubleOutput(&numdata, &data[0], false) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } - - delete theResponse; - - return 0; -} - -int OPS_sectionTag() -{ - // make sure at least one other argument to contain type of system - if (OPS_GetNumRemainingInputArgs() < 1) { - opserr << "WARNING want - sectionTag eleTag? \n"; - return -1; - } - - //opserr << "sectionLocation: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int numdata = 1; - int tag; - if (OPS_GetIntInput(&numdata, &tag) < 0) { - opserr << "WARNING sectionTag eleTag? - could not read int input? \n"; - return -1; - } - - int secNum = 0; - if (OPS_GetNumRemainingInputArgs() > 0) { - if (OPS_GetIntInput(&numdata, &secNum) < 0) { - opserr << "WARNING sectionTag eleTag? - could not read int input? \n"; - return -1; - } - } - - Domain* theDomain = OPS_GetDomain(); - if (theDomain == 0) return -1; - - Element *theElement = theDomain->getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionTag - element with tag " << tag << " not found in domain \n"; - return -1; - } - - int argcc = 1; - char a[80] = "sectionTags"; - const char *argvv[1]; - argvv[0] = a; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - return 0; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); - - const ID &theID = *(info.theID); - int Np = theID.Size(); - - if (secNum > 0 && secNum <= Np) { // One IP - int value = theID(secNum-1); - numdata = 1; - if (OPS_SetIntOutput(&numdata, &value, true) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } else { // All IPs in a list - std::vector data(Np); - for (int i = 0; i < Np; i++) - data[i] = theID(i); - numdata = Np; - if (OPS_SetIntOutput(&numdata, &data[0], false) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - } - - delete theResponse; - - return 0; -} - -int OPS_sectionDisplacement() -{ - // make sure at least one other argument to contain type of system - if (OPS_GetNumRemainingInputArgs() < 2) { - opserr << "WARNING want - sectionDisplacement eleTag? secNum? \n"; - return -1; - } - - //opserr << "sectionWeight: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int numdata = 2; - int data[2]; - - if (OPS_GetIntInput(&numdata, data) < 0) { - opserr << "WARNING sectionDisplacement eleTag? secNum? <-local>- could not read int input? \n"; - return -1; - } - - int tag = data[0]; - int secNum = data[1]; - bool local = false; - - if (OPS_GetNumRemainingInputArgs() > 0) { - const char* localGlobal = OPS_GetString(); - if (strstr(localGlobal,"local") != 0) - local = true; - } - - Domain* theDomain = OPS_GetDomain(); - if (theDomain == 0) return -1; - - Element *theElement = theDomain->getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionDisplacement element with tag " << tag << " not found in domain \n"; - return -1; - } - - int argcc = 2; - char a[80] = "sectionDisplacements"; - const char *argvv[2]; - argvv[0] = a; - if (local) - argvv[1] = "local"; - else - argvv[1] = "global"; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - return 0; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); - - const Matrix &theMatrix = *(info.theMatrix); - if (secNum <= 0 || secNum > theMatrix.noRows()) { - opserr << "WARNING invalid secNum\n"; - delete theResponse; - return -1; - } - - double value[3]; - value[0] = theMatrix(secNum-1,0); - value[1] = theMatrix(secNum-1,1); - value[2] = theMatrix(secNum-1,2); - - numdata = 3; - if (OPS_SetDoubleOutput(&numdata, &value[0], false) < 0) { - opserr << "WARNING failed to set output\n"; - delete theResponse; - return -1; - } - - delete theResponse; - - return 0; -} - int OPS_cbdiDisplacement() { // make sure at least one other argument to contain type of system diff --git a/SRC/material/section/SectionForceDeformation.cpp b/SRC/material/section/SectionForceDeformation.cpp index 6e1c35ae1d..49dab32bce 100644 --- a/SRC/material/section/SectionForceDeformation.cpp +++ b/SRC/material/section/SectionForceDeformation.cpp @@ -37,6 +37,11 @@ #include #include +#include +#include +#include +#include + #include #include @@ -95,6 +100,329 @@ void OPS_printSectionForceDeformation(OPS_Stream &s, int flag) { } } +int OPS_sectionLocation() +{ + // make sure at least one other argument to contain type of system + if (OPS_GetNumRemainingInputArgs() < 1) { + opserr << "WARNING want - sectionLocation eleTag? \n"; + return -1; + } + + //opserr << "sectionLocation: "; + //for (int i = 0; i < argc; i++) + // opserr << argv[i] << ' ' ; + //opserr << endln; + + int numdata = 1; + int tag; + if (OPS_GetIntInput(&numdata, &tag) < 0) { + opserr << "WARNING sectionLocation eleTag? - could not read int input? \n"; + return -1; + } + + int secNum = 0; + if (OPS_GetNumRemainingInputArgs() > 0) { + if (OPS_GetIntInput(&numdata, &secNum) < 0) { + opserr << "WARNING sectionLocation eleTag? - could not read int input? \n"; + return -1; + } + } + + Domain* theDomain = OPS_GetDomain(); + if (theDomain == 0) return -1; + + Element *theElement = theDomain->getElement(tag); + if (theElement == 0) { + opserr << "WARNING sectionLocation element with tag " << tag << " not found in domain \n"; + return -1; + } + + int argcc = 1; + char a[80] = "integrationPoints"; + const char *argvv[1]; + argvv[0] = a; + + DummyStream dummy; + + Response *theResponse = theElement->setResponse(argvv, argcc, dummy); + if (theResponse == 0) { + return 0; + } + + theResponse->getResponse(); + Information &info = theResponse->getInformation(); + + const Vector &theVec = *(info.theVector); + int Np = theVec.Size(); + + if (secNum > 0 && secNum <= Np) { // One IP + double value = theVec(secNum-1); + numdata = 1; + if (OPS_SetDoubleOutput(&numdata, &value, true) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } else { // All IPs in a list + std::vector data(Np); + for (int i = 0; i < Np; i++) + data[i] = theVec(i); + numdata = Np; + if (OPS_SetDoubleOutput(&numdata, &data[0], false) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } + + delete theResponse; + + return 0; +} + +int OPS_sectionWeight() +{ + // make sure at least one other argument to contain type of system + if (OPS_GetNumRemainingInputArgs() < 1) { + opserr << "WARNING want - sectionWeight eleTag? \n"; + return -1; + } + + //opserr << "sectionWeight: "; + //for (int i = 0; i < argc; i++) + // opserr << argv[i] << ' ' ; + //opserr << endln; + + int numdata = 1; + int tag; + if (OPS_GetIntInput(&numdata, &tag) < 0) { + opserr << "WARNING sectionWeight eleTag? - could not read int input? \n"; + return -1; + } + + int secNum = 0; + if (OPS_GetNumRemainingInputArgs() > 0) { + if (OPS_GetIntInput(&numdata, &secNum) < 0) { + opserr << "WARNING sectionWeight eleTag? - could not read int input? \n"; + return -1; + } + } + + Domain* theDomain = OPS_GetDomain(); + if (theDomain == 0) return -1; + + Element *theElement = theDomain->getElement(tag); + if (theElement == 0) { + opserr << "WARNING sectionWeight element with tag " << tag << " not found in domain \n"; + return -1; + } + + int argcc = 1; + char a[80] = "integrationWeights"; + const char *argvv[1]; + argvv[0] = a; + + DummyStream dummy; + + Response *theResponse = theElement->setResponse(argvv, argcc, dummy); + if (theResponse == 0) { + return 0; + } + + theResponse->getResponse(); + Information &info = theResponse->getInformation(); + + const Vector &theVec = *(info.theVector); + int Np = theVec.Size(); + + if (secNum > 0 && secNum <= Np) { // One IP + double value = theVec(secNum-1); + numdata = 1; + if (OPS_SetDoubleOutput(&numdata, &value, true) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } else { // All IPs in a list + std::vector data(Np); + for (int i = 0; i < Np; i++) + data[i] = theVec(i); + numdata = Np; + if (OPS_SetDoubleOutput(&numdata, &data[0], false) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } + + delete theResponse; + + return 0; +} + +int OPS_sectionTag() +{ + // make sure at least one other argument to contain type of system + if (OPS_GetNumRemainingInputArgs() < 1) { + opserr << "WARNING want - sectionTag eleTag? \n"; + return -1; + } + + //opserr << "sectionLocation: "; + //for (int i = 0; i < argc; i++) + // opserr << argv[i] << ' ' ; + //opserr << endln; + + int numdata = 1; + int tag; + if (OPS_GetIntInput(&numdata, &tag) < 0) { + opserr << "WARNING sectionTag eleTag? - could not read int input? \n"; + return -1; + } + + int secNum = 0; + if (OPS_GetNumRemainingInputArgs() > 0) { + if (OPS_GetIntInput(&numdata, &secNum) < 0) { + opserr << "WARNING sectionTag eleTag? - could not read int input? \n"; + return -1; + } + } + + Domain* theDomain = OPS_GetDomain(); + if (theDomain == 0) return -1; + + Element *theElement = theDomain->getElement(tag); + if (theElement == 0) { + opserr << "WARNING sectionTag - element with tag " << tag << " not found in domain \n"; + return -1; + } + + int argcc = 1; + char a[80] = "sectionTags"; + const char *argvv[1]; + argvv[0] = a; + + DummyStream dummy; + + Response *theResponse = theElement->setResponse(argvv, argcc, dummy); + if (theResponse == 0) { + return 0; + } + + theResponse->getResponse(); + Information &info = theResponse->getInformation(); + + const ID &theID = *(info.theID); + int Np = theID.Size(); + + if (secNum > 0 && secNum <= Np) { // One IP + int value = theID(secNum-1); + numdata = 1; + if (OPS_SetIntOutput(&numdata, &value, true) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } else { // All IPs in a list + std::vector data(Np); + for (int i = 0; i < Np; i++) + data[i] = theID(i); + numdata = Np; + if (OPS_SetIntOutput(&numdata, &data[0], false) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + } + + delete theResponse; + + return 0; +} + +int OPS_sectionDisplacement() +{ + // make sure at least one other argument to contain type of system + if (OPS_GetNumRemainingInputArgs() < 2) { + opserr << "WARNING want - sectionDisplacement eleTag? secNum? \n"; + return -1; + } + + //opserr << "sectionWeight: "; + //for (int i = 0; i < argc; i++) + // opserr << argv[i] << ' ' ; + //opserr << endln; + + int numdata = 2; + int data[2]; + + if (OPS_GetIntInput(&numdata, data) < 0) { + opserr << "WARNING sectionDisplacement eleTag? secNum? <-local>- could not read int input? \n"; + return -1; + } + + int tag = data[0]; + int secNum = data[1]; + bool local = false; + + if (OPS_GetNumRemainingInputArgs() > 0) { + const char* localGlobal = OPS_GetString(); + if (strstr(localGlobal,"local") != 0) + local = true; + } + + Domain* theDomain = OPS_GetDomain(); + if (theDomain == 0) return -1; + + Element *theElement = theDomain->getElement(tag); + if (theElement == 0) { + opserr << "WARNING sectionDisplacement element with tag " << tag << " not found in domain \n"; + return -1; + } + + int argcc = 2; + char a[80] = "sectionDisplacements"; + const char *argvv[2]; + argvv[0] = a; + if (local) + argvv[1] = "local"; + else + argvv[1] = "global"; + + DummyStream dummy; + + Response *theResponse = theElement->setResponse(argvv, argcc, dummy); + if (theResponse == 0) { + return 0; + } + + theResponse->getResponse(); + Information &info = theResponse->getInformation(); + + const Matrix &theMatrix = *(info.theMatrix); + if (secNum <= 0 || secNum > theMatrix.noRows()) { + opserr << "WARNING invalid secNum\n"; + delete theResponse; + return -1; + } + + double value[3]; + value[0] = theMatrix(secNum-1,0); + value[1] = theMatrix(secNum-1,1); + value[2] = theMatrix(secNum-1,2); + + numdata = 3; + if (OPS_SetDoubleOutput(&numdata, &value[0], false) < 0) { + opserr << "WARNING failed to set output\n"; + delete theResponse; + return -1; + } + + delete theResponse; + + return 0; +} + SectionForceDeformation::SectionForceDeformation(int tag, int classTag) :Material(tag,classTag), fDefault(0), sDefault(0) { diff --git a/SRC/tcl/commands.cpp b/SRC/tcl/commands.cpp index 02ea91901f..8cff5f33ca 100644 --- a/SRC/tcl/commands.cpp +++ b/SRC/tcl/commands.cpp @@ -60,6 +60,11 @@ extern void OPS_clearAllStiffnessDegradation(void); extern void OPS_clearAllStrengthDegradation(void); extern void OPS_clearAllUnloadingRule(void); +int OPS_sectionLocation(); +int OPS_sectionWeight(); +int OPS_sectionTag(); +int OPS_sectionDisplacement(); + // the following is a little kludgy but it works! #ifdef _USING_STL_STREAMS @@ -1068,6 +1073,10 @@ int OpenSeesAppInit(Tcl_Interp *interp) { Tcl_CreateCommand(interp, "sectionLocation", §ionLocation, (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); Tcl_CreateCommand(interp, "sectionWeight", §ionWeight, + (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); + Tcl_CreateCommand(interp, "sectionTag", §ionTag, + (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); + Tcl_CreateCommand(interp, "sectionDisplacement", §ionDisplacement, (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); Tcl_CreateCommand(interp, "basicDeformation", &basicDeformation, (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL); @@ -8187,59 +8196,10 @@ sectionDeformation(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char int sectionLocation(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv) { - // make sure at least one other argument to contain type of system - if (argc < 3) { - opserr << "WARNING want - sectionLocation eleTag? secNum? \n"; - return TCL_ERROR; - } + OPS_ResetInputNoBuilder(clientData, interp, 1, argc, argv, &theDomain); - //opserr << "sectionDeformation: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int tag, secNum; - - if (Tcl_GetInt(interp, argv[1], &tag) != TCL_OK) { - opserr << "WARNING sectionLocation eleTag? secNum? - could not read eleTag? \n"; - return TCL_ERROR; - } - if (Tcl_GetInt(interp, argv[2], &secNum) != TCL_OK) { - opserr << "WARNING sectionLocation eleTag? secNum? - could not read secNum? \n"; - return TCL_ERROR; - } - - Element *theElement = theDomain.getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionLocation element with tag " << tag << " not found in domain \n"; - return TCL_ERROR; - } - - int argcc = 1; - char a[80] = "integrationPoints"; - const char *argvv[1]; - argvv[0] = a; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - char buffer [] = "0.0"; - Tcl_SetResult(interp, buffer, TCL_VOLATILE); - return TCL_OK; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); - - const Vector &theVec = *(info.theVector); - - char buffer[40]; - sprintf(buffer,"%12.8g",theVec(secNum-1)); - - Tcl_SetResult(interp, buffer, TCL_VOLATILE); - - delete theResponse; + if (OPS_sectionLocation() < 0) + return TCL_ERROR; return TCL_OK; } @@ -8247,59 +8207,32 @@ sectionLocation(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char ** int sectionWeight(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv) { - // make sure at least one other argument to contain type of system - if (argc < 3) { - opserr << "WARNING want - sectionWeight eleTag? secNum? \n"; - return TCL_ERROR; - } + OPS_ResetInputNoBuilder(clientData, interp, 1, argc, argv, &theDomain); - //opserr << "sectionDeformation: "; - //for (int i = 0; i < argc; i++) - // opserr << argv[i] << ' ' ; - //opserr << endln; - - int tag, secNum; - - if (Tcl_GetInt(interp, argv[1], &tag) != TCL_OK) { - opserr << "WARNING sectionWeight eleTag? secNum? - could not read eleTag? \n"; - return TCL_ERROR; - } - if (Tcl_GetInt(interp, argv[2], &secNum) != TCL_OK) { - opserr << "WARNING sectionWeight eleTag? secNum? - could not read secNum? \n"; - return TCL_ERROR; - } - - Element *theElement = theDomain.getElement(tag); - if (theElement == 0) { - opserr << "WARNING sectionWeight element with tag " << tag << " not found in domain \n"; - return TCL_ERROR; - } - - int argcc = 1; - char a[80] = "integrationWeights"; - const char *argvv[1]; - argvv[0] = a; - - DummyStream dummy; - - Response *theResponse = theElement->setResponse(argvv, argcc, dummy); - if (theResponse == 0) { - char buffer[] = "0.0"; - Tcl_SetResult(interp, buffer, TCL_VOLATILE); - return TCL_OK; - } - - theResponse->getResponse(); - Information &info = theResponse->getInformation(); + if (OPS_sectionWeight() < 0) + return TCL_ERROR; - const Vector &theVec = *(info.theVector); + return TCL_OK; +} - char buffer[40]; - sprintf(buffer,"%12.8g",theVec(secNum-1)); +int +sectionTag(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv) +{ + OPS_ResetInputNoBuilder(clientData, interp, 1, argc, argv, &theDomain); + + if (OPS_sectionTag() < 0) + return TCL_ERROR; - Tcl_SetResult(interp, buffer, TCL_VOLATILE); + return TCL_OK; +} - delete theResponse; +int +sectionDisplacement(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv) +{ + OPS_ResetInputNoBuilder(clientData, interp, 1, argc, argv, &theDomain); + + if (OPS_sectionDisplacement() < 0) + return TCL_ERROR; return TCL_OK; } diff --git a/SRC/tcl/commands.h b/SRC/tcl/commands.h index 6cf8bf82b9..2c532dd216 100644 --- a/SRC/tcl/commands.h +++ b/SRC/tcl/commands.h @@ -345,6 +345,12 @@ sectionLocation(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char ** int sectionWeight(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv); +int +sectionTag(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv); + +int +sectionDisplacement(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv); + int basicDeformation(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv);