Rev 1006 | Rev 1074 | 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 | |||
| 1068 | fmk | 21 | // $Revision: 1.17 $ |
| 22 | // $Date: 2002-07-18 22:00:35 $ |
||
| 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 *); |
||
| 140 | |||
| 259 | fmk | 141 | |
| 567 | jeremic | 142 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 143 | extern int TclModelBuilder_addEightNodeBrick(ClientData, |
| 144 | Tcl_Interp *, |
||
| 860 | fmk | 145 | int, |
| 146 | char **, |
||
| 147 | Domain*, |
||
| 148 | TclModelBuilder *, |
||
| 149 | int); |
||
| 567 | jeremic | 150 | //Boris Jeremic & Zhaohui |
| 771 | jeremic | 151 | extern int TclModelBuilder_addTwentyNodeBrick(ClientData, |
| 152 | Tcl_Interp *, |
||
| 860 | fmk | 153 | int, |
| 154 | char **, |
||
| 155 | Domain*, |
||
| 156 | TclModelBuilder *, |
||
| 157 | int); |
||
| 162 | jeremic | 158 | |
| 771 | jeremic | 159 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 160 | extern int TclModelBuilder_addEightNodeBrick_u_p_U(ClientData, |
||
| 161 | Tcl_Interp *, |
||
| 860 | fmk | 162 | int, |
| 163 | char **, |
||
| 164 | Domain*, |
||
| 165 | TclModelBuilder *, |
||
| 166 | int); |
||
| 771 | jeremic | 167 | //Boris Jeremic & Xiaoyan 01/07/2002 |
| 168 | extern int TclModelBuilder_addTwentyNodeBrick_u_p_U(ClientData, |
||
| 169 | Tcl_Interp *, |
||
| 860 | fmk | 170 | int, |
| 171 | char **, |
||
| 172 | Domain*, |
||
| 173 | TclModelBuilder *, |
||
| 174 | int); |
||
| 162 | jeremic | 175 | |
| 771 | jeremic | 176 | |
| 2 | fmk | 177 | int |
| 178 | TclModelBuilderElementCommand(ClientData clientData, Tcl_Interp *interp, |
||
| 179 | int argc, char **argv, |
||
| 180 | Domain *theTclDomain, TclModelBuilder *theTclBuilder) |
||
| 181 | { |
||
| 182 | // ensure the destructor has not been called - |
||
| 183 | if (theTclBuilder == 0) { |
||
| 184 | cerr << "WARNING builder has been destroyed\n"; |
||
| 185 | return TCL_ERROR; |
||
| 186 | } |
||
| 187 | |||
| 188 | // check at least two arguments so don't segemnt fault on strcmp |
||
| 189 | if (argc < 2) { |
||
| 190 | cerr << "WARNING need to specify an element type\n"; |
||
| 191 | cerr << "Want: element eleType <specific element args>\n"; |
||
| 192 | cerr << "Valid types: truss, elasticBeamColumn, nonlinearBeamColumn\n"; |
||
| 193 | return TCL_ERROR; |
||
| 194 | } |
||
| 195 | |||
| 196 | if (strcmp(argv[1],"fTruss") == 0) { |
||
| 197 | int eleArgStart = 1; |
||
| 198 | int result = TclModelBuilder_addFeapTruss(clientData, interp, argc, argv, |
||
| 199 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 200 | return result; |
||
| 360 | mhscott | 201 | } else if (strcmp(argv[1],"truss") == 0 || strcmp(argv[1],"corotTruss") == 0) { |
| 2 | fmk | 202 | int eleArgStart = 1; |
| 203 | int result = TclModelBuilder_addTruss(clientData, interp, argc, argv, |
||
| 204 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 205 | return result; |
||
| 317 | fmk | 206 | } else if (strcmp(argv[1],"elasticBeamColumn") == 0) { |
| 2 | fmk | 207 | int eleArgStart = 1; |
| 208 | int result = TclModelBuilder_addElasticBeam(clientData, interp, argc, argv, |
||
| 209 | theTclDomain, theTclBuilder, eleArgStart); |
||
| 210 | return result; |
||
| 211 | } else if (strcmp(argv[1],"nonlinearBeamColumn") == 0) { |
||
| 162 | jeremic | 212 | int result = TclModelBuilder_addFrameElement(clientData, interp, argc, argv, |
| 2 | fmk | 213 | theTclDomain, theTclBuilder); |
| 214 | return result; |
||
| 317 | fmk | 215 | } else if (strcmp(argv[1],"dispBeamColumn") == 0) { |
| 216 | int result = TclModelBuilder_addDispBeamColumn(clientData, interp, argc, argv, |
||
| 217 | theTclDomain, theTclBuilder); |
||
| 218 | return result; |
||
| 2 | fmk | 219 | } else if (strcmp(argv[1],"beamWithHinges") == 0) { |
| 220 | int result = TclModelBuilder_addBeamWithHinges(clientData, interp, argc, argv, |
||
| 221 | theTclDomain, theTclBuilder); |
||
| 222 | return result; |
||
| 223 | } else if (strcmp(argv[1],"quad") == 0) { |
||
| 162 | jeremic | 224 | int result = TclModelBuilder_addFourNodeQuad(clientData, interp, argc, argv, |
| 2 | fmk | 225 | theTclDomain, theTclBuilder); |
| 226 | return result; |
||
| 317 | fmk | 227 | } else if (strcmp(argv[1],"enhancedQuad") == 0) { |
| 228 | int result = TclModelBuilder_addEnhancedQuad(clientData, interp, argc, argv, |
||
| 229 | theTclDomain, theTclBuilder); |
||
| 230 | return result; |
||
| 231 | } else if ((strcmp(argv[1],"bbarQuad") == 0) || (strcmp(argv[1],"mixedQuad") == 0)) { |
||
| 232 | int result = TclModelBuilder_addConstantPressureVolumeQuad(clientData, interp, |
||
| 233 | argc, argv, |
||
| 234 | theTclDomain, |
||
| 235 | theTclBuilder); |
||
| 236 | return result; |
||
| 576 | fmk | 237 | } else if ((strcmp(argv[1],"nineNodeMixedQuad") == 0) |
| 238 | || (strcmp(argv[1],"nineNodeQuad") == 0)) { |
||
| 239 | int result = TclModelBuilder_addNineNodeMixedQuad(clientData, interp, |
||
| 240 | argc, argv, |
||
| 241 | theTclDomain, |
||
| 242 | theTclBuilder); |
||
| 243 | return result; |
||
| 317 | fmk | 244 | } else if ((strcmp(argv[1],"shell") == 0) || (strcmp(argv[1],"shellMITC4") == 0)) { |
| 245 | int eleArgStart = 1; |
||
| 246 | int result = TclModelBuilder_addShellMITC4(clientData, interp, |
||
| 247 | argc, argv, |
||
| 248 | theTclDomain, |
||
| 249 | theTclBuilder, |
||
| 250 | eleArgStart); |
||
| 251 | return result; |
||
| 771 | jeremic | 252 | } |
| 860 | fmk | 253 | |
| 254 | //Boris Jeremic & Zhaohui |
||
| 255 | else if (strcmp(argv[1],"Brick8N") == 0) { |
||
| 256 | |||
| 257 | int eleArgStart = 1; |
||
| 258 | int result = TclModelBuilder_addEightNodeBrick(clientData, |
||
| 259 | interp, |
||
| 260 | argc, |
||
| 261 | argv, |
||
| 262 | theTclDomain, |
||
| 263 | theTclBuilder, |
||
| 264 | eleArgStart); |
||
| 265 | return result; |
||
| 771 | jeremic | 266 | } |
| 860 | fmk | 267 | |
| 268 | //Boris Jeremic & Zhaohui |
||
| 269 | else if (strcmp(argv[1],"Brick20N") == 0) { |
||
| 270 | int eleArgStart = 1; |
||
| 271 | int result = TclModelBuilder_addTwentyNodeBrick(clientData, |
||
| 272 | interp, |
||
| 273 | argc, |
||
| 274 | argv, |
||
| 275 | theTclDomain, |
||
| 276 | theTclBuilder, |
||
| 277 | eleArgStart); |
||
| 278 | return result; |
||
| 771 | jeremic | 279 | } |
| 860 | fmk | 280 | |
| 281 | //Boris Jeremic & Zhaohui |
||
| 282 | else if (strcmp(argv[1],"Brick8N_u_p_U") == 0) { |
||
| 283 | int eleArgStart = 1; |
||
| 284 | int result = TclModelBuilder_addEightNodeBrick_u_p_U(clientData, |
||
| 285 | interp, |
||
| 286 | argc, |
||
| 287 | argv, |
||
| 288 | theTclDomain, |
||
| 289 | theTclBuilder, |
||
| 290 | eleArgStart); |
||
| 291 | return result; |
||
| 292 | } |
||
| 293 | //Boris Jeremic & Zhaohui |
||
| 294 | else if (strcmp(argv[1],"Brick20N_u_p_U") == 0) { |
||
| 295 | int eleArgStart = 1; |
||
| 296 | int result = TclModelBuilder_addTwentyNodeBrick_u_p_U(clientData, |
||
| 297 | interp, |
||
| 298 | argc, |
||
| 299 | argv, |
||
| 300 | theTclDomain, |
||
| 301 | theTclBuilder, |
||
| 302 | eleArgStart); |
||
| 303 | return result; |
||
| 304 | } |
||
| 305 | else if (strcmp(argv[1],"stdBrick") == 0) { |
||
| 306 | int eleArgStart = 1; |
||
| 307 | int result = TclModelBuilder_addBrick(clientData, interp, argc, argv, |
||
| 317 | fmk | 308 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 309 | return result; |
| 317 | fmk | 310 | } else if (strcmp(argv[1],"bbarBrick") == 0) { |
| 860 | fmk | 311 | int eleArgStart = 1; |
| 312 | int result = TclModelBuilder_addBBarBrick(clientData, interp, argc, argv, |
||
| 317 | fmk | 313 | theTclDomain, theTclBuilder, eleArgStart); |
| 860 | fmk | 314 | return result; |
| 2 | fmk | 315 | } else if (strcmp(argv[1],"zeroLength") == 0) { |
| 316 | int result = TclModelBuilder_addZeroLength(clientData, interp, argc, argv, |
||
| 317 | theTclDomain, theTclBuilder); |
||
| 318 | return result; |
||
| 36 | mhscott | 319 | } else if (strcmp(argv[1],"zeroLengthSection") == 0) { |
| 320 | int result = TclModelBuilder_addZeroLengthSection(clientData, interp, argc, argv, |
||
| 321 | theTclDomain, theTclBuilder); |
||
| 322 | return result; |
||
| 1068 | fmk | 323 | } else if ((strcmp(argv[1],"Joint2D") == 0) || |
| 324 | (strcmp(argv[1],"Joint2D") == 0)) { |
||
| 325 | int result = TclModelBuilder_addJoint2D(clientData, interp, argc, argv, |
||
| 326 | theTclDomain, theTclBuilder); |
||
| 327 | return result; |
||
| 328 | } else { |
||
| 2 | fmk | 329 | cerr << "WARNING unknown element type: " << argv[1]; |
| 259 | fmk | 330 | cerr << "Valid types: truss, elasticBeamColumn, nonlinearBeamColumn, " << endl |
| 331 | << "beamWithHinges, zeroLength, quad, brick, shellMITC4\n"; |
||
| 2 | fmk | 332 | return TCL_ERROR; |
| 333 | } |
||
| 334 | } |