00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <FedeasHardeningMaterial.h>
00032 #include <FedeasBond1Material.h>
00033 #include <FedeasBond2Material.h>
00034 #include <FedeasConcr1Material.h>
00035 #include <FedeasConcr2Material.h>
00036 #include <FedeasConcr3Material.h>
00037 #include <FedeasHyster1Material.h>
00038 #include <FedeasHyster2Material.h>
00039 #include <FedeasSteel2Material.h>
00040 #include <FedeasSteel1Material.h>
00041
00042 #include <TclModelBuilder.h>
00043 #include <Vector.h>
00044 #include <string.h>
00045
00046 static void printCommand(int argc, TCL_Char **argv)
00047 {
00048 opserr << "Input command: ";
00049 for (int i=0; i<argc; i++)
00050 opserr << argv[i] << " ";
00051 opserr << endln;
00052 }
00053
00054 UniaxialMaterial *
00055 TclModelBuilder_addFedeasMaterial(ClientData clientData, Tcl_Interp *interp, int argc,
00056 TCL_Char **argv, TclModelBuilder *theTclBuilder)
00057 {
00058 if (argc < 3) {
00059 opserr << "WARNING insufficient number of arguments\n";
00060 printCommand(argc, argv);
00061 return 0;
00062 }
00063
00064 int tag;
00065 if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00066 opserr << "WARNING invalid uniaxialMaterial tag\n";
00067 printCommand(argc, argv);
00068 return 0;
00069 }
00070
00071 UniaxialMaterial *theMaterial = 0;
00072
00073 if (strcmp(argv[1],"Hardening1") == 0 || strcmp(argv[1],"Hardening01") == 0) {
00074 if (argc < 7) {
00075 opserr << "WARNING invalid number of arguments\n";
00076 printCommand(argc,argv);
00077 opserr << "Want: uniaxialMaterial Hardening01 tag? E? sigY? Hiso? Hkin?" << endln;
00078 return 0;
00079 }
00080
00081 double E, sigY, Hiso, Hkin;
00082
00083 if (Tcl_GetDouble(interp, argv[3], &E) != TCL_OK) {
00084 opserr << "WARNING invalid E\n";
00085 printCommand(argc, argv);
00086 return 0;
00087 }
00088 if (Tcl_GetDouble(interp, argv[4], &sigY) != TCL_OK) {
00089 opserr << "WARNING invalid sigY\n";
00090 printCommand(argc, argv);
00091 return 0;
00092 }
00093 if (Tcl_GetDouble(interp, argv[5], &Hiso) != TCL_OK) {
00094 opserr << "WARNING invalid Hiso\n";
00095 printCommand(argc, argv);
00096 return 0;
00097 }
00098 if (Tcl_GetDouble(interp, argv[6], &Hkin) != TCL_OK) {
00099 opserr << "WARNING invalid Hkin\n";
00100 printCommand(argc, argv);
00101 return 0;
00102 }
00103
00104 theMaterial = new FedeasHardeningMaterial(tag, E, sigY, Hiso, Hkin);
00105 }
00106
00107 else if (strcmp(argv[1],"Bond1") == 0 || strcmp(argv[1],"Bond01") == 0) {
00108 if (argc < 15) {
00109 opserr << "WARNING invalid number of arguments\n";
00110 printCommand(argc,argv);
00111 opserr << "Want: uniaxialMaterial Bond01 tag? u1p? q1p? u2p? u3p? q3p? u1n? q1n? u2n? u3n? q3n? s0? bb?" << endln;
00112 return 0;
00113 }
00114
00115 double u1p, q1p, u2p, u3p, q3p;
00116 double u1n, q1n, u2n, u3n, q3n;
00117 double s0, bb;
00118
00119 if (Tcl_GetDouble(interp, argv[3], &u1p) != TCL_OK) {
00120 opserr << "WARNING invalid u1p\n";
00121 printCommand(argc, argv);
00122 return 0;
00123 }
00124 if (Tcl_GetDouble(interp, argv[4], &q1p) != TCL_OK) {
00125 opserr << "WARNING invalid q1p\n";
00126 printCommand(argc, argv);
00127 return 0;
00128 }
00129 if (Tcl_GetDouble(interp, argv[5], &u2p) != TCL_OK) {
00130 opserr << "WARNING invalid u2p\n";
00131 printCommand(argc, argv);
00132 return 0;
00133 }
00134 if (Tcl_GetDouble(interp, argv[6], &u3p) != TCL_OK) {
00135 opserr << "WARNING invalid u3p\n";
00136 printCommand(argc, argv);
00137 return 0;
00138 }
00139 if (Tcl_GetDouble(interp, argv[7], &q3p) != TCL_OK) {
00140 opserr << "WARNING invalid q3p\n";
00141 printCommand(argc, argv);
00142 return 0;
00143 }
00144
00145 if (Tcl_GetDouble(interp, argv[8], &u1n) != TCL_OK) {
00146 opserr << "WARNING invalid u1n\n";
00147 printCommand(argc, argv);
00148 return 0;
00149 }
00150 if (Tcl_GetDouble(interp, argv[9], &q1n) != TCL_OK) {
00151 opserr << "WARNING invalid q1n\n";
00152 printCommand(argc, argv);
00153 return 0;
00154 }
00155 if (Tcl_GetDouble(interp, argv[10], &u2n) != TCL_OK) {
00156 opserr << "WARNING invalid u2n\n";
00157 printCommand(argc, argv);
00158 return 0;
00159 }
00160 if (Tcl_GetDouble(interp, argv[11], &u3n) != TCL_OK) {
00161 opserr << "WARNING invalid u3n\n";
00162 printCommand(argc, argv);
00163 return 0;
00164 }
00165 if (Tcl_GetDouble(interp, argv[12], &q3n) != TCL_OK) {
00166 opserr << "WARNING invalid q3n\n";
00167 printCommand(argc, argv);
00168 return 0;
00169 }
00170
00171 if (Tcl_GetDouble(interp, argv[13], &s0) != TCL_OK) {
00172 opserr << "WARNING invalid s0\n";
00173 printCommand(argc, argv);
00174 return 0;
00175 }
00176 if (Tcl_GetDouble(interp, argv[14], &bb) != TCL_OK) {
00177 opserr << "WARNING invalid bb\n";
00178 printCommand(argc, argv);
00179 return 0;
00180 }
00181
00182 theMaterial = new FedeasBond1Material(tag, u1p, q1p, u2p, u3p, q3p, u1n, q1n, u2n, u3n, q3n, s0, bb);
00183 }
00184
00185 else if (strcmp(argv[1],"Bond2") == 0 || strcmp(argv[1],"Bond02") == 0) {
00186 if (argc < 17) {
00187 opserr << "WARNING invalid number of arguments\n";
00188 printCommand(argc,argv);
00189 opserr << "Want: uniaxialMaterial Bond02 tag? u1p? q1p? u2p? u3p? q3p? u1n? q1n? u2n? u3n? q3n? s0? bb? alp? aln?" << endln;
00190 return 0;
00191 }
00192
00193 double u1p, q1p, u2p, u3p, q3p;
00194 double u1n, q1n, u2n, u3n, q3n;
00195 double s0, bb, alp, aln;
00196
00197 if (Tcl_GetDouble(interp, argv[3], &u1p) != TCL_OK) {
00198 opserr << "WARNING invalid u1p\n";
00199 printCommand(argc, argv);
00200 return 0;
00201 }
00202 if (Tcl_GetDouble(interp, argv[4], &q1p) != TCL_OK) {
00203 opserr << "WARNING invalid q1p\n";
00204 printCommand(argc, argv);
00205 return 0;
00206 }
00207 if (Tcl_GetDouble(interp, argv[5], &u2p) != TCL_OK) {
00208 opserr << "WARNING invalid u2p\n";
00209 printCommand(argc, argv);
00210 return 0;
00211 }
00212 if (Tcl_GetDouble(interp, argv[6], &u3p) != TCL_OK) {
00213 opserr << "WARNING invalid u3p\n";
00214 printCommand(argc, argv);
00215 return 0;
00216 }
00217 if (Tcl_GetDouble(interp, argv[7], &q3p) != TCL_OK) {
00218 opserr << "WARNING invalid q3p\n";
00219 printCommand(argc, argv);
00220 return 0;
00221 }
00222
00223 if (Tcl_GetDouble(interp, argv[8], &u1n) != TCL_OK) {
00224 opserr << "WARNING invalid u1n\n";
00225 printCommand(argc, argv);
00226 return 0;
00227 }
00228 if (Tcl_GetDouble(interp, argv[9], &q1n) != TCL_OK) {
00229 opserr << "WARNING invalid q1n\n";
00230 printCommand(argc, argv);
00231 return 0;
00232 }
00233 if (Tcl_GetDouble(interp, argv[10], &u2n) != TCL_OK) {
00234 opserr << "WARNING invalid u2n\n";
00235 printCommand(argc, argv);
00236 return 0;
00237 }
00238 if (Tcl_GetDouble(interp, argv[11], &u3n) != TCL_OK) {
00239 opserr << "WARNING invalid u3n\n";
00240 printCommand(argc, argv);
00241 return 0;
00242 }
00243 if (Tcl_GetDouble(interp, argv[12], &q3n) != TCL_OK) {
00244 opserr << "WARNING invalid q3n\n";
00245 printCommand(argc, argv);
00246 return 0;
00247 }
00248
00249 if (Tcl_GetDouble(interp, argv[13], &s0) != TCL_OK) {
00250 opserr << "WARNING invalid s0\n";
00251 printCommand(argc, argv);
00252 return 0;
00253 }
00254 if (Tcl_GetDouble(interp, argv[14], &bb) != TCL_OK) {
00255 opserr << "WARNING invalid bb\n";
00256 printCommand(argc, argv);
00257 return 0;
00258 }
00259 if (Tcl_GetDouble(interp, argv[15], &alp) != TCL_OK) {
00260 opserr << "WARNING invalid alp\n";
00261 printCommand(argc, argv);
00262 return 0;
00263 }
00264 if (Tcl_GetDouble(interp, argv[16], &aln) != TCL_OK) {
00265 opserr << "WARNING invalid aln\n";
00266 printCommand(argc, argv);
00267 return 0;
00268 }
00269
00270 theMaterial = new FedeasBond2Material(tag, u1p, q1p, u2p, u3p, q3p, u1n, q1n, u2n, u3n, q3n, s0, bb, alp, aln);
00271 }
00272
00273 else if (strcmp(argv[1],"Concrete1") == 0 || strcmp(argv[1],"concrete01") == 0) {
00274 if (argc < 7) {
00275 opserr << "WARNING invalid number of arguments\n";
00276 printCommand(argc,argv);
00277 opserr << "Want: uniaxialMaterial Concrete01 tag? fpc? epsc0? fpcu? epscu?" << endln;
00278 return 0;
00279 }
00280
00281 double fpc, epsc0, fpcu, epscu;
00282
00283 if (Tcl_GetDouble(interp, argv[3], &fpc) != TCL_OK) {
00284 opserr << "WARNING invalid fpc\n";
00285 printCommand(argc, argv);
00286 return 0;
00287 }
00288 if (Tcl_GetDouble(interp, argv[4], &epsc0) != TCL_OK) {
00289 opserr << "WARNING invalid epsc0\n";
00290 printCommand(argc, argv);
00291 return 0;
00292 }
00293 if (Tcl_GetDouble(interp, argv[5], &fpcu) != TCL_OK) {
00294 opserr << "WARNING invalid fpcu\n";
00295 printCommand(argc, argv);
00296 return 0;
00297 }
00298 if (Tcl_GetDouble(interp, argv[6], &epscu) != TCL_OK) {
00299 opserr << "WARNING invalid epscu\n";
00300 printCommand(argc, argv);
00301 return 0;
00302 }
00303
00304 theMaterial = new FedeasConcr1Material(tag, fpc, epsc0, fpcu, epscu);
00305 }
00306
00307 else if (strcmp(argv[1],"concr2") == 0) {
00308 if (argc < 10) {
00309 opserr << "WARNING invalid number of arguments\n";
00310 printCommand(argc,argv);
00311 opserr << "Want: uniaxialMaterial Concrete02 tag? fpc? epsc0? fpcu? epscu? rat? ft? Ets?" << endln;
00312 return 0;
00313 }
00314
00315 double fpc, epsc0, fpcu, epscu;
00316 double rat, ft, Ets;
00317
00318 if (Tcl_GetDouble(interp, argv[3], &fpc) != TCL_OK) {
00319 opserr << "WARNING invalid fpc\n";
00320 printCommand(argc, argv);
00321 return 0;
00322 }
00323 if (Tcl_GetDouble(interp, argv[4], &epsc0) != TCL_OK) {
00324 opserr << "WARNING invalid epsc0\n";
00325 printCommand(argc, argv);
00326 return 0;
00327 }
00328 if (Tcl_GetDouble(interp, argv[5], &fpcu) != TCL_OK) {
00329 opserr << "WARNING invalid fpcu\n";
00330 printCommand(argc, argv);
00331 return 0;
00332 }
00333 if (Tcl_GetDouble(interp, argv[6], &epscu) != TCL_OK) {
00334 opserr << "WARNING invalid epscu\n";
00335 printCommand(argc, argv);
00336 return 0;
00337 }
00338 if (Tcl_GetDouble(interp, argv[7], &rat) != TCL_OK) {
00339 opserr << "WARNING invalid rat\n";
00340 printCommand(argc, argv);
00341 return 0;
00342 }
00343 if (Tcl_GetDouble(interp, argv[8], &ft) != TCL_OK) {
00344 opserr << "WARNING invalid ft\n";
00345 printCommand(argc, argv);
00346 return 0;
00347 }
00348 if (Tcl_GetDouble(interp, argv[9], &Ets) != TCL_OK) {
00349 opserr << "WARNING invalid Ets\n";
00350 printCommand(argc, argv);
00351 return 0;
00352 }
00353
00354 theMaterial = new FedeasConcr2Material(tag, fpc, epsc0, fpcu, epscu, rat, ft, Ets);
00355 }
00356
00357 else if (strcmp(argv[1],"Concrete3") == 0 || strcmp(argv[1],"Concrete03") == 0) {
00358 if (argc < 13) {
00359 opserr << "WARNING invalid number of arguments\n";
00360 printCommand(argc,argv);
00361 opserr << "Want: uniaxialMaterial Concrete03 tag? fpc? epsc0? fpcu? epscu? rat? ft? epst0? ft0? beta? epstu?" << endln;
00362 return 0;
00363 }
00364
00365 double fpc, epsc0, fpcu, epscu;
00366 double rat, ft, epst0, ft0, beta, epstu;
00367
00368 if (Tcl_GetDouble(interp, argv[3], &fpc) != TCL_OK) {
00369 opserr << "WARNING invalid fpc\n";
00370 printCommand(argc, argv);
00371 return 0;
00372 }
00373 if (Tcl_GetDouble(interp, argv[4], &epsc0) != TCL_OK) {
00374 opserr << "WARNING invalid epsc0\n";
00375 printCommand(argc, argv);
00376 return 0;
00377 }
00378 if (Tcl_GetDouble(interp, argv[5], &fpcu) != TCL_OK) {
00379 opserr << "WARNING invalid fpcu\n";
00380 printCommand(argc, argv);
00381 return 0;
00382 }
00383 if (Tcl_GetDouble(interp, argv[6], &epscu) != TCL_OK) {
00384 opserr << "WARNING invalid epscu\n";
00385 printCommand(argc, argv);
00386 return 0;
00387 }
00388 if (Tcl_GetDouble(interp, argv[7], &rat) != TCL_OK) {
00389 opserr << "WARNING invalid rat\n";
00390 printCommand(argc, argv);
00391 return 0;
00392 }
00393 if (Tcl_GetDouble(interp, argv[8], &ft) != TCL_OK) {
00394 opserr << "WARNING invalid ft\n";
00395 printCommand(argc, argv);
00396 return 0;
00397 }
00398 if (Tcl_GetDouble(interp, argv[9], &epst0) != TCL_OK) {
00399 opserr << "WARNING invalid epst0\n";
00400 printCommand(argc, argv);
00401 return 0;
00402 }
00403 if (Tcl_GetDouble(interp, argv[10], &ft0) != TCL_OK) {
00404 opserr << "WARNING invalid ft0\n";
00405 printCommand(argc, argv);
00406 return 0;
00407 }
00408 if (Tcl_GetDouble(interp, argv[11], &beta) != TCL_OK) {
00409 opserr << "WARNING invalid beta\n";
00410 printCommand(argc, argv);
00411 return 0;
00412 }
00413 if (Tcl_GetDouble(interp, argv[12], &epstu) != TCL_OK) {
00414 opserr << "WARNING invalid epstu\n";
00415 printCommand(argc, argv);
00416 return 0;
00417 }
00418
00419 theMaterial = new FedeasConcr3Material(tag, fpc, epsc0, fpcu, epscu, rat, ft, epst0, ft0, beta, epstu);
00420 }
00421
00422 else if (strcmp(argv[1],"Hysteretic1") == 0 || strcmp(argv[1],"Hysteretic01") == 0) {
00423 if (argc < 15) {
00424 opserr << "WARNING invalid number of arguments\n";
00425 printCommand(argc,argv);
00426 opserr << "Want: uniaxialMaterial Hysteretic01 tag? s1p? e1p? s2p? e2p? s1n? e1n? s2n? e1n? px? py? d1? d2?" << endln;
00427 return 0;
00428 }
00429
00430 double s1p, e1p, s2p, e2p;
00431 double s1n, e1n, s2n, e2n;
00432 double px, py, d1, d2;
00433
00434 if (Tcl_GetDouble(interp, argv[3], &s1p) != TCL_OK) {
00435 opserr << "WARNING invalid s1p\n";
00436 printCommand(argc, argv);
00437 return 0;
00438 }
00439 if (Tcl_GetDouble(interp, argv[4], &e1p) != TCL_OK) {
00440 opserr << "WARNING invalid e1p\n";
00441 printCommand(argc, argv);
00442 return 0;
00443 }
00444 if (Tcl_GetDouble(interp, argv[5], &s2p) != TCL_OK) {
00445 opserr << "WARNING invalid s2p\n";
00446 printCommand(argc, argv);
00447 return 0;
00448 }
00449 if (Tcl_GetDouble(interp, argv[6], &e2p) != TCL_OK) {
00450 opserr << "WARNING invalid e2p\n";
00451 printCommand(argc, argv);
00452 return 0;
00453 }
00454 if (Tcl_GetDouble(interp, argv[7], &s1n) != TCL_OK) {
00455 opserr << "WARNING invalid s1n\n";
00456 printCommand(argc, argv);
00457 return 0;
00458 }
00459 if (Tcl_GetDouble(interp, argv[8], &e1n) != TCL_OK) {
00460 opserr << "WARNING invalid e1n\n";
00461 printCommand(argc, argv);
00462 return 0;
00463 }
00464 if (Tcl_GetDouble(interp, argv[9], &s2n) != TCL_OK) {
00465 opserr << "WARNING invalid s2n\n";
00466 printCommand(argc, argv);
00467 return 0;
00468 }
00469 if (Tcl_GetDouble(interp, argv[10], &e2n) != TCL_OK) {
00470 opserr << "WARNING invalid e2n\n";
00471 printCommand(argc, argv);
00472 return 0;
00473 }
00474 if (Tcl_GetDouble(interp, argv[11], &px) != TCL_OK) {
00475 opserr << "WARNING invalid px\n";
00476 printCommand(argc, argv);
00477 return 0;
00478 }
00479 if (Tcl_GetDouble(interp, argv[12], &py) != TCL_OK) {
00480 opserr << "WARNING invalid py\n";
00481 printCommand(argc, argv);
00482 return 0;
00483 }
00484 if (Tcl_GetDouble(interp, argv[13], &d1) != TCL_OK) {
00485 opserr << "WARNING invalid d1\n";
00486 printCommand(argc, argv);
00487 return 0;
00488 }
00489 if (Tcl_GetDouble(interp, argv[14], &d2) != TCL_OK) {
00490 opserr << "WARNING invalid d2\n";
00491 printCommand(argc, argv);
00492 return 0;
00493 }
00494
00495 theMaterial = new FedeasHyster1Material(tag, s1p, e1p, s2p, e2p, s1n, e1n, s2n, e2n, px, py, d1, d2);
00496 }
00497
00498 else if (strcmp(argv[1],"Hysteretic2") == 0 || strcmp(argv[1],"Hysteretic02") == 0) {
00499 if (argc < 19) {
00500 opserr << "WARNING invalid number of arguments\n";
00501 printCommand(argc,argv);
00502 opserr << "Want: uniaxialMaterial Hysteretic02 tag? s1p? e1p? s2p? e2p? s3p? e3p? s1n? e1n? s2n? e1n? s3n? e3n? px? py? d1? d2?" << endln;
00503 return 0;
00504 }
00505
00506 double s1p, e1p, s2p, e2p, s3p, e3p;
00507 double s1n, e1n, s2n, e2n, s3n, e3n;
00508 double px, py, d1, d2;
00509
00510 if (Tcl_GetDouble(interp, argv[3], &s1p) != TCL_OK) {
00511 opserr << "WARNING invalid s1p\n";
00512 printCommand(argc, argv);
00513 return 0;
00514 }
00515 if (Tcl_GetDouble(interp, argv[4], &e1p) != TCL_OK) {
00516 opserr << "WARNING invalid e1p\n";
00517 printCommand(argc, argv);
00518 return 0;
00519 }
00520 if (Tcl_GetDouble(interp, argv[5], &s2p) != TCL_OK) {
00521 opserr << "WARNING invalid s2p\n";
00522 printCommand(argc, argv);
00523 return 0;
00524 }
00525 if (Tcl_GetDouble(interp, argv[6], &e2p) != TCL_OK) {
00526 opserr << "WARNING invalid e2p\n";
00527 printCommand(argc, argv);
00528 return 0;
00529 }
00530 if (Tcl_GetDouble(interp, argv[7], &s3p) != TCL_OK) {
00531 opserr << "WARNING invalid s2p\n";
00532 printCommand(argc, argv);
00533 return 0;
00534 }
00535 if (Tcl_GetDouble(interp, argv[8], &e3p) != TCL_OK) {
00536 opserr << "WARNING invalid e2p\n";
00537 printCommand(argc, argv);
00538 return 0;
00539 }
00540 if (Tcl_GetDouble(interp, argv[9], &s1n) != TCL_OK) {
00541 opserr << "WARNING invalid s1n\n";
00542 printCommand(argc, argv);
00543 return 0;
00544 }
00545 if (Tcl_GetDouble(interp, argv[10], &e1n) != TCL_OK) {
00546 opserr << "WARNING invalid e1n\n";
00547 printCommand(argc, argv);
00548 return 0;
00549 }
00550 if (Tcl_GetDouble(interp, argv[11], &s2n) != TCL_OK) {
00551 opserr << "WARNING invalid s2n\n";
00552 printCommand(argc, argv);
00553 return 0;
00554 }
00555 if (Tcl_GetDouble(interp, argv[12], &e2n) != TCL_OK) {
00556 opserr << "WARNING invalid e2n\n";
00557 printCommand(argc, argv);
00558 return 0;
00559 }
00560 if (Tcl_GetDouble(interp, argv[13], &s3n) != TCL_OK) {
00561 opserr << "WARNING invalid s2n\n";
00562 printCommand(argc, argv);
00563 return 0;
00564 }
00565 if (Tcl_GetDouble(interp, argv[14], &e3n) != TCL_OK) {
00566 opserr << "WARNING invalid e2n\n";
00567 printCommand(argc, argv);
00568 return 0;
00569 }
00570 if (Tcl_GetDouble(interp, argv[15], &px) != TCL_OK) {
00571 opserr << "WARNING invalid px\n";
00572 printCommand(argc, argv);
00573 return 0;
00574 }
00575 if (Tcl_GetDouble(interp, argv[16], &py) != TCL_OK) {
00576 opserr << "WARNING invalid py\n";
00577 printCommand(argc, argv);
00578 return 0;
00579 }
00580 if (Tcl_GetDouble(interp, argv[17], &d1) != TCL_OK) {
00581 opserr << "WARNING invalid d1\n";
00582 printCommand(argc, argv);
00583 return 0;
00584 }
00585 if (Tcl_GetDouble(interp, argv[18], &d2) != TCL_OK) {
00586 opserr << "WARNING invalid d2\n";
00587 printCommand(argc, argv);
00588 return 0;
00589 }
00590
00591 theMaterial = new FedeasHyster2Material(tag, s1p, e1p, s2p, e2p, s3p, e3p, s1n, e1n, s2n, e2n, s3n, e3n, px, py, d1, d2);
00592 }
00593
00594 else if (strcmp(argv[1],"Steel1") == 0 || strcmp(argv[1],"Steel01") == 0) {
00595 if (argc < 6) {
00596 opserr << "WARNING invalid number of arguments\n";
00597 printCommand(argc,argv);
00598 opserr << "Want: uniaxialMaterial Steel01 tag? fy? E? b? <a1? a2? a3? a4?>" << endln;
00599 return 0;
00600 }
00601
00602 double fy, E, b;
00603 double a1, a2, a3, a4;
00604
00605 if (Tcl_GetDouble(interp, argv[3], &fy) != TCL_OK) {
00606 opserr << "WARNING invalid fy\n";
00607 printCommand(argc, argv);
00608 return 0;
00609 }
00610 if (Tcl_GetDouble(interp, argv[4], &E) != TCL_OK) {
00611 opserr << "WARNING invalid E\n";
00612 printCommand(argc, argv);
00613 return 0;
00614 }
00615 if (Tcl_GetDouble(interp, argv[5], &b) != TCL_OK) {
00616 opserr << "WARNING invalid b\n";
00617 printCommand(argc, argv);
00618 return 0;
00619 }
00620 if (argc > 9) {
00621 if (Tcl_GetDouble(interp, argv[6], &a1) != TCL_OK) {
00622 opserr << "WARNING invalid a1\n";
00623 printCommand(argc, argv);
00624 return 0;
00625 }
00626 if (Tcl_GetDouble(interp, argv[7], &a2) != TCL_OK) {
00627 opserr << "WARNING invalid a2\n";
00628 printCommand(argc, argv);
00629 return 0;
00630 }
00631 if (Tcl_GetDouble(interp, argv[8], &a3) != TCL_OK) {
00632 opserr << "WARNING invalid a3\n";
00633 printCommand(argc, argv);
00634 return 0;
00635 }
00636 if (Tcl_GetDouble(interp, argv[9], &a4) != TCL_OK) {
00637 opserr << "WARNING invalid a4\n";
00638 printCommand(argc, argv);
00639 return 0;
00640 }
00641 theMaterial = new FedeasSteel1Material(tag, fy, E, b, a1, a2, a3, a4);
00642 }
00643 else
00644 theMaterial = new FedeasSteel1Material(tag, fy, E, b);
00645 }
00646
00647 else if (strcmp(argv[1],"steel2") == 0) {
00648 if (argc < 6) {
00649 opserr << "WARNING invalid number of arguments\n";
00650 printCommand(argc,argv);
00651 opserr << "Want: uniaxialMaterial Steel02 tag? fy? E? b? <R0? cR1? cR2? <a1? a2? a3? a4?>>" << endln;
00652 return 0;
00653 }
00654
00655 double fy, E, b;
00656 double R0, cR1, cR2;
00657 double a1, a2, a3, a4;
00658
00659 if (Tcl_GetDouble(interp, argv[3], &fy) != TCL_OK) {
00660 opserr << "WARNING invalid fy\n";
00661 printCommand(argc, argv);
00662 return 0;
00663 }
00664 if (Tcl_GetDouble(interp, argv[4], &E) != TCL_OK) {
00665 opserr << "WARNING invalid E\n";
00666 printCommand(argc, argv);
00667 return 0;
00668 }
00669 if (Tcl_GetDouble(interp, argv[5], &b) != TCL_OK) {
00670 opserr << "WARNING invalid b\n";
00671 printCommand(argc, argv);
00672 return 0;
00673 }
00674 if (argc > 8) {
00675 if (Tcl_GetDouble(interp, argv[6], &R0) != TCL_OK) {
00676 opserr << "WARNING invalid R0\n";
00677 printCommand(argc, argv);
00678 return 0;
00679 }
00680 if (Tcl_GetDouble(interp, argv[7], &cR1) != TCL_OK) {
00681 opserr << "WARNING invalid cR1\n";
00682 printCommand(argc, argv);
00683 return 0;
00684 }
00685 if (Tcl_GetDouble(interp, argv[8], &cR2) != TCL_OK) {
00686 opserr << "WARNING invalid cR2\n";
00687 printCommand(argc, argv);
00688 return 0;
00689 }
00690 if (argc > 12) {
00691 if (Tcl_GetDouble(interp, argv[9], &a1) != TCL_OK) {
00692 opserr << "WARNING invalid a1\n";
00693 printCommand(argc, argv);
00694 return 0;
00695 }
00696 if (Tcl_GetDouble(interp, argv[10], &a2) != TCL_OK) {
00697 opserr << "WARNING invalid a2\n";
00698 printCommand(argc, argv);
00699 return 0;
00700 }
00701 if (Tcl_GetDouble(interp, argv[11], &a3) != TCL_OK) {
00702 opserr << "WARNING invalid a3\n";
00703 printCommand(argc, argv);
00704 return 0;
00705 }
00706 if (Tcl_GetDouble(interp, argv[12], &a4) != TCL_OK) {
00707 opserr << "WARNING invalid a4\n";
00708 printCommand(argc, argv);
00709 return 0;
00710 }
00711 theMaterial = new FedeasSteel2Material(tag, fy, E, b, R0, cR1, cR2, a1, a2, a3, a4);
00712 }
00713 else
00714 theMaterial = new FedeasSteel2Material(tag, fy, E, b, R0, cR1, cR2);
00715 }
00716 else
00717 theMaterial = new FedeasSteel2Material(tag, fy, E, b);
00718
00719 }
00720
00721 return theMaterial;
00722 }