TclPyTzQzMaterialCommand.cpp

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 1999, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** Developed by:                                                      **
00015 **   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
00016 **   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
00017 **   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
00018 **                                                                    **
00019 ** ****************************************************************** */
00020 
00021 // $Revision: 1.5 $
00022 // $Date: 2003/10/07 20:57:39 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/PY/TclPyTzQzMaterialCommand.cpp,v $
00024 
00025 #include <TclModelBuilder.h>
00026 
00027 //PY Springs: RWBoulanger and BJeremic
00028 #include <Domain.h>    // RWB for PyLiq1
00029 #include <PySimple1.h> // RWB
00030 #include <TzSimple1.h> // RWB
00031 #include <QzSimple1.h> // RWB
00032 #include <PyLiq1.h>    // RWB
00033 #include <TzLiq1.h>    // RWB
00034 
00035 #include <Vector.h>
00036 #include <string.h>
00037 
00038 static void printCommand(int argc, TCL_Char **argv)
00039 {
00040     opserr << "Input command: ";
00041     for (int i=0; i<argc; i++)
00042         opserr << argv[i] << " ";
00043     opserr << endln;
00044 } 
00045 
00046 UniaxialMaterial *
00047 TclModelBuilder_addPyTzQzMaterial(ClientData clientData, Tcl_Interp *interp, int argc, 
00048                                   TCL_Char **argv, TclModelBuilder *theTclBuilder, Domain *theDomain)
00049 {
00050         if (argc < 3) {
00051                 opserr << "WARNING insufficient number of arguments\n";
00052                 printCommand(argc, argv);
00053                 return 0;
00054         }
00055 
00056         int tag;
00057         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00058             opserr << "WARNING invalid uniaxialMaterial tag\n";
00059                 printCommand(argc, argv);
00060             return 0;
00061         }
00062 
00063         UniaxialMaterial *theMaterial = 0;
00064 
00065 //  INSERTING THE EXTRA LINES FOR PySimple1 //////////////////////////
00066 
00068         if (strcmp(argv[1],"PySimple1") == 0) {
00069         if (argc < 7) {
00070             opserr << "WARNING insufficient arguments\n";
00071             printCommand(argc,argv);
00072             opserr << "Want: uniaxialMaterial PySimple1 tag? soilType? pult? y50? drag? dashpot? " << endln;
00073             return 0;
00074         }
00075 
00076         int tag, soilType;
00077         double pult, y50, drag, dashpot;
00078 
00079         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00080             opserr << "WARNING invalid uniaxialMaterial PySimple1 tag" << endln;
00081             return 0;           
00082         }
00083 
00084         if (Tcl_GetInt(interp, argv[3], &soilType) != TCL_OK) {
00085             opserr << "WARNING invalid soilType\n";
00086             opserr << "uniaxialMaterial PySimple1: " << tag << endln;
00087             return 0;   
00088         }
00089 
00090         if (Tcl_GetDouble(interp, argv[4], &pult) != TCL_OK) {
00091             opserr << "WARNING invalid pult\n";
00092             opserr << "uniaxialMaterial PySimple1: " << tag << endln;
00093             return 0;
00094         }
00095 
00096         if (Tcl_GetDouble(interp, argv[5], &y50) != TCL_OK) {
00097             opserr << "WARNING invalid y50\n";
00098             opserr << "uniaxialMaterial PySimple1: " << tag << endln;
00099             return 0;   
00100         }
00101 
00102         if (Tcl_GetDouble(interp, argv[6], &drag) != TCL_OK) {
00103             opserr << "WARNING invalid drag\n";
00104             opserr << "uniaxialMaterial PySimple1: " << tag << endln;
00105             return 0;   
00106         }
00107 
00108         if (argc == 7) dashpot = 0.0;
00109 
00110         if (argc > 7) {
00111                 if (Tcl_GetDouble(interp, argv[7], &dashpot) != TCL_OK) {
00112                         opserr << "WARNING invalid dashpot\n";
00113                         opserr << "uniaxialMaterial PySimple1: " << tag << endln;
00114                         return 0;       
00115                 }
00116         }
00117 
00118         // Parsing was successful, allocate the material
00119         theMaterial = new PySimple1(tag,MAT_TAG_PySimple1,soilType, pult, y50, drag, dashpot);
00120     }
00121 
00122 //  INSERTING THE EXTRA LINES FOR PyLiq1 //////////////////////////
00123 
00125         else if (strcmp(argv[1],"PyLiq1") == 0) {
00126         if (argc < 11) {
00127             opserr << "WARNING insufficient arguments\n";
00128             printCommand(argc,argv);
00129             opserr << "Want: uniaxialMaterial PyLiq1 tag? soilType? pult? y50? drag? dashpot? pRes? solidElem1? solidElem2?" << endln;
00130             return 0;
00131         }
00132  
00133         int tag, soilType, solidElem1, solidElem2;
00134         double pult, y50, drag, dashpot,pRes;
00135  
00136         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00137             opserr << "WARNING invalid uniaxialMaterial PyLiq1 tag" << endln;
00138             return 0;           
00139         }
00140  
00141         if (Tcl_GetInt(interp, argv[3], &soilType) != TCL_OK) {
00142             opserr << "WARNING invalid soilType\n";
00143             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00144             return 0;   
00145         }
00146  
00147         if (Tcl_GetDouble(interp, argv[4], &pult) != TCL_OK) {
00148             opserr << "WARNING invalid pult\n";
00149             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00150             return 0;
00151         }
00152  
00153         if (Tcl_GetDouble(interp, argv[5], &y50) != TCL_OK) {
00154             opserr << "WARNING invalid y50\n";
00155             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00156             return 0;   
00157         }
00158  
00159         if (Tcl_GetDouble(interp, argv[6], &drag) != TCL_OK) {
00160             opserr << "WARNING invalid drag\n";
00161             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00162             return 0;   
00163         }
00164  
00165         if (Tcl_GetDouble(interp, argv[7], &dashpot) != TCL_OK) {
00166             opserr << "WARNING invalid dashpot\n";
00167             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00168             return 0;   
00169         }
00170  
00171         if (Tcl_GetDouble(interp, argv[8], &pRes) != TCL_OK) {
00172             opserr << "WARNING invalid pRes\n";
00173             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00174             return 0;   
00175         }
00176         
00177         if (Tcl_GetInt(interp, argv[9], &solidElem1) != TCL_OK) {
00178             opserr << "WARNING invalid solidElem\n";
00179             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00180             return 0;   
00181         }
00182         
00183         if (Tcl_GetInt(interp, argv[10], &solidElem2) != TCL_OK) {
00184             opserr << "WARNING invalid solidElem\n";
00185             opserr << "uniaxialMaterial PyLiq1: " << tag << endln;
00186             return 0;   
00187         }
00188  
00189         // Parsing was successful, allocate the material
00190         theMaterial = new PyLiq1(tag, MAT_TAG_PyLiq1,soilType, pult, y50, drag, dashpot,
00191                                                         pRes,solidElem1, solidElem2, theDomain);
00192      }
00193 
00194 //  INSERTING THE EXTRA LINES FOR QzSimple1 //////////////////////////
00196 
00197         else if (strcmp(argv[1],"QzSimple1") == 0) {
00198         if (argc < 6) {
00199             opserr << "WARNING insufficient arguments\n";
00200             printCommand(argc,argv);
00201             opserr << "Want: uniaxialMaterial QzSimple1 tag? QzType? Qult? z50? suction? dashpot? " << endln;
00202             return 0;
00203         }
00204 
00205         int tag, QzType;
00206         double Qult, z50, suction, dashpot;
00207 
00208         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00209             opserr << "WARNING invalid uniaxialMaterial QzSimple1 tag" << endln;
00210             return 0;           
00211         }
00212 
00213         if (Tcl_GetInt(interp, argv[3], &QzType) != TCL_OK) {
00214             opserr << "WARNING invalid QzType\n";
00215             opserr << "uniaxialMaterial QzSimple1: " << tag << endln;
00216             return 0;   
00217         }
00218 
00219         if (Tcl_GetDouble(interp, argv[4], &Qult) != TCL_OK) {
00220             opserr << "WARNING invalid Qult\n";
00221             opserr << "uniaxialMaterial QzSimple1: " << tag << endln;
00222             return 0;
00223         }
00224 
00225         if (Tcl_GetDouble(interp, argv[5], &z50) != TCL_OK) {
00226             opserr << "WARNING invalid z50\n";
00227             opserr << "uniaxialMaterial QzSimple1: " << tag << endln;
00228             return 0;   
00229         }
00230 
00231         if (argc == 6) {
00232                 suction = 0.0;
00233                 dashpot = 0.0;
00234         }
00235 
00236         if (argc > 6) {
00237                 if (Tcl_GetDouble(interp, argv[6], &suction) != TCL_OK) {
00238                     opserr << "WARNING invalid suction\n";
00239                         opserr << "uniaxialMaterial QzSimple1: " << tag << endln;
00240                         return 0;
00241                 }
00242                 if (Tcl_GetDouble(interp, argv[7], &dashpot) != TCL_OK) {
00243                         opserr << "WARNING invalid dashpot\n";
00244                         opserr << "uniaxialMaterial QzSimple1: " << tag << endln;
00245                         return 0;       
00246                 }
00247         }
00248 
00249         // Parsing was successful, allocate the material
00250         theMaterial = new QzSimple1(tag, QzType, Qult, z50, suction, dashpot);
00251     }
00252 
00253 
00254 //  INSERTING THE EXTRA LINES FOR TzSimple1 //////////////////////////
00255 
00257         else if (strcmp(argv[1],"TzSimple1") == 0) {
00258         if (argc < 6) {
00259             opserr << "WARNING insufficient arguments\n";
00260             printCommand(argc,argv);
00261             opserr << "Want: uniaxialMaterial TzSimple1 tag? tzType? tult? z50? dashpot? " << endln;
00262             return 0;
00263         }
00264 
00265         int tag, tzType;
00266         double tult, z50, dashpot;
00267 
00268         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00269             opserr << "WARNING invalid uniaxialMaterial TzSimple1 tag" << endln;
00270             return 0;           
00271         }
00272 
00273         if (Tcl_GetInt(interp, argv[3], &tzType) != TCL_OK) {
00274             opserr << "WARNING invalid tzType\n";
00275             opserr << "uniaxialMaterial TzSimple1: " << tag << endln;
00276             return 0;   
00277         }
00278 
00279         if (Tcl_GetDouble(interp, argv[4], &tult) != TCL_OK) {
00280             opserr << "WARNING invalid tult\n";
00281             opserr << "uniaxialMaterial TzSimple1: " << tag << endln;
00282             return 0;
00283         }
00284 
00285         if (Tcl_GetDouble(interp, argv[5], &z50) != TCL_OK) {
00286             opserr << "WARNING invalid z50\n";
00287             opserr << "uniaxialMaterial TzSimple1: " << tag << endln;
00288             return 0;   
00289         }
00290 
00291         if (argc == 6) dashpot = 0.0;
00292 
00293         if (argc > 6) {
00294                 if (Tcl_GetDouble(interp, argv[6], &dashpot) != TCL_OK) {
00295                         opserr << "WARNING invalid dashpot\n";
00296                         opserr << "uniaxialMaterial TzSimple1: " << tag << endln;
00297                         return 0;       
00298                 }
00299         }
00300 
00301         // Parsing was successful, allocate the material
00302         theMaterial = new TzSimple1(tag, MAT_TAG_TzSimple1, tzType, tult, z50, dashpot);
00303     }
00304 
00305         //  INSERTING THE EXTRA LINES FOR TzLiq1 //////////////////////////
00306 
00308         else if (strcmp(argv[1],"TzLiq1") == 0) {
00309         if (argc < 9) {
00310             opserr << "WARNING insufficient arguments\n";
00311             printCommand(argc,argv);
00312             opserr << "Want: uniaxialMaterial TzLiq1 tag? tzType? tult? z50? dashpot? solidElem1? solidElem2?" << endln;
00313             return 0;
00314         }
00315  
00316         int tag, tzType, solidElem1, solidElem2;
00317         double tult, z50, dashpot;
00318  
00319         if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00320             opserr << "WARNING invalid uniaxialMaterial TzLiq1 tag" << endln;
00321             return 0;           
00322         }
00323  
00324         if (Tcl_GetInt(interp, argv[3], &tzType) != TCL_OK) {
00325             opserr << "WARNING invalid tzType\n";
00326             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00327             return 0;   
00328         }
00329  
00330         if (Tcl_GetDouble(interp, argv[4], &tult) != TCL_OK) {
00331             opserr << "WARNING invalid tult\n";
00332             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00333             return 0;
00334         }
00335  
00336         if (Tcl_GetDouble(interp, argv[5], &z50) != TCL_OK) {
00337             opserr << "WARNING invalid z50\n";
00338             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00339             return 0;   
00340         }
00341  
00342         if (Tcl_GetDouble(interp, argv[6], &dashpot) != TCL_OK) {
00343             opserr << "WARNING invalid dashpot\n";
00344             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00345             return 0;   
00346         }
00347  
00348         if (Tcl_GetInt(interp, argv[7], &solidElem1) != TCL_OK) {
00349             opserr << "WARNING invalid solidElem\n";
00350             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00351             return 0;   
00352         }
00353         
00354         if (Tcl_GetInt(interp, argv[8], &solidElem2) != TCL_OK) {
00355             opserr << "WARNING invalid solidElem\n";
00356             opserr << "uniaxialMaterial TzLiq1: " << tag << endln;
00357             return 0;   
00358         }
00359  
00360         // Parsing was successful, allocate the material
00361         theMaterial = new TzLiq1(tag, MAT_TAG_TzLiq1,tzType, tult, z50, dashpot,
00362                                                         solidElem1, solidElem2, theDomain);
00363      }
00364  
00366 
00367         return theMaterial;
00368 }

Generated on Mon Oct 23 15:05:21 2006 for OpenSees by doxygen 1.5.0