Rev 1119 | Rev 1265 | 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 | |||
| 1225 | mhscott | 21 | // $Revision: 1.20 $ |
| 22 | // $Date: 2002-12-13 22:25:47 $ |
||
| 2 | fmk | 23 | // $Source: /usr/local/cvs/OpenSees/SRC/element/TclElementCommands.cpp,v $ |
| 24 | |||
| 25 | |||
| 26 | // File: ~/element/TclElementCommands.C |
||
| 27 | // |
||
| 28 | // Written: fmk |
||
| 29 | // Created: 07/99 |
||
| 30 | // Revision: A |
||
| 31 | // |
||
| 32 | // Description: This file contains the implementation of the TclElementCommands. |
||
| 33 | // The file contains the routine TclElementCommands which is invoked by the |
||
| 34 | // TclModelBuilder. |
||
| 35 | // |
||
| 36 | // What: "@(#) TclModelBuilder.C, revA" |
||
| 37 | |||
| 38 | #include <stdlib.h> |
||
| 39 | #include <string.h> |
||
| 40 | #include <iostream.h> |
||
| 41 | #include <Domain.h> |
||
| 42 | |||
| 887 | jeremic | 43 | #include <ElasticBeam2d.h> |
| 44 | #include <ElasticBeam3d.h> |
||
| 45 | |||
| 46 | //Zhaohui Yang (UCD) |
||
| 47 | #include <EightNodeBrick.h> |
||
| 48 | #include <TwentyNodeBrick.h> |
||
| 49 | |||
| 50 | #include <CrdTransf2d.h> |
||
| 51 | #include <CrdTransf3d.h> |
||
| 52 | |||
| 2 | fmk | 53 | #include <TclModelBuilder.h> |
| 54 | |||
| 55 | // |
||
| 56 | // SOME STATIC POINTERS USED IN THE FUNCTIONS INVOKED BY THE INTERPRETER |
||
| 57 | // |
||
| 58 | |||
| 59 | extern void printCommand(int argc, char **argv); |
||
| 60 | |||
| 61 | // |
||
| 62 | // THE PROTOTYPES OF THE FUNCTIONS INVOKED BY THE INTERPRETER |
||
| 63 | // |
||
| 64 | |||
| 65 | extern int |
||
| 66 | TclModelBuilder_addFeapTruss(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 67 | char **argv, Domain*, TclModelBuilder *, int argStart); |
||
| 68 | |||
| 69 | extern int |
||
| 70 | TclModelBuilder_addTruss(ClientData clientData, Tcl_Interp *interp, int argc, |
||
| 317 | fmk | 71 | char **argv, Domain*, TclModelBuilder *, int argStart); |
| 72 | |||
| 579 | mhscott | 73 | extern int |
| 2 | fmk | 74 | TclModelBuilder_addElasticBeam(ClientData clientData, Tcl_Interp *interp, int argc, |
| 317 | fmk | 75 | char **argv, Domain*, TclModelBuilder *, int argStart); |
| 2 | fmk | 76 | |
| 317 | fmk | 77 | extern int |
| 78 | TclModelBuilder_addBrick(ClientData clientData, Tcl_Interp *interp, |
||
| 79 | int argc, char **argv, Domain*, |
||
| 80 | TclModelBuilder *, int argStart); |
||
| 81 | |||
| 82 | extern int |
||
| 83 | TclModelBuilder_addBBarBrick(ClientData clientData, Tcl_Interp *interp, |
||
| 84 | int argc, char **argv, Domain*, |
||
| 85 | TclModelBuilder *, int argStart); |
||
| 86 | |||
| 87 | extern int |
||
| 88 | TclModelBuilder_addShellMITC4(ClientData clientData, Tcl_Interp *interp, |
||
| 89 | int argc, char **argv, Domain*, |
||
| 90 | TclModelBuilder *, int argStart); |
||
| 91 | |||
| 92 | extern int |
||
| 93 | TclModelBuilder_addConstantPressureVolumeQuad(ClientData, Tcl_Interp *, int, char **, |
||
| 94 | Domain*, TclModelBuilder *); |
||
| 95 | |||
| 96 | extern int |
||
| 1068 | fmk | 97 | TclModelBuilder_addJoint2D(ClientData, Tcl_Interp *, int, char **, |
| 98 | Domain*, TclModelBuilder *); |
||
| 99 | |||
| 100 | extern int |
||
| 317 | fmk | 101 | TclModelBuilder_addEnhancedQuad(ClientData, Tcl_Interp *, int, char **, |
| 102 | Domain*, TclModelBuilder *); |
||
| 103 | |||
| 576 | fmk | 104 | extern int |
| 105 | TclModelBuilder_addNineNodeMixedQuad(ClientData, Tcl_Interp *, int, char **, |
||
| 106 | Domain*, TclModelBuilder *); |
||
| 317 | fmk | 107 | |
| 576 | fmk | 108 | |
| 2 | fmk | 109 | // GLF |
| 110 | extern int |
||
| 111 | TclModelBuilder_addZeroLength(ClientData, Tcl_Interp *, int, char **, |
||
| 112 | Domain*, TclModelBuilder *); |
||
| 113 | |||
| 36 | mhscott | 114 | // MHS |
| 115 | extern int |
||
| 116 | TclModelBuilder_addZeroLengthSection(ClientData, Tcl_Interp *, int, char **, |
||
| 117 | Domain*, TclModelBuilder *); |
||
| 118 | |||
| 119 | // MHS |
||
| 1068 | fmk | 120 | extern int |
| 121 | TclModelBuilder_addZeroLengthND(ClientData, Tcl_Interp *, int, char **, |
||
| 122 | Domain*, TclModelBuilder *); |
||
| 36 | mhscott | 123 | |
| 124 | |||
| 2 | fmk | 125 | // REMO |
| 126 | extern int |
||
| 127 | TclModelBuilder_addFrameElement(ClientData, Tcl_Interp *, int, char **, |
||
| 128 | Domain*, TclModelBuilder *); |
||
| 129 | |||
| 130 | // MHS |
||
| 131 | extern int |
||
| 132 | TclModelBuilder_addBeamWithHinges(ClientData, Tcl_Interp *, int, char **, |
||
| 133 | Domain*, TclModelBuilder *); |
||
| 134 | extern int |
||
| 135 | TclModelBuilder_addFourNodeQuad(ClientData, Tcl_Interp *, int, char **, |
||
| 136 | Domain*, TclModelBuilder *); |
||
| 317 | fmk | 137 | extern int |
| 138 | TclModelBuilder_addDispBeamColumn(ClientData, Tcl_Interp *, int, char **, |
||
| 139 | Domain*, TclModelBuilder *); |
||
| 1225 | mhscott | 140 | extern int |
| 141 | TclModelBuilder_addForceBeamColumn(ClientData, Tcl_Interp *, int, char **, |
||
| 142 | Domain*, TclModelBuilder *); |
||
| 317 | fmk | 143 | |
| 259 | fmk | 144 | |
| 567 | jeremic | 145 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 146 | extern int TclModelBuilder_addEightNodeBrick(ClientData, |
| 147 | Tcl_Interp *, |
||
| 860 | fmk | 148 | int, |
| 149 | char **, |
||
| 150 | Domain*, |
||
| 151 | TclModelBuilder *, |
||
| 152 | int); |
||
| 567 | jeremic | 153 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 154 | extern int TclModelBuilder_addTwentyNodeBrick(ClientData, |
| 155 | Tcl_Interp *, |
||
| 860 | fmk | 156 | int, |
| 157 | char **, |
||
| 158 | Domain*, |
||
| 159 | TclModelBuilder *, |
||
| 160 | int); |
||
| 162 | jeremic | 161 | |
| 771 | jeremic | 162 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 163 | extern int TclModelBuilder_addEightNodeBrick_u_p_U(ClientData, |
||
| 164 | Tcl_Interp *, |
||
| 860 | fmk | 165 | int, |
| 166 | char **, |
||
| 167 | Domain*, |
||
| 168 | TclModelBuilder *, |
||
| 169 | int); |
||
| 771 | jeremic | 170 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 171 | extern int TclModelBuilder_addTwentyNodeBrick_u_p_U(ClientData, |
||
| 172 | Tcl_Interp *, |
||
| 860 | fmk | 173 | int, |
| 174 | char **, |
||
| 175 | Domain*, |
||
| 176 | TclModelBuilder *, |
||
| 177 | int); |
||
| 162 | jeremic | 178 | |
| 1119 | fmk | 179 | //Rohit Kraul |
| 180 | extern int |
||
| 181 | TclModelBuilder_addElastic2dGNL(ClientData, Tcl_Interp *, int, char **, |
||
| 182 | Domain *,TclModelBuilder *); |
||
| 183 | extern int |
||
| 184 | TclModelBuilder_addElement2dYS(ClientData, Tcl_Interp *, int, char **, |
||
| 185 | Domain *,TclModelBuilder *); |
||
| 771 | jeremic | 186 | |
| 1119 | fmk | 187 | |
| 2 | fmk | 188 | int |
| 189 | TclModelBuilderElementCommand(ClientData clientData, Tcl_Interp *interp, |
||
| 190 | int argc, char **argv, |
||
| 191 | Domain *theTclDomain, TclModelBuilder *theTclBuilder) |
||
| 192 | { |
||
| 193 | // ensure the destructor has not been called - |
||
| 194 | if (theTclBuilder == 0) { |
||
| 195 | cerr << "WARNING builder has been destroyed\n"; |
||
| 196 | return TCL_ERROR; |
||
| 197 | } |
||
| 198 | |||
| 199 | // check at least two arguments so don't segemnt fault on strcmp |
||
| 200 | if (argc < 2) { |
||
| 201 | cerr << "WARNING need to specify an element type\n"; |
||
| 202 | cerr << "Want: element eleType <specific element args>\n"; |
||
| 203 | cerr << "Valid types: truss, elasticBeamColumn, nonlinearBeamColumn\n"; |
||
| 204 | return TCL_ERROR; |
||
| 205 | } |
||
| 206 | |||
| 207 | if (strcmp(argv[1],"fTruss") == 0) { |
||
| 208 | int eleArgStart = 1; |
||
| 209 | int result = TclModelBuilder_addFeapTruss(clientData, interp, argc, argv, |
||
| 210 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 211 | return result; |
||
| 360 | mhscott | 212 | } else if (strcmp(argv[1],"truss") == 0 || strcmp(argv[1],"corotTruss") == 0) { |
| 2 | fmk | 213 | int eleArgStart = 1; |
| 214 | int result = TclModelBuilder_addTruss(clientData, interp, argc, argv, |
||
| 215 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 216 | return result; |
||
| 317 | fmk | 217 | } else if (strcmp(argv[1],"elasticBeamColumn") == 0) { |
| 2 | fmk | 218 | int eleArgStart = 1; |
| 219 | int result = TclModelBuilder_addElasticBeam(clientData, interp, argc, argv, |
||
| 220 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 221 | return result; |
||
| 222 | } else if (strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
||
| 162 | jeremic | 223 | int result = TclModelBuilder_addFrameElement(clientData, interp, argc, argv, |
| 2 | fmk | 224 | theTclDomain, theTclBuilder); |
| 225 | return result; |
||
| 317 | fmk | 226 | } else if (strcmp(argv[1],"dispBeamColumn") == 0) { |
| 227 | int result = TclModelBuilder_addDispBeamColumn(clientData, interp, argc, argv, |
||
| 228 | theTclDomain, theTclBuilder); |
||
| 229 | return result; |
||
| 1225 | mhscott | 230 | } else if (strcmp(argv[1],"forceBeamColumn") == 0) { |
| 231 | int result = TclModelBuilder_addForceBeamColumn(clientData, interp, argc, argv, |
||
| 232 | theTclDomain, theTclBuilder); |
||
| 233 | return result; |
||
| 2 | fmk | 234 | } else if (strcmp(argv[1],"beamWithHinges") == 0) { |
| 235 | int result = TclModelBuilder_addBeamWithHinges(clientData, interp, argc, argv, |
||
| 236 | theTclDomain, theTclBuilder); |
||
| 237 | return result; |
||
| 238 | } else if (strcmp(argv[1],"quad") == 0) { |
||
| 162 | jeremic | 239 | int result = TclModelBuilder_addFourNodeQuad(clientData, interp, argc, argv, |
| 2 | fmk | 240 | theTclDomain, theTclBuilder); |
| 241 | return result; |
||
| 317 | fmk | 242 | } else if (strcmp(argv[1],"enhancedQuad") == 0) { |
| 243 | int result = TclModelBuilder_addEnhancedQuad(clientData, interp, argc, argv, |
||
| 244 | theTclDomain, theTclBuilder); |
||
| 245 | return result; |
||
| 246 | } else if ((strcmp(argv[1],"bbarQuad") == 0) || (strcmp(argv[1],"mixedQuad") == 0)) { |
||
| 247 | int result = TclModelBuilder_addConstantPressureVolumeQuad(clientData, interp, |
||
| 248 | argc, argv, |
||
| 249 | theTclDomain, |
||
| 250 | theTclBuilder); |
||
| 251 | return result; |
||
| 576 | fmk | 252 | } else if ((strcmp(argv[1],"nineNodeMixedQuad") == 0) |
| 253 | || (strcmp(argv[1],"nineNodeQuad") == 0)) { |
||
| 254 | int result = TclModelBuilder_addNineNodeMixedQuad(clientData, interp, |
||
| 255 | argc, argv, |
||
| 256 | theTclDomain, |
||
| 257 | theTclBuilder); |
||
| 258 | return result; |
||
| 317 | fmk | 259 | } else if ((strcmp(argv[1],"shell") == 0) || (strcmp(argv[1],"shellMITC4") == 0)) { |
| 260 | int eleArgStart = 1; |
||
| 261 | int result = TclModelBuilder_addShellMITC4(clientData, interp, |
||
| 262 | argc, argv, |
||
| 263 | theTclDomain, |
||
| 264 | theTclBuilder, |
||
| 265 | eleArgStart); |
||
| 266 | return result; |
||
| 771 | jeremic | 267 | } |
| 860 | fmk | 268 | |
| 269 | //Boris Jeremic & Zhaohui |
||
| 270 | else if (strcmp(argv[1],"Brick8N") == 0) { |
||
| 271 | |||
| 272 | int eleArgStart = 1; |
||
| 273 | int result = TclModelBuilder_addEightNodeBrick(clientData, |
||
| 274 | interp, |
||
| 275 | argc, |
||
| 276 | argv, |
||
| 277 | theTclDomain, |
||
| 278 | theTclBuilder, |
||
| 279 | eleArgStart); |
||
| 280 | return result; |
||
| 771 | jeremic | 281 | } |
| 860 | fmk | 282 | |
| 283 | //Boris Jeremic & Zhaohui |
||
| 284 | else if (strcmp(argv[1],"Brick20N") == 0) { |
||
| 285 | int eleArgStart = 1; |
||
| 286 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, |
||
| 287 | interp, |
||
| 288 | argc, |
||
| 289 | argv, |
||
| 290 | theTclDomain, |
||
| 291 | theTclBuilder, |
||
| 292 | eleArgStart); |
||
| 293 | return result; |
||
| 771 | jeremic | 294 | } |
| 860 | fmk | 295 | |
| 296 | //Boris Jeremic & Zhaohui |
||
| 297 | else if (strcmp(argv[1],"Brick8N_u_p_U") == 0) { |
||
| 298 | int eleArgStart = 1; |
||
| 299 | int result = TclModelBuilder_addEightNodeBrick_u_p_U(clientData, |
||
| 300 | interp, |
||
| 301 | argc, |
||
| 302 | argv, |
||
| 303 | theTclDomain, |
||
| 304 | theTclBuilder, |
||
| 305 | eleArgStart); |
||
| 306 | return result; |
||
| 307 | } |
||
| 308 | //Boris Jeremic & Zhaohui |
||
| 309 | else if (strcmp(argv[1],"Brick20N_u_p_U") == 0) { |
||
| 310 | int eleArgStart = 1; |
||
| 311 | int result = TclModelBuilder_addTwentyNodeBrick_u_p_U(clientData, |
||
| 312 | interp, |
||
| 313 | argc, |
||
| 314 | argv, |
||
| 315 | theTclDomain, |
||
| 316 | theTclBuilder, |
||
| 317 | eleArgStart); |
||
| 318 | return result; |
||
| 319 | } |
||
| 320 | else if (strcmp(argv[1],"stdBrick") == 0) { |
||
| 321 | int eleArgStart = 1; |
||
| 322 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 317 | fmk | 323 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 324 | return result; |
| 317 | fmk | 325 | } else if (strcmp(argv[1],"bbarBrick") == 0) { |
| 860 | fmk | 326 | int eleArgStart = 1; |
| 327 | int result = TclModelBuilder_addBBarBrick(clientData, interp, argc, argv, |
||
| 317 | fmk | 328 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 329 | return result; |
| 2 | fmk | 330 | } else if (strcmp(argv[1],"zeroLength") == 0) { |
| 331 | int result = TclModelBuilder_addZeroLength(clientData, interp, argc, argv, |
||
| 332 | theTclDomain, theTclBuilder); |
||
| 333 | return result; |
||
| 36 | mhscott | 334 | } else if (strcmp(argv[1],"zeroLengthSection") == 0) { |
| 335 | int result = TclModelBuilder_addZeroLengthSection(clientData, interp, argc, argv, |
||
| 336 | theTclDomain, theTclBuilder); |
||
| 337 | return result; |
||
| 1074 | mhscott | 338 | } else if (strcmp(argv[1],"zeroLengthND") == 0) { |
| 339 | cerr << "element zeroLengthND is no longer available, please use " |
||
| 340 | << "the zeroLengthSection element instead" << endl; |
||
| 341 | return TCL_ERROR; |
||
| 1068 | fmk | 342 | } else if ((strcmp(argv[1],"Joint2D") == 0) || |
| 343 | (strcmp(argv[1],"Joint2D") == 0)) { |
||
| 344 | int result = TclModelBuilder_addJoint2D(clientData, interp, argc, argv, |
||
| 345 | theTclDomain, theTclBuilder); |
||
| 346 | return result; |
||
| 1119 | fmk | 347 | } else if ((strcmp(argv[1], "inelastic2dYS01")== 0) || |
| 348 | (strcmp(argv[1], "inelastic2dYS02")== 0) || |
||
| 349 | (strcmp(argv[1], "inelastic2dYS03")== 0) || |
||
| 350 | (strcmp(argv[1], "inelastic2dYS04")== 0) || |
||
| 351 | (strcmp(argv[1], "inelastic2dYS05")== 0)) { |
||
| 352 | int result = TclModelBuilder_addElement2dYS (clientData, interp, |
||
| 353 | argc, argv, |
||
| 354 | theTclDomain, theTclBuilder); |
||
| 355 | return result; |
||
| 356 | } else if ((strcmp(argv[1],"element2dGNL") == 0) || |
||
| 357 | (strcmp(argv[1],"elastic2dGNL") == 0)) { |
||
| 358 | int result = TclModelBuilder_addElastic2dGNL(clientData, interp, argc, argv, |
||
| 359 | theTclDomain, theTclBuilder); |
||
| 360 | return result; |
||
| 1068 | fmk | 361 | } else { |
| 1119 | fmk | 362 | // element type not recognized |
| 2 | fmk | 363 | cerr << "WARNING unknown element type: " << argv[1]; |
| 259 | fmk | 364 | cerr << "Valid types: truss, elasticBeamColumn, nonlinearBeamColumn, " << endl |
| 365 | << "beamWithHinges, zeroLength, quad, brick, shellMITC4\n"; |
||
| 2 | fmk | 366 | return TCL_ERROR; |
| 367 | } |
||
| 368 | } |