00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <stdlib.h>
00039 #include <string.h>
00040 #include <Domain.h>
00041
00042 #include <fElmt02.h>
00043 #include <TclModelBuilder.h>
00044
00045 extern void printCommand(int argc, TCL_Char **argv);
00046
00047 int
00048 TclModelBuilder_addFeapTruss(ClientData clientData, Tcl_Interp *interp, int argc,
00049 TCL_Char **argv, Domain *theTclDomain, TclModelBuilder *theTclBuilder,
00050 int eleArgStart)
00051 {
00052
00053 if (theTclBuilder == 0) {
00054 opserr << "WARNING builder has been destroyed\n";
00055 return TCL_ERROR;
00056 }
00057
00058 int ndm = theTclBuilder->getNDM();
00059 int ndf = theTclBuilder->getNDF();
00060
00061 if (ndm != 2 && ndf != 2) {
00062 opserr << "WARNING - fTruss eleTag? iNode? jNode? A? E? needs ndm=2, ndf=2\n";
00063 return TCL_ERROR;
00064 }
00065
00066
00067 if ((argc-eleArgStart) < 5) {
00068 opserr << "WARNING insufficient arguments\n";
00069 printCommand(argc, argv);
00070 opserr << "Want: element fTruss eleTag? iNode? jNode? A? E?\n";
00071
00072 return TCL_ERROR;
00073 }
00074
00075
00076
00077 int trussId, iNode, jNode;
00078 double A,E;
00079 if (Tcl_GetInt(interp, argv[1+eleArgStart], &trussId) != TCL_OK) {
00080 opserr << "WARNING invalid truss eleTag" << endln;
00081 return TCL_ERROR;
00082 }
00083 if (Tcl_GetInt(interp, argv[2+eleArgStart], &iNode) != TCL_OK) {
00084 opserr << "WARNING invalid iNode\n";
00085 opserr << "truss element: " << trussId << endln;
00086 return TCL_ERROR;
00087 }
00088 if (Tcl_GetInt(interp, argv[3+eleArgStart], &jNode) != TCL_OK) {
00089 opserr << "WARNING invalid jNode\n";
00090 opserr << "truss element: " << trussId << endln;
00091 return TCL_ERROR;
00092 }
00093 if (Tcl_GetDouble(interp, argv[4+eleArgStart], &A) != TCL_OK) {
00094 opserr << "WARNING invalid A\n";
00095 opserr << "truss element: " << trussId << endln;
00096 return TCL_ERROR;
00097 }
00098 if (Tcl_GetDouble(interp, argv[5+eleArgStart], &E) != TCL_OK) {
00099 opserr << "WARNING invalid E\n";
00100 opserr << "truss element: " << trussId << endln;
00101 return TCL_ERROR;
00102 }
00103
00104
00105
00106 fElmt02 *theTruss = new fElmt02(trussId,iNode,jNode,A,E);
00107 if (theTruss == 0) {
00108 opserr << "WARNING ran out of memory creating element\n";
00109 opserr << "truss element: " << trussId << endln;
00110 return TCL_ERROR;
00111 }
00112
00113 if (theTclDomain->addElement(theTruss) == false) {
00114 opserr << "WARNING could not add element to the domain\n";
00115 opserr << "truss element: " << trussId << endln;
00116 delete theTruss;
00117 return TCL_ERROR;
00118 }
00119 return TCL_OK;
00120 }
00121
00122
00123