Subversion Repositories OpenSees

Rev

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
}