Rev 2995 | Rev 3130 | 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 | |||
| 3092 | mhscott | 21 | // $Revision: 1.43 $ |
| 22 | // $Date: 2007-10-13 20:43:57 $ |
||
| 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 | |||
| 36 | mhscott | 121 | // MHS |
| 122 | extern int |
||
| 1321 | fmk | 123 | TclModelBuilder_addZeroLengthSection(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 124 | Domain*, TclModelBuilder *); |
||
| 36 | mhscott | 125 | |
| 126 | // MHS |
||
| 1068 | fmk | 127 | extern int |
| 1321 | fmk | 128 | TclModelBuilder_addZeroLengthND(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 129 | Domain*, TclModelBuilder *); |
||
| 36 | mhscott | 130 | |
| 131 | |||
| 2 | fmk | 132 | // MHS |
| 133 | extern int |
||
| 1321 | fmk | 134 | TclModelBuilder_addBeamWithHinges(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 2 | fmk | 135 | Domain*, TclModelBuilder *); |
| 136 | extern int |
||
| 1321 | fmk | 137 | TclModelBuilder_addFourNodeQuad(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 2 | fmk | 138 | Domain*, TclModelBuilder *); |
| 3092 | mhscott | 139 | |
| 317 | fmk | 140 | extern int |
| 2995 | fmk | 141 | TclModelBuilder_addDispBeamColumnInt(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 142 | Domain*, TclModelBuilder *); |
||
| 143 | |||
| 144 | extern int |
||
| 1321 | fmk | 145 | TclModelBuilder_addForceBeamColumn(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 1225 | mhscott | 146 | Domain*, TclModelBuilder *); |
| 317 | fmk | 147 | |
| 1481 | mhscott | 148 | // NM |
| 149 | extern int |
||
| 150 | TclModelBuilder_addBeamColumnJoint(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 151 | Domain*, TclModelBuilder *, int); |
||
| 259 | fmk | 152 | |
| 567 | jeremic | 153 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 154 | extern int TclModelBuilder_addEightNodeBrick(ClientData, |
| 155 | Tcl_Interp *, |
||
| 860 | fmk | 156 | int, |
| 1321 | fmk | 157 | TCL_Char **, |
| 860 | fmk | 158 | Domain*, |
| 159 | TclModelBuilder *, |
||
| 160 | int); |
||
| 567 | jeremic | 161 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 162 | extern int TclModelBuilder_addTwentyNodeBrick(ClientData, |
| 163 | Tcl_Interp *, |
||
| 860 | fmk | 164 | int, |
| 1321 | fmk | 165 | TCL_Char **, |
| 860 | fmk | 166 | Domain*, |
| 167 | TclModelBuilder *, |
||
| 168 | int); |
||
| 162 | jeremic | 169 | |
| 771 | jeremic | 170 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 171 | extern int TclModelBuilder_addEightNodeBrick_u_p_U(ClientData, |
||
| 172 | Tcl_Interp *, |
||
| 860 | fmk | 173 | int, |
| 1321 | fmk | 174 | TCL_Char **, |
| 860 | fmk | 175 | Domain*, |
| 176 | TclModelBuilder *, |
||
| 177 | int); |
||
| 771 | jeremic | 178 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 179 | extern int TclModelBuilder_addTwentyNodeBrick_u_p_U(ClientData, |
||
| 180 | Tcl_Interp *, |
||
| 860 | fmk | 181 | int, |
| 1321 | fmk | 182 | TCL_Char **, |
| 860 | fmk | 183 | Domain*, |
| 184 | TclModelBuilder *, |
||
| 185 | int); |
||
| 162 | jeremic | 186 | |
| 1605 | jeremic | 187 | //Boris Jeremic & Guanzhou Jie 10/30/2003 |
| 188 | extern int TclModelBuilder_addTwentySevenNodeBrick(ClientData, |
||
| 189 | Tcl_Interp *, |
||
| 190 | int, |
||
| 191 | TCL_Char **, |
||
| 192 | Domain*, |
||
| 193 | TclModelBuilder *, |
||
| 194 | int); |
||
| 195 | |||
| 1622 | jeremic | 196 | |
| 197 | |||
| 1119 | fmk | 198 | //Rohit Kraul |
| 199 | extern int |
||
| 1321 | fmk | 200 | TclModelBuilder_addElastic2dGNL(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 201 | Domain *,TclModelBuilder *); |
||
| 1119 | fmk | 202 | extern int |
| 1321 | fmk | 203 | TclModelBuilder_addElement2dYS(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 204 | Domain *,TclModelBuilder *); |
||
| 771 | jeremic | 205 | |
| 1517 | fmk | 206 | // Zhaohui Yang |
| 1622 | jeremic | 207 | extern int |
| 1535 | mhscott | 208 | TclModelBuilder_addFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
| 1517 | fmk | 209 | Domain*, TclModelBuilder *); |
| 1119 | fmk | 210 | |
| 1849 | fmk | 211 | // Zhaohui Yang |
| 212 | extern int |
||
| 213 | TclModelBuilder_addBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 214 | Domain*, TclModelBuilder *); |
||
| 215 | |||
| 216 | // Zhaohui Yang |
||
| 217 | extern int |
||
| 218 | TclModelBuilder_addNineFourNodeQuadUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 219 | Domain*, TclModelBuilder *); |
||
| 220 | // Jinchi Lu |
||
| 221 | extern int |
||
| 222 | TclModelBuilder_addTwentyEightNodeBrickUP(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 223 | Domain*, TclModelBuilder *); |
||
| 224 | // Jinchi Lu |
||
| 225 | extern int |
||
| 226 | TclModelBuilder_addTwentyNodeBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 227 | Domain*, TclModelBuilder *); |
||
| 228 | |||
| 1622 | jeremic | 229 | // Boris Jeremic and Zhao Cheng |
| 230 | extern int |
||
| 231 | TclModelBuilder_addTLFD20nBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 232 | Domain*, TclModelBuilder *, int); |
||
| 1517 | fmk | 233 | |
| 2486 | fmk | 234 | // Boris Jeremic and Zhao Cheng |
| 235 | extern int |
||
| 236 | TclModelBuilder_addTLFD8nBrick(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 237 | Domain*, TclModelBuilder *, int); |
||
| 238 | |||
| 239 | |||
| 240 | // Boris Jeremic and Zhao Cheng |
||
| 241 | extern int |
||
| 242 | TclModelBuilder_addEightNode_LDBrick_u_p(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 243 | Domain*, TclModelBuilder *, int); |
||
| 244 | |||
| 245 | // Boris Jeremic and Zhao Cheng |
||
| 246 | extern int |
||
| 247 | TclModelBuilder_addEightNode_Brick_u_p(ClientData, Tcl_Interp *, int, TCL_Char **, |
||
| 248 | Domain*, TclModelBuilder *, int); |
||
| 249 | |||
| 2 | fmk | 250 | int |
| 251 | TclModelBuilderElementCommand(ClientData clientData, Tcl_Interp *interp, |
||
| 1321 | fmk | 252 | int argc, TCL_Char **argv, |
| 2 | fmk | 253 | Domain *theTclDomain, TclModelBuilder *theTclBuilder) |
| 254 | { |
||
| 255 | // ensure the destructor has not been called - |
||
| 256 | if (theTclBuilder == 0) { |
||
| 1271 | fmk | 257 | opserr << "WARNING builder has been destroyed\n"; |
| 2 | fmk | 258 | return TCL_ERROR; |
| 259 | } |
||
| 260 | |||
| 261 | // check at least two arguments so don't segemnt fault on strcmp |
||
| 262 | if (argc < 2) { |
||
| 1271 | fmk | 263 | opserr << "WARNING need to specify an element type\n"; |
| 1399 | fmk | 264 | opserr << "Want: element eleType <specific element args> .. see manual for valid eleTypes & arguments\n"; |
| 2 | fmk | 265 | return TCL_ERROR; |
| 266 | } |
||
| 267 | |||
| 268 | if (strcmp(argv[1],"fTruss") == 0) { |
||
| 269 | int eleArgStart = 1; |
||
| 270 | int result = TclModelBuilder_addFeapTruss(clientData, interp, argc, argv, |
||
| 271 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 272 | return result; |
||
| 360 | mhscott | 273 | } else if (strcmp(argv[1],"truss") == 0 || strcmp(argv[1],"corotTruss") == 0) { |
| 2 | fmk | 274 | int eleArgStart = 1; |
| 275 | int result = TclModelBuilder_addTruss(clientData, interp, argc, argv, |
||
| 1399 | fmk | 276 | theTclDomain, theTclBuilder, eleArgStart); |
| 2 | fmk | 277 | return result; |
| 317 | fmk | 278 | } else if (strcmp(argv[1],"elasticBeamColumn") == 0) { |
| 2 | fmk | 279 | int eleArgStart = 1; |
| 280 | int result = TclModelBuilder_addElasticBeam(clientData, interp, argc, argv, |
||
| 1399 | fmk | 281 | theTclDomain, theTclBuilder, eleArgStart); |
| 2 | fmk | 282 | return result; |
| 3092 | mhscott | 283 | } |
| 284 | /* |
||
| 285 | else if (strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
||
| 1422 | mhscott | 286 | int result = TclModelBuilder_addNLBeamColumn(clientData, interp, argc, argv, |
| 287 | theTclDomain, theTclBuilder); |
||
| 2 | fmk | 288 | return result; |
| 317 | fmk | 289 | } else if (strcmp(argv[1],"dispBeamColumn") == 0) { |
| 1399 | fmk | 290 | int result = TclModelBuilder_addDispBeamColumn(clientData, interp, argc, argv, |
| 291 | theTclDomain, theTclBuilder); |
||
| 317 | fmk | 292 | return result; |
| 2995 | fmk | 293 | |
| 3092 | mhscott | 294 | } |
| 295 | */ |
||
| 296 | else if (strcmp(argv[1],"dispBeamColumnInt") == 0) { |
||
| 2995 | fmk | 297 | int result = TclModelBuilder_addDispBeamColumnInt(clientData, interp, argc, argv, |
| 298 | theTclDomain, theTclBuilder); |
||
| 299 | return result; |
||
| 300 | |||
| 3092 | mhscott | 301 | } else if (strcmp(argv[1],"forceBeamColumn") == 0 || strcmp(argv[1],"dispBeamColumn") == 0 || strcmp(argv[1],"elasticForceBeamColumn") == 0 || strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
| 1399 | fmk | 302 | int result = TclModelBuilder_addForceBeamColumn(clientData, interp, argc, argv, |
| 303 | theTclDomain, theTclBuilder); |
||
| 1225 | mhscott | 304 | return result; |
| 2434 | mhscott | 305 | } else if (strstr(argv[1],"beamWithHinges") != 0) { |
| 2 | fmk | 306 | int result = TclModelBuilder_addBeamWithHinges(clientData, interp, argc, argv, |
| 307 | theTclDomain, theTclBuilder); |
||
| 308 | return result; |
||
| 1509 | fmk | 309 | } else if ((strcmp(argv[1],"quad") == 0) || (strcmp(argv[1],"stdQuad") == 0)) { |
| 1399 | fmk | 310 | int result = TclModelBuilder_addFourNodeQuad(clientData, interp, argc, argv, |
| 311 | theTclDomain, theTclBuilder); |
||
| 2 | fmk | 312 | return result; |
| 317 | fmk | 313 | } else if (strcmp(argv[1],"enhancedQuad") == 0) { |
| 314 | int result = TclModelBuilder_addEnhancedQuad(clientData, interp, argc, argv, |
||
| 315 | theTclDomain, theTclBuilder); |
||
| 316 | return result; |
||
| 317 | } else if ((strcmp(argv[1],"bbarQuad") == 0) || (strcmp(argv[1],"mixedQuad") == 0)) { |
||
| 318 | int result = TclModelBuilder_addConstantPressureVolumeQuad(clientData, interp, |
||
| 319 | argc, argv, |
||
| 320 | theTclDomain, |
||
| 321 | theTclBuilder); |
||
| 322 | return result; |
||
| 576 | fmk | 323 | } else if ((strcmp(argv[1],"nineNodeMixedQuad") == 0) |
| 324 | || (strcmp(argv[1],"nineNodeQuad") == 0)) { |
||
| 325 | int result = TclModelBuilder_addNineNodeMixedQuad(clientData, interp, |
||
| 326 | argc, argv, |
||
| 327 | theTclDomain, |
||
| 328 | theTclBuilder); |
||
| 329 | return result; |
||
| 1517 | fmk | 330 | } else if (strcmp(argv[1],"quadUP") == 0) { |
| 331 | int result = TclModelBuilder_addFourNodeQuadUP(clientData, interp, argc, argv, |
||
| 332 | theTclDomain, theTclBuilder); |
||
| 333 | return result; |
||
| 1849 | fmk | 334 | } else if (strcmp(argv[1],"brickUP") == 0) { |
| 335 | int result = TclModelBuilder_addBrickUP(clientData, interp, argc, argv, |
||
| 336 | theTclDomain, theTclBuilder); |
||
| 337 | return result; |
||
| 338 | } else if (strcmp(argv[1],"9_4_QuadUP") == 0) { |
||
| 339 | int result = TclModelBuilder_addNineFourNodeQuadUP(clientData, interp, argc, argv, |
||
| 340 | theTclDomain, theTclBuilder); |
||
| 341 | return result; |
||
| 342 | } else if (strcmp(argv[1],"20_8_BrickUP") == 0) { |
||
| 343 | int result = TclModelBuilder_addTwentyEightNodeBrickUP(clientData, interp, argc, argv, |
||
| 344 | theTclDomain, theTclBuilder); |
||
| 345 | return result; |
||
| 346 | } else if (strcmp(argv[1],"20NodeBrick") == 0) { |
||
| 347 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, interp, argc, argv, |
||
| 348 | theTclDomain, theTclBuilder); |
||
| 349 | return result; |
||
| 1271 | fmk | 350 | } else if ((strcmp(argv[1],"shell") == 0) || (strcmp(argv[1],"shellMITC4") == 0) || |
| 351 | (strcmp(argv[1],"Shell") == 0) || (strcmp(argv[1],"ShellMITC4") == 0)) { |
||
| 352 | |||
| 353 | |||
| 317 | fmk | 354 | int eleArgStart = 1; |
| 355 | int result = TclModelBuilder_addShellMITC4(clientData, interp, |
||
| 356 | argc, argv, |
||
| 357 | theTclDomain, |
||
| 358 | theTclBuilder, |
||
| 359 | eleArgStart); |
||
| 360 | return result; |
||
| 1622 | jeremic | 361 | } |
| 860 | fmk | 362 | |
| 363 | //Boris Jeremic & Zhaohui |
||
| 364 | else if (strcmp(argv[1],"Brick8N") == 0) { |
||
| 365 | |||
| 366 | int eleArgStart = 1; |
||
| 1622 | jeremic | 367 | int result = TclModelBuilder_addEightNodeBrick(clientData, |
| 368 | interp, |
||
| 369 | argc, |
||
| 860 | fmk | 370 | argv, |
| 1622 | jeremic | 371 | theTclDomain, |
| 372 | theTclBuilder, |
||
| 860 | fmk | 373 | eleArgStart); |
| 374 | return result; |
||
| 1622 | jeremic | 375 | } |
| 860 | fmk | 376 | |
| 377 | //Boris Jeremic & Zhaohui |
||
| 378 | else if (strcmp(argv[1],"Brick20N") == 0) { |
||
| 379 | int eleArgStart = 1; |
||
| 380 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, |
||
| 381 | interp, |
||
| 382 | argc, |
||
| 383 | argv, |
||
| 384 | theTclDomain, |
||
| 385 | theTclBuilder, |
||
| 386 | eleArgStart); |
||
| 387 | return result; |
||
| 771 | jeremic | 388 | } |
| 860 | fmk | 389 | |
| 1605 | jeremic | 390 | //Boris Jeremic & Guanzhou Jie |
| 391 | else if (strcmp(argv[1],"Brick27N") == 0) |
||
| 392 | { |
||
| 393 | int eleArgStart = 1; |
||
| 394 | int result = TclModelBuilder_addTwentySevenNodeBrick(clientData, |
||
| 395 | interp, |
||
| 396 | argc, |
||
| 397 | argv, |
||
| 398 | theTclDomain, |
||
| 399 | theTclBuilder, |
||
| 400 | eleArgStart); |
||
| 401 | return result; |
||
| 402 | } |
||
| 403 | |||
| 404 | |||
| 1622 | jeremic | 405 | // Boris jeremic & Zhao Cheng |
| 406 | else if (strcmp(argv[1],"TLFD20nBrick") == 0) { |
||
| 407 | int eleArgStart = 1; |
||
| 408 | int result = TclModelBuilder_addTLFD20nBrick(clientData, |
||
| 409 | interp, |
||
| 410 | argc, |
||
| 411 | argv, |
||
| 412 | theTclDomain, |
||
| 413 | theTclBuilder, |
||
| 414 | eleArgStart); |
||
| 415 | return result; |
||
| 416 | } |
||
| 417 | |||
| 2486 | fmk | 418 | // Boris jeremic & Zhao Cheng |
| 419 | else if (strcmp(argv[1],"TLFD8nBrick") == 0) { |
||
| 420 | int eleArgStart = 1; |
||
| 421 | int result = TclModelBuilder_addTLFD8nBrick(clientData, |
||
| 422 | interp, |
||
| 423 | argc, |
||
| 424 | argv, |
||
| 425 | theTclDomain, |
||
| 426 | theTclBuilder, |
||
| 427 | eleArgStart); |
||
| 428 | return result; |
||
| 429 | } |
||
| 430 | |||
| 860 | fmk | 431 | //Boris Jeremic & Zhaohui |
| 432 | else if (strcmp(argv[1],"Brick8N_u_p_U") == 0) { |
||
| 433 | int eleArgStart = 1; |
||
| 434 | int result = TclModelBuilder_addEightNodeBrick_u_p_U(clientData, |
||
| 435 | interp, |
||
| 436 | argc, |
||
| 437 | argv, |
||
| 438 | theTclDomain, |
||
| 439 | theTclBuilder, |
||
| 440 | eleArgStart); |
||
| 441 | return result; |
||
| 442 | } |
||
| 443 | //Boris Jeremic & Zhaohui |
||
| 444 | else if (strcmp(argv[1],"Brick20N_u_p_U") == 0) { |
||
| 445 | int eleArgStart = 1; |
||
| 446 | int result = TclModelBuilder_addTwentyNodeBrick_u_p_U(clientData, |
||
| 447 | interp, |
||
| 448 | argc, |
||
| 449 | argv, |
||
| 450 | theTclDomain, |
||
| 451 | theTclBuilder, |
||
| 452 | eleArgStart); |
||
| 453 | return result; |
||
| 454 | } |
||
| 2486 | fmk | 455 | |
| 456 | // Boris Jeremic & Zhao Cheng |
||
| 457 | else if (strcmp(argv[1],"EightNode_LDBrick_u_p") == 0) { |
||
| 458 | int eleArgStart = 1; |
||
| 459 | int result = TclModelBuilder_addEightNode_LDBrick_u_p(clientData, |
||
| 460 | interp, |
||
| 461 | argc, |
||
| 462 | argv, |
||
| 463 | theTclDomain, |
||
| 464 | theTclBuilder, |
||
| 465 | eleArgStart); |
||
| 466 | return result; |
||
| 467 | } |
||
| 468 | |||
| 469 | // Boris Jeremic & Zhao Cheng |
||
| 470 | else if (strcmp(argv[1],"EightNode_Brick_u_p") == 0) { |
||
| 471 | int eleArgStart = 1; |
||
| 472 | int result = TclModelBuilder_addEightNode_Brick_u_p(clientData, |
||
| 473 | interp, |
||
| 474 | argc, |
||
| 475 | argv, |
||
| 476 | theTclDomain, |
||
| 477 | theTclBuilder, |
||
| 478 | eleArgStart); |
||
| 479 | return result; |
||
| 480 | } |
||
| 481 | |||
| 482 | |||
| 860 | fmk | 483 | else if (strcmp(argv[1],"stdBrick") == 0) { |
| 484 | int eleArgStart = 1; |
||
| 485 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 2266 | fmk | 486 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 487 | return result; |
| 317 | fmk | 488 | } else if (strcmp(argv[1],"bbarBrick") == 0) { |
| 860 | fmk | 489 | int eleArgStart = 1; |
| 2266 | fmk | 490 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
| 491 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 860 | fmk | 492 | return result; |
| 2266 | fmk | 493 | } else if (strcmp(argv[1],"flBrick") == 0) { |
| 494 | int eleArgStart = 1; |
||
| 495 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 496 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 497 | return result; |
||
| 2 | fmk | 498 | } else if (strcmp(argv[1],"zeroLength") == 0) { |
| 499 | int result = TclModelBuilder_addZeroLength(clientData, interp, argc, argv, |
||
| 500 | theTclDomain, theTclBuilder); |
||
| 501 | return result; |
||
| 36 | mhscott | 502 | } else if (strcmp(argv[1],"zeroLengthSection") == 0) { |
| 503 | int result = TclModelBuilder_addZeroLengthSection(clientData, interp, argc, argv, |
||
| 504 | theTclDomain, theTclBuilder); |
||
| 505 | return result; |
||
| 1074 | mhscott | 506 | } else if (strcmp(argv[1],"zeroLengthND") == 0) { |
| 1271 | fmk | 507 | opserr << "element zeroLengthND is no longer available, please use " |
| 508 | << "the zeroLengthSection element instead" << endln; |
||
| 1074 | mhscott | 509 | return TCL_ERROR; |
| 1068 | fmk | 510 | } else if ((strcmp(argv[1],"Joint2D") == 0) || |
| 1633 | fmk | 511 | (strcmp(argv[1],"Joint2d") == 0)) { |
| 1068 | fmk | 512 | int result = TclModelBuilder_addJoint2D(clientData, interp, argc, argv, |
| 1633 | fmk | 513 | theTclDomain, theTclBuilder); |
| 1068 | fmk | 514 | return result; |
| 1633 | fmk | 515 | } else if ((strcmp(argv[1],"Joint3D") == 0) || |
| 516 | (strcmp(argv[1],"Joint3d") == 0)) { |
||
| 517 | int result = TclModelBuilder_addJoint3D(clientData, interp, argc, argv, |
||
| 518 | theTclDomain, theTclBuilder); |
||
| 519 | return result; |
||
| 1119 | fmk | 520 | } else if ((strcmp(argv[1], "inelastic2dYS01")== 0) || |
| 521 | (strcmp(argv[1], "inelastic2dYS02")== 0) || |
||
| 522 | (strcmp(argv[1], "inelastic2dYS03")== 0) || |
||
| 523 | (strcmp(argv[1], "inelastic2dYS04")== 0) || |
||
| 524 | (strcmp(argv[1], "inelastic2dYS05")== 0)) { |
||
| 525 | int result = TclModelBuilder_addElement2dYS (clientData, interp, |
||
| 526 | argc, argv, |
||
| 527 | theTclDomain, theTclBuilder); |
||
| 528 | return result; |
||
| 529 | } else if ((strcmp(argv[1],"element2dGNL") == 0) || |
||
| 530 | (strcmp(argv[1],"elastic2dGNL") == 0)) { |
||
| 531 | int result = TclModelBuilder_addElastic2dGNL(clientData, interp, argc, argv, |
||
| 532 | theTclDomain, theTclBuilder); |
||
| 533 | return result; |
||
| 1481 | mhscott | 534 | } |
| 2046 | fmk | 535 | |
| 1481 | mhscott | 536 | else if (strcmp(argv[1],"beamColumnJoint") == 0) { |
| 537 | int eleArgStart = 1; |
||
| 538 | int result = TclModelBuilder_addBeamColumnJoint(clientData, interp, |
||
| 539 | argc, argv, theTclDomain, |
||
| 540 | theTclBuilder, eleArgStart); |
||
| 541 | return result; |
||
| 542 | } |
||
| 2046 | fmk | 543 | |
| 1481 | mhscott | 544 | else { |
| 2046 | fmk | 545 | |
| 546 | // |
||
| 547 | // maybe element in a package |
||
| 548 | // |
||
| 549 | |||
| 550 | // try existing loaded packages |
||
| 551 | |||
| 552 | ElementPackageCommand *eleCommands = theElementPackageCommands; |
||
| 553 | bool found = false; |
||
| 554 | while (eleCommands != NULL && found == false) { |
||
| 555 | if (strcmp(argv[1], eleCommands->funcName) == 0) { |
||
| 556 | int result = (*(eleCommands->funcPtr))(clientData, interp, argc, argv, theTclDomain, theTclBuilder); |
||
| 557 | return result; |
||
| 558 | } else |
||
| 559 | eleCommands = eleCommands->next; |
||
| 560 | } |
||
| 561 | |||
| 562 | // load new package |
||
| 563 | void *libHandle; |
||
| 564 | int (*funcPtr)(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 565 | TCL_Char **argv, Domain*, TclModelBuilder *); |
||
| 566 | int eleNameLength = strlen(argv[1]); |
||
| 567 | char *tclFuncName = new char[eleNameLength+12]; |
||
| 568 | strcpy(tclFuncName, "TclCommand_"); |
||
| 569 | strcpy(&tclFuncName[11], argv[1]); |
||
| 570 | |||
| 571 | int res = getLibraryFunction(argv[1], tclFuncName, &libHandle, (void **)&funcPtr); |
||
| 572 | |||
| 2087 | fmk | 573 | delete [] tclFuncName; |
| 2046 | fmk | 574 | |
| 2087 | fmk | 575 | if (res == 0) { |
| 2046 | fmk | 576 | |
| 2087 | fmk | 577 | char *eleName = new char[eleNameLength+1]; |
| 578 | strcpy(eleName, argv[1]); |
||
| 579 | ElementPackageCommand *theEleCommand = new ElementPackageCommand; |
||
| 580 | theEleCommand->funcPtr = funcPtr; |
||
| 581 | theEleCommand->funcName = eleName; |
||
| 582 | theEleCommand->next = theElementPackageCommands; |
||
| 583 | theElementPackageCommands = theEleCommand; |
||
| 584 | |||
| 585 | int result = (*funcPtr)(clientData, interp, |
||
| 586 | argc, argv, |
||
| 587 | theTclDomain, theTclBuilder); |
||
| 588 | return result; |
||
| 589 | } |
||
| 590 | |||
| 1119 | fmk | 591 | // element type not recognized |
| 2046 | fmk | 592 | opserr << "WARNING unknown element type: " << argv[1] << " :check the manual\n"; |
| 2 | fmk | 593 | return TCL_ERROR; |
| 2046 | fmk | 594 | } |
| 2 | fmk | 595 | } |