Subversion Repositories OpenSees

Rev

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
}