Rev 3248 | Rev 3728 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2 | fmk | 1 | /* ****************************************************************** ** |
| 2 | ** OpenSees - Open System for Earthquake Engineering Simulation ** |
||
| 3 | ** Pacific Earthquake Engineering Research Center ** |
||
| 4 | ** ** |
||
| 5 | ** ** |
||
| 6 | ** (C) Copyright 1999, The Regents of the University of California ** |
||
| 7 | ** All Rights Reserved. ** |
||
| 8 | ** ** |
||
| 9 | ** Commercial use of this program without express permission of the ** |
||
| 10 | ** University of California, Berkeley, is strictly prohibited. See ** |
||
| 11 | ** file 'COPYRIGHT' in main directory for information on usage and ** |
||
| 12 | ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** |
||
| 13 | ** ** |
||
| 14 | ** Developed by: ** |
||
| 15 | ** Frank McKenna (fmckenna@ce.berkeley.edu) ** |
||
| 16 | ** Gregory L. Fenves (fenves@ce.berkeley.edu) ** |
||
| 17 | ** Filip C. Filippou (filippou@ce.berkeley.edu) ** |
||
| 18 | ** ** |
||
| 19 | ** ****************************************************************** */ |
||
| 20 | |||
| 3549 | fmk | 21 | // $Revision: 1.46 $ |
| 22 | // $Date: 2008-07-21 22:53:02 $ |
||
| 2 | fmk | 23 | // $Source: /usr/local/cvs/OpenSees/SRC/element/TclElementCommands.cpp,v $ |
| 24 | |||
| 25 | // Written: fmk |
||
| 26 | // Created: 07/99 |
||
| 27 | // Revision: A |
||
| 28 | // |
||
| 29 | // Description: This file contains the implementation of the TclElementCommands. |
||
| 30 | // The file contains the routine TclElementCommands which is invoked by the |
||
| 31 | // TclModelBuilder. |
||
| 32 | // |
||
| 33 | // What: "@(#) TclModelBuilder.C, revA" |
||
| 34 | |||
| 35 | #include <stdlib.h> |
||
| 36 | #include <string.h> |
||
| 1271 | fmk | 37 | #include <OPS_Stream.h> |
| 2 | fmk | 38 | #include <Domain.h> |
| 39 | |||
| 887 | jeremic | 40 | #include <ElasticBeam2d.h> |
| 41 | #include <ElasticBeam3d.h> |
||
| 42 | |||
| 43 | //Zhaohui Yang (UCD) |
||
| 44 | #include <EightNodeBrick.h> |
||
| 45 | #include <TwentyNodeBrick.h> |
||
| 46 | |||
| 47 | #include <CrdTransf2d.h> |
||
| 48 | #include <CrdTransf3d.h> |
||
| 49 | |||
| 2 | fmk | 50 | #include <TclModelBuilder.h> |
| 2046 | fmk | 51 | #include <packages.h> |
| 2 | fmk | 52 | |
| 53 | // |
||
| 54 | // SOME STATIC POINTERS USED IN THE FUNCTIONS INVOKED BY THE INTERPRETER |
||
| 55 | // |
||
| 56 | |||
| 2046 | fmk | 57 | |
| 58 | typedef struct elementPackageCommand { |
||
| 59 | char *funcName; |
||
| 60 | int (*funcPtr)(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 61 | TCL_Char **argv, Domain*, TclModelBuilder *); |
||
| 62 | struct elementPackageCommand *next; |
||
| 63 | } ElementPackageCommand; |
||
| 64 | |||
| 65 | static ElementPackageCommand *theElementPackageCommands = NULL; |
||
| 66 | |||
| 1321 | fmk | 67 | extern void printCommand(int argc, TCL_Char **argv); |
| 2 | fmk | 68 | |
| 69 | // |
||
| 70 | // THE PROTOTYPES OF THE FUNCTIONS INVOKED BY THE INTERPRETER |
||
| 71 | // |
||
| 72 | |||
| 73 | extern int |
||
| 74 | TclModelBuilder_addFeapTruss(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 1321 | fmk | 75 | TCL_Char **argv, Domain*, TclModelBuilder *, int argStart); |
| 2 | fmk | 76 | |
| 77 | extern int |
||
| 78 | TclModelBuilder_addTruss(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 1321 | fmk | 79 | TCL_Char **argv, Domain*, TclModelBuilder *, int argStart); |
| 317 | fmk | 80 | |
| 579 | mhscott | 81 | extern int |
| 2 | fmk | 82 | TclModelBuilder_addElasticBeam(ClientData clientData, Tcl_Interp *interp, int argc, |
| 1321 | fmk | 83 | TCL_Char **argv, Domain*, TclModelBuilder *, int argStart); |
| 2 | fmk | 84 | |
| 317 | fmk | 85 | extern int |
| 86 | TclModelBuilder_addBrick(ClientData clientData, Tcl_Interp *interp, |
||
| 1321 | fmk | 87 | int argc, TCL_Char **argv, Domain*, |
| 317 | fmk | 88 | TclModelBuilder *, int argStart); |
| 89 | |||
| 90 | extern int |
||
| 91 | TclModelBuilder_addShellMITC4(ClientData clientData, Tcl_Interp *interp, |
||
| 1321 | fmk | 92 | int argc, TCL_Char **argv, Domain*, |
| 317 | fmk | 93 | TclModelBuilder *, int argStart); |
| 94 | |||
| 95 | extern int |
||
| 1321 | fmk | 96 | TclModelBuilder_addConstantPressureVolumeQuad(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 317 | fmk | 97 | Domain*, TclModelBuilder *); |
| 98 | |||
| 99 | extern int |
||
| 1321 | fmk | 100 | TclModelBuilder_addJoint2D(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 101 | Domain*, TclModelBuilder *); |
||
| 1068 | fmk | 102 | |
| 103 | extern int |
||
| 1633 | fmk | 104 | TclModelBuilder_addJoint3D(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 105 | Domain*, TclModelBuilder *); |
||
| 106 | |||
| 107 | extern int |
||
| 1321 | fmk | 108 | TclModelBuilder_addEnhancedQuad(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 317 | fmk | 109 | Domain*, TclModelBuilder *); |
| 110 | |||
| 576 | fmk | 111 | extern int |
| 1321 | fmk | 112 | TclModelBuilder_addNineNodeMixedQuad(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 576 | fmk | 113 | Domain*, TclModelBuilder *); |
| 317 | fmk | 114 | |
| 576 | fmk | 115 | |
| 2 | fmk | 116 | // GLF |
| 117 | extern int |
||
| 1321 | fmk | 118 | TclModelBuilder_addZeroLength(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 2 | fmk | 119 | Domain*, TclModelBuilder *); |
| 120 | |||
| 3248 | fmk | 121 | |
| 3130 | fmk | 122 | // add by Gang Wang for Contact Element |
| 123 | extern int |
||
| 124 | TclModelBuilder_addZeroLengthContact2D(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 125 | Domain*, TclModelBuilder *); |
||
| 126 | |||
| 127 | // add by Gang Wang for Contact Element |
||
| 128 | extern int |
||
| 129 | TclModelBuilder_addZeroLengthContact3D(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 130 | Domain*, TclModelBuilder *); |
||
| 131 | |||
| 36 | mhscott | 132 | // MHS |
| 133 | extern int |
||
| 1321 | fmk | 134 | TclModelBuilder_addZeroLengthSection(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 135 | Domain*, TclModelBuilder *); |
||
| 36 | mhscott | 136 | |
| 137 | // MHS |
||
| 1068 | fmk | 138 | extern int |
| 1321 | fmk | 139 | TclModelBuilder_addZeroLengthND(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 140 | Domain*, TclModelBuilder *); |
||
| 36 | mhscott | 141 | |
| 142 | |||
| 2 | fmk | 143 | // MHS |
| 144 | extern int |
||
| 1321 | fmk | 145 | TclModelBuilder_addBeamWithHinges(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 2 | fmk | 146 | Domain*, TclModelBuilder *); |
| 147 | extern int |
||
| 1321 | fmk | 148 | TclModelBuilder_addFourNodeQuad(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 2 | fmk | 149 | Domain*, TclModelBuilder *); |
| 3092 | mhscott | 150 | |
| 317 | fmk | 151 | extern int |
| 2995 | fmk | 152 | TclModelBuilder_addDispBeamColumnInt(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 153 | Domain*, TclModelBuilder *); |
||
| 154 | |||
| 155 | extern int |
||
| 1321 | fmk | 156 | TclModelBuilder_addForceBeamColumn(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 1225 | mhscott | 157 | Domain*, TclModelBuilder *); |
| 317 | fmk | 158 | |
| 1481 | mhscott | 159 | // NM |
| 160 | extern int |
||
| 161 | TclModelBuilder_addBeamColumnJoint(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 162 | Domain*, TclModelBuilder *, int); |
||
| 259 | fmk | 163 | |
| 567 | jeremic | 164 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 165 | extern int TclModelBuilder_addEightNodeBrick(ClientData, |
| 166 | Tcl_Interp *, |
||
| 860 | fmk | 167 | int, |
| 1321 | fmk | 168 | TCL_Char **, |
| 860 | fmk | 169 | Domain*, |
| 170 | TclModelBuilder *, |
||
| 171 | int); |
||
| 567 | jeremic | 172 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 173 | extern int TclModelBuilder_addTwentyNodeBrick(ClientData, |
| 174 | Tcl_Interp *, |
||
| 860 | fmk | 175 | int, |
| 1321 | fmk | 176 | TCL_Char **, |
| 860 | fmk | 177 | Domain*, |
| 178 | TclModelBuilder *, |
||
| 179 | int); |
||
| 162 | jeremic | 180 | |
| 771 | jeremic | 181 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 182 | extern int TclModelBuilder_addEightNodeBrick_u_p_U(ClientData, |
||
| 183 | Tcl_Interp *, |
||
| 860 | fmk | 184 | int, |
| 1321 | fmk | 185 | TCL_Char **, |
| 860 | fmk | 186 | Domain*, |
| 187 | TclModelBuilder *, |
||
| 188 | int); |
||
| 771 | jeremic | 189 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 190 | extern int TclModelBuilder_addTwentyNodeBrick_u_p_U(ClientData, |
||
| 191 | Tcl_Interp *, |
||
| 860 | fmk | 192 | int, |
| 1321 | fmk | 193 | TCL_Char **, |
| 860 | fmk | 194 | Domain*, |
| 195 | TclModelBuilder *, |
||
| 196 | int); |
||
| 162 | jeremic | 197 | |
| 1605 | jeremic | 198 | //Boris Jeremic & Guanzhou Jie 10/30/2003 |
| 199 | extern int TclModelBuilder_addTwentySevenNodeBrick(ClientData, |
||
| 200 | Tcl_Interp *, |
||
| 201 | int, |
||
| 202 | TCL_Char **, |
||
| 203 | Domain*, |
||
| 204 | TclModelBuilder *, |
||
| 205 | int); |
||
| 206 | |||
| 1622 | jeremic | 207 | |
| 3248 | fmk | 208 | // Andreas Schellenberg |
| 209 | extern int |
||
| 210 | TclModelBuilder_addGenericClient(ClientData , Tcl_Interp *, int, TCL_Char **, |
||
| 211 | Domain*, TclModelBuilder *, int argStart); |
||
| 1622 | jeremic | 212 | |
| 3248 | fmk | 213 | extern int |
| 214 | TclModelBuilder_addGenericCopy(ClientData , Tcl_Interp *, int, TCL_Char **, |
||
| 215 | Domain*, TclModelBuilder *, int argStart); |
||
| 216 | |||
| 217 | |||
| 1119 | fmk | 218 | //Rohit Kraul |
| 219 | extern int |
||
| 1321 | fmk | 220 | TclModelBuilder_addElastic2dGNL(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 221 | Domain *,TclModelBuilder *); |
||
| 1119 | fmk | 222 | extern int |
| 1321 | fmk | 223 | TclModelBuilder_addElement2dYS(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 224 | Domain *,TclModelBuilder *); |
||
| 771 | jeremic | 225 | |
| 1517 | fmk | 226 | // Zhaohui Yang |
| 1622 | jeremic | 227 | extern int |
| 1535 | mhscott | 228 | TclModelBuilder_addFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 1517 | fmk | 229 | Domain*, TclModelBuilder *); |
| 1119 | fmk | 230 | |
| 1849 | fmk | 231 | // Zhaohui Yang |
| 232 | extern int |
||
| 233 | TclModelBuilder_addBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 234 | Domain*, TclModelBuilder *); |
||
| 235 | |||
| 236 | // Zhaohui Yang |
||
| 237 | extern int |
||
| 238 | TclModelBuilder_addNineFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 239 | Domain*, TclModelBuilder *); |
||
| 240 | // Jinchi Lu |
||
| 241 | extern int |
||
| 242 | TclModelBuilder_addTwentyEightNodeBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 243 | Domain*, TclModelBuilder *); |
||
| 244 | // Jinchi Lu |
||
| 245 | extern int |
||
| 246 | TclModelBuilder_addTwentyNodeBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 247 | Domain*, TclModelBuilder *); |
||
| 248 | |||
| 1622 | jeremic | 249 | // Boris Jeremic and Zhao Cheng |
| 250 | extern int |
||
| 251 | TclModelBuilder_addTLFD20nBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 252 | Domain*, TclModelBuilder *, int); |
||
| 1517 | fmk | 253 | |
| 2486 | fmk | 254 | // Boris Jeremic and Zhao Cheng |
| 255 | extern int |
||
| 256 | TclModelBuilder_addTLFD8nBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 257 | Domain*, TclModelBuilder *, int); |
||
| 258 | |||
| 259 | |||
| 260 | // Boris Jeremic and Zhao Cheng |
||
| 261 | extern int |
||
| 262 | TclModelBuilder_addEightNode_LDBrick_u_p(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 263 | Domain*, TclModelBuilder *, int); |
||
| 264 | |||
| 265 | // Boris Jeremic and Zhao Cheng |
||
| 266 | extern int |
||
| 267 | TclModelBuilder_addEightNode_Brick_u_p(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 268 | Domain*, TclModelBuilder *, int); |
||
| 269 | |||
| 2 | fmk | 270 | int |
| 271 | TclModelBuilderElementCommand(ClientData clientData, Tcl_Interp *interp, |
||
| 1321 | fmk | 272 | int argc, TCL_Char **argv, |
| 2 | fmk | 273 | Domain *theTclDomain, TclModelBuilder *theTclBuilder) |
| 274 | { |
||
| 275 | // ensure the destructor has not been called - |
||
| 276 | if (theTclBuilder == 0) { |
||
| 1271 | fmk | 277 | opserr << "WARNING builder has been destroyed\n"; |
| 2 | fmk | 278 | return TCL_ERROR; |
| 279 | } |
||
| 280 | |||
| 281 | // check at least two arguments so don't segemnt fault on strcmp |
||
| 282 | if (argc < 2) { |
||
| 1271 | fmk | 283 | opserr << "WARNING need to specify an element type\n"; |
| 1399 | fmk | 284 | opserr << "Want: element eleType <specific element args> .. see manual for valid eleTypes & arguments\n"; |
| 2 | fmk | 285 | return TCL_ERROR; |
| 286 | } |
||
| 287 | |||
| 288 | if (strcmp(argv[1],"fTruss") == 0) { |
||
| 289 | int eleArgStart = 1; |
||
| 290 | int result = TclModelBuilder_addFeapTruss(clientData, interp, argc, argv, |
||
| 291 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 292 | return result; |
||
| 360 | mhscott | 293 | } else if (strcmp(argv[1],"truss") == 0 || strcmp(argv[1],"corotTruss") == 0) { |
| 2 | fmk | 294 | int eleArgStart = 1; |
| 295 | int result = TclModelBuilder_addTruss(clientData, interp, argc, argv, |
||
| 1399 | fmk | 296 | theTclDomain, theTclBuilder, eleArgStart); |
| 2 | fmk | 297 | return result; |
| 317 | fmk | 298 | } else if (strcmp(argv[1],"elasticBeamColumn") == 0) { |
| 2 | fmk | 299 | int eleArgStart = 1; |
| 300 | int result = TclModelBuilder_addElasticBeam(clientData, interp, argc, argv, |
||
| 1399 | fmk | 301 | theTclDomain, theTclBuilder, eleArgStart); |
| 2 | fmk | 302 | return result; |
| 3092 | mhscott | 303 | } |
| 304 | /* |
||
| 305 | else if (strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
||
| 1422 | mhscott | 306 | int result = TclModelBuilder_addNLBeamColumn(clientData, interp, argc, argv, |
| 307 | theTclDomain, theTclBuilder); |
||
| 2 | fmk | 308 | return result; |
| 317 | fmk | 309 | } else if (strcmp(argv[1],"dispBeamColumn") == 0) { |
| 1399 | fmk | 310 | int result = TclModelBuilder_addDispBeamColumn(clientData, interp, argc, argv, |
| 311 | theTclDomain, theTclBuilder); |
||
| 317 | fmk | 312 | return result; |
| 2995 | fmk | 313 | |
| 3092 | mhscott | 314 | } |
| 315 | */ |
||
| 316 | else if (strcmp(argv[1],"dispBeamColumnInt") == 0) { |
||
| 2995 | fmk | 317 | int result = TclModelBuilder_addDispBeamColumnInt(clientData, interp, argc, argv, |
| 318 | theTclDomain, theTclBuilder); |
||
| 319 | return result; |
||
| 320 | |||
| 3092 | mhscott | 321 | } else if (strcmp(argv[1],"forceBeamColumn") == 0 || strcmp(argv[1],"dispBeamColumn") == 0 || strcmp(argv[1],"elasticForceBeamColumn") == 0 || strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
| 1399 | fmk | 322 | int result = TclModelBuilder_addForceBeamColumn(clientData, interp, argc, argv, |
| 323 | theTclDomain, theTclBuilder); |
||
| 1225 | mhscott | 324 | return result; |
| 2434 | mhscott | 325 | } else if (strstr(argv[1],"beamWithHinges") != 0) { |
| 2 | fmk | 326 | int result = TclModelBuilder_addBeamWithHinges(clientData, interp, argc, argv, |
| 327 | theTclDomain, theTclBuilder); |
||
| 328 | return result; |
||
| 1509 | fmk | 329 | } else if ((strcmp(argv[1],"quad") == 0) || (strcmp(argv[1],"stdQuad") == 0)) { |
| 1399 | fmk | 330 | int result = TclModelBuilder_addFourNodeQuad(clientData, interp, argc, argv, |
| 331 | theTclDomain, theTclBuilder); |
||
| 2 | fmk | 332 | return result; |
| 317 | fmk | 333 | } else if (strcmp(argv[1],"enhancedQuad") == 0) { |
| 334 | int result = TclModelBuilder_addEnhancedQuad(clientData, interp, argc, argv, |
||
| 335 | theTclDomain, theTclBuilder); |
||
| 336 | return result; |
||
| 337 | } else if ((strcmp(argv[1],"bbarQuad") == 0) || (strcmp(argv[1],"mixedQuad") == 0)) { |
||
| 338 | int result = TclModelBuilder_addConstantPressureVolumeQuad(clientData, interp, |
||
| 339 | argc, argv, |
||
| 340 | theTclDomain, |
||
| 341 | theTclBuilder); |
||
| 342 | return result; |
||
| 576 | fmk | 343 | } else if ((strcmp(argv[1],"nineNodeMixedQuad") == 0) |
| 344 | || (strcmp(argv[1],"nineNodeQuad") == 0)) { |
||
| 345 | int result = TclModelBuilder_addNineNodeMixedQuad(clientData, interp, |
||
| 346 | argc, argv, |
||
| 347 | theTclDomain, |
||
| 348 | theTclBuilder); |
||
| 349 | return result; |
||
| 1517 | fmk | 350 | } else if (strcmp(argv[1],"quadUP") == 0) { |
| 351 | int result = TclModelBuilder_addFourNodeQuadUP(clientData, interp, argc, argv, |
||
| 352 | theTclDomain, theTclBuilder); |
||
| 353 | return result; |
||
| 1849 | fmk | 354 | } else if (strcmp(argv[1],"brickUP") == 0) { |
| 355 | int result = TclModelBuilder_addBrickUP(clientData, interp, argc, argv, |
||
| 356 | theTclDomain, theTclBuilder); |
||
| 357 | return result; |
||
| 358 | } else if (strcmp(argv[1],"9_4_QuadUP") == 0) { |
||
| 359 | int result = TclModelBuilder_addNineFourNodeQuadUP(clientData, interp, argc, argv, |
||
| 360 | theTclDomain, theTclBuilder); |
||
| 361 | return result; |
||
| 362 | } else if (strcmp(argv[1],"20_8_BrickUP") == 0) { |
||
| 363 | int result = TclModelBuilder_addTwentyEightNodeBrickUP(clientData, interp, argc, argv, |
||
| 364 | theTclDomain, theTclBuilder); |
||
| 365 | return result; |
||
| 366 | } else if (strcmp(argv[1],"20NodeBrick") == 0) { |
||
| 367 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, interp, argc, argv, |
||
| 368 | theTclDomain, theTclBuilder); |
||
| 369 | return result; |
||
| 3248 | fmk | 370 | |
| 371 | } else if (strcmp(argv[1],"genericClient") == 0) { |
||
| 372 | int eleArgStart = 1; |
||
| 373 | int result = TclModelBuilder_addGenericClient(clientData, interp, argc, argv, |
||
| 374 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 375 | return result; |
||
| 376 | |||
| 377 | } else if (strcmp(argv[1],"genericCopy") == 0) { |
||
| 378 | int eleArgStart = 1; |
||
| 379 | int result = TclModelBuilder_addGenericCopy(clientData, interp, argc, argv, |
||
| 380 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 381 | return result; |
||
| 382 | |||
| 1271 | fmk | 383 | } else if ((strcmp(argv[1],"shell") == 0) || (strcmp(argv[1],"shellMITC4") == 0) || |
| 384 | (strcmp(argv[1],"Shell") == 0) || (strcmp(argv[1],"ShellMITC4") == 0)) { |
||
| 385 | |||
| 386 | |||
| 317 | fmk | 387 | int eleArgStart = 1; |
| 388 | int result = TclModelBuilder_addShellMITC4(clientData, interp, |
||
| 389 | argc, argv, |
||
| 390 | theTclDomain, |
||
| 391 | theTclBuilder, |
||
| 392 | eleArgStart); |
||
| 393 | return result; |
||
| 1622 | jeremic | 394 | } |
| 860 | fmk | 395 | |
| 3248 | fmk | 396 | // Andreas Schellenberg |
| 397 | else if (strcmp(argv[1],"genericClient") == 0) { |
||
| 398 | int eleArgStart = 1; |
||
| 399 | int result = TclModelBuilder_addGenericClient(clientData, interp, argc, argv, |
||
| 400 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 401 | return result; |
||
| 402 | } |
||
| 403 | |||
| 404 | else if (strcmp(argv[1],"genericCopy") == 0) { |
||
| 405 | int eleArgStart = 1; |
||
| 406 | int result = TclModelBuilder_addGenericCopy(clientData, interp, argc, argv, |
||
| 407 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 408 | return result; |
||
| 409 | } |
||
| 410 | |||
| 860 | fmk | 411 | //Boris Jeremic & Zhaohui |
| 412 | else if (strcmp(argv[1],"Brick8N") == 0) { |
||
| 413 | |||
| 414 | int eleArgStart = 1; |
||
| 1622 | jeremic | 415 | int result = TclModelBuilder_addEightNodeBrick(clientData, |
| 416 | interp, |
||
| 417 | argc, |
||
| 860 | fmk | 418 | argv, |
| 1622 | jeremic | 419 | theTclDomain, |
| 420 | theTclBuilder, |
||
| 860 | fmk | 421 | eleArgStart); |
| 422 | return result; |
||
| 1622 | jeremic | 423 | } |
| 860 | fmk | 424 | |
| 425 | //Boris Jeremic & Zhaohui |
||
| 426 | else if (strcmp(argv[1],"Brick20N") == 0) { |
||
| 427 | int eleArgStart = 1; |
||
| 428 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, |
||
| 429 | interp, |
||
| 430 | argc, |
||
| 431 | argv, |
||
| 432 | theTclDomain, |
||
| 433 | theTclBuilder, |
||
| 434 | eleArgStart); |
||
| 435 | return result; |
||
| 771 | jeremic | 436 | } |
| 860 | fmk | 437 | |
| 1605 | jeremic | 438 | //Boris Jeremic & Guanzhou Jie |
| 439 | else if (strcmp(argv[1],"Brick27N") == 0) |
||
| 440 | { |
||
| 441 | int eleArgStart = 1; |
||
| 442 | int result = TclModelBuilder_addTwentySevenNodeBrick(clientData, |
||
| 443 | interp, |
||
| 444 | argc, |
||
| 445 | argv, |
||
| 446 | theTclDomain, |
||
| 447 | theTclBuilder, |
||
| 448 | eleArgStart); |
||
| 449 | return result; |
||
| 450 | } |
||
| 451 | |||
| 452 | |||
| 1622 | jeremic | 453 | // Boris jeremic & Zhao Cheng |
| 454 | else if (strcmp(argv[1],"TLFD20nBrick") == 0) { |
||
| 455 | int eleArgStart = 1; |
||
| 456 | int result = TclModelBuilder_addTLFD20nBrick(clientData, |
||
| 457 | interp, |
||
| 458 | argc, |
||
| 459 | argv, |
||
| 460 | theTclDomain, |
||
| 461 | theTclBuilder, |
||
| 462 | eleArgStart); |
||
| 463 | return result; |
||
| 464 | } |
||
| 465 | |||
| 2486 | fmk | 466 | // Boris jeremic & Zhao Cheng |
| 467 | else if (strcmp(argv[1],"TLFD8nBrick") == 0) { |
||
| 468 | int eleArgStart = 1; |
||
| 469 | int result = TclModelBuilder_addTLFD8nBrick(clientData, |
||
| 470 | interp, |
||
| 471 | argc, |
||
| 472 | argv, |
||
| 473 | theTclDomain, |
||
| 474 | theTclBuilder, |
||
| 475 | eleArgStart); |
||
| 476 | return result; |
||
| 477 | } |
||
| 478 | |||
| 860 | fmk | 479 | //Boris Jeremic & Zhaohui |
| 480 | else if (strcmp(argv[1],"Brick8N_u_p_U") == 0) { |
||
| 481 | int eleArgStart = 1; |
||
| 482 | int result = TclModelBuilder_addEightNodeBrick_u_p_U(clientData, |
||
| 483 | interp, |
||
| 484 | argc, |
||
| 485 | argv, |
||
| 486 | theTclDomain, |
||
| 487 | theTclBuilder, |
||
| 488 | eleArgStart); |
||
| 489 | return result; |
||
| 490 | } |
||
| 491 | //Boris Jeremic & Zhaohui |
||
| 492 | else if (strcmp(argv[1],"Brick20N_u_p_U") == 0) { |
||
| 493 | int eleArgStart = 1; |
||
| 494 | int result = TclModelBuilder_addTwentyNodeBrick_u_p_U(clientData, |
||
| 495 | interp, |
||
| 496 | argc, |
||
| 497 | argv, |
||
| 498 | theTclDomain, |
||
| 499 | theTclBuilder, |
||
| 500 | eleArgStart); |
||
| 501 | return result; |
||
| 502 | } |
||
| 2486 | fmk | 503 | |
| 504 | // Boris Jeremic & Zhao Cheng |
||
| 505 | else if (strcmp(argv[1],"EightNode_LDBrick_u_p") == 0) { |
||
| 506 | int eleArgStart = 1; |
||
| 507 | int result = TclModelBuilder_addEightNode_LDBrick_u_p(clientData, |
||
| 508 | interp, |
||
| 509 | argc, |
||
| 510 | argv, |
||
| 511 | theTclDomain, |
||
| 512 | theTclBuilder, |
||
| 513 | eleArgStart); |
||
| 514 | return result; |
||
| 515 | } |
||
| 516 | |||
| 517 | // Boris Jeremic & Zhao Cheng |
||
| 518 | else if (strcmp(argv[1],"EightNode_Brick_u_p") == 0) { |
||
| 519 | int eleArgStart = 1; |
||
| 520 | int result = TclModelBuilder_addEightNode_Brick_u_p(clientData, |
||
| 521 | interp, |
||
| 522 | argc, |
||
| 523 | argv, |
||
| 524 | theTclDomain, |
||
| 525 | theTclBuilder, |
||
| 526 | eleArgStart); |
||
| 527 | return result; |
||
| 528 | } |
||
| 529 | |||
| 530 | |||
| 860 | fmk | 531 | else if (strcmp(argv[1],"stdBrick") == 0) { |
| 532 | int eleArgStart = 1; |
||
| 533 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 2266 | fmk | 534 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 535 | return result; |
| 317 | fmk | 536 | } else if (strcmp(argv[1],"bbarBrick") == 0) { |
| 860 | fmk | 537 | int eleArgStart = 1; |
| 2266 | fmk | 538 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
| 539 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 860 | fmk | 540 | return result; |
| 2266 | fmk | 541 | } else if (strcmp(argv[1],"flBrick") == 0) { |
| 542 | int eleArgStart = 1; |
||
| 543 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 544 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 545 | return result; |
||
| 2 | fmk | 546 | } else if (strcmp(argv[1],"zeroLength") == 0) { |
| 547 | int result = TclModelBuilder_addZeroLength(clientData, interp, argc, argv, |
||
| 548 | theTclDomain, theTclBuilder); |
||
| 549 | return result; |
||
| 36 | mhscott | 550 | } else if (strcmp(argv[1],"zeroLengthSection") == 0) { |
| 551 | int result = TclModelBuilder_addZeroLengthSection(clientData, interp, argc, argv, |
||
| 552 | theTclDomain, theTclBuilder); |
||
| 553 | return result; |
||
| 3130 | fmk | 554 | |
| 555 | } else if (strcmp(argv[1],"zeroLengthContact2D") == 0) { |
||
| 556 | int result = TclModelBuilder_addZeroLengthContact2D(clientData, interp, argc, argv, |
||
| 557 | theTclDomain, theTclBuilder); |
||
| 558 | return result; |
||
| 559 | |||
| 560 | } else if (strcmp(argv[1],"zeroLengthContact3D") == 0) { |
||
| 561 | int result = TclModelBuilder_addZeroLengthContact3D(clientData, interp, argc, argv, |
||
| 562 | theTclDomain, theTclBuilder); |
||
| 563 | return result; |
||
| 564 | |||
| 1074 | mhscott | 565 | } else if (strcmp(argv[1],"zeroLengthND") == 0) { |
| 3549 | fmk | 566 | int result = TclModelBuilder_addZeroLengthND(clientData, interp, argc, argv, |
| 567 | theTclDomain, theTclBuilder); |
||
| 568 | return result; |
||
| 1068 | fmk | 569 | } else if ((strcmp(argv[1],"Joint2D") == 0) || |
| 1633 | fmk | 570 | (strcmp(argv[1],"Joint2d") == 0)) { |
| 1068 | fmk | 571 | int result = TclModelBuilder_addJoint2D(clientData, interp, argc, argv, |
| 1633 | fmk | 572 | theTclDomain, theTclBuilder); |
| 1068 | fmk | 573 | return result; |
| 1633 | fmk | 574 | } else if ((strcmp(argv[1],"Joint3D") == 0) || |
| 575 | (strcmp(argv[1],"Joint3d") == 0)) { |
||
| 576 | int result = TclModelBuilder_addJoint3D(clientData, interp, argc, argv, |
||
| 577 | theTclDomain, theTclBuilder); |
||
| 578 | return result; |
||
| 1119 | fmk | 579 | } else if ((strcmp(argv[1], "inelastic2dYS01")== 0) || |
| 580 | (strcmp(argv[1], "inelastic2dYS02")== 0) || |
||
| 581 | (strcmp(argv[1], "inelastic2dYS03")== 0) || |
||
| 582 | (strcmp(argv[1], "inelastic2dYS04")== 0) || |
||
| 583 | (strcmp(argv[1], "inelastic2dYS05")== 0)) { |
||
| 584 | int result = TclModelBuilder_addElement2dYS (clientData, interp, |
||
| 585 | argc, argv, |
||
| 586 | theTclDomain, theTclBuilder); |
||
| 587 | return result; |
||
| 588 | } else if ((strcmp(argv[1],"element2dGNL") == 0) || |
||
| 589 | (strcmp(argv[1],"elastic2dGNL") == 0)) { |
||
| 590 | int result = TclModelBuilder_addElastic2dGNL(clientData, interp, argc, argv, |
||
| 591 | theTclDomain, theTclBuilder); |
||
| 592 | return result; |
||
| 1481 | mhscott | 593 | } |
| 2046 | fmk | 594 | |
| 1481 | mhscott | 595 | else if (strcmp(argv[1],"beamColumnJoint") == 0) { |
| 596 | int eleArgStart = 1; |
||
| 597 | int result = TclModelBuilder_addBeamColumnJoint(clientData, interp, |
||
| 598 | argc, argv, theTclDomain, |
||
| 599 | theTclBuilder, eleArgStart); |
||
| 600 | return result; |
||
| 601 | } |
||
| 2046 | fmk | 602 | |
| 1481 | mhscott | 603 | else { |
| 2046 | fmk | 604 | |
| 605 | // |
||
| 606 | // maybe element in a package |
||
| 607 | // |
||
| 608 | |||
| 609 | // try existing loaded packages |
||
| 610 | |||
| 611 | ElementPackageCommand *eleCommands = theElementPackageCommands; |
||
| 612 | bool found = false; |
||
| 613 | while (eleCommands != NULL && found == false) { |
||
| 614 | if (strcmp(argv[1], eleCommands->funcName) == 0) { |
||
| 615 | int result = (*(eleCommands->funcPtr))(clientData, interp, argc, argv, theTclDomain, theTclBuilder); |
||
| 616 | return result; |
||
| 617 | } else |
||
| 618 | eleCommands = eleCommands->next; |
||
| 619 | } |
||
| 620 | |||
| 621 | // load new package |
||
| 622 | void *libHandle; |
||
| 623 | int (*funcPtr)(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 624 | TCL_Char **argv, Domain*, TclModelBuilder *); |
||
| 625 | int eleNameLength = strlen(argv[1]); |
||
| 626 | char *tclFuncName = new char[eleNameLength+12]; |
||
| 627 | strcpy(tclFuncName, "TclCommand_"); |
||
| 628 | strcpy(&tclFuncName[11], argv[1]); |
||
| 629 | |||
| 630 | int res = getLibraryFunction(argv[1], tclFuncName, &libHandle, (void **)&funcPtr); |
||
| 631 | |||
| 2087 | fmk | 632 | delete [] tclFuncName; |
| 2046 | fmk | 633 | |
| 2087 | fmk | 634 | if (res == 0) { |
| 2046 | fmk | 635 | |
| 2087 | fmk | 636 | char *eleName = new char[eleNameLength+1]; |
| 637 | strcpy(eleName, argv[1]); |
||
| 638 | ElementPackageCommand *theEleCommand = new ElementPackageCommand; |
||
| 639 | theEleCommand->funcPtr = funcPtr; |
||
| 640 | theEleCommand->funcName = eleName; |
||
| 641 | theEleCommand->next = theElementPackageCommands; |
||
| 642 | theElementPackageCommands = theEleCommand; |
||
| 643 | |||
| 644 | int result = (*funcPtr)(clientData, interp, |
||
| 645 | argc, argv, |
||
| 646 | theTclDomain, theTclBuilder); |
||
| 647 | return result; |
||
| 648 | } |
||
| 649 | |||
| 1119 | fmk | 650 | // element type not recognized |
| 2046 | fmk | 651 | opserr << "WARNING unknown element type: " << argv[1] << " :check the manual\n"; |
| 2 | fmk | 652 | return TCL_ERROR; |
| 2046 | fmk | 653 | } |
| 2 | fmk | 654 | } |