TclModelBuilderYS_SectionCommand.cpp

Go to the documentation of this file.
00001 // @ rkaul@stanford.edu
00002 // @ ggd@stanford.edu
00003 
00004 #include <TclModelBuilder.h>
00005 #include <string.h>
00006 #include <Vector.h>
00007 
00008 #include <YieldSurface_BC.h>
00009 #include <YS_Section2D01.h>
00010 #include <YS_Section2D02.h>
00011 
00012 #include <SoilFootingSection2d.h>
00013 
00014 // Added by S.Gajan <sgajan@ucdavis.edu>
00015 
00016 
00017 static void printCommand(int argc, TCL_Char **argv)
00018 {
00019   opserr << "Input command: ";
00020   for (int i=0; i<argc; i++)
00021     opserr << argv[i] << " ";
00022   opserr << endln;
00023 } 
00024 
00025 SectionForceDeformation*
00026 TclModelBuilderYS_SectionCommand(ClientData clienData, Tcl_Interp *interp, int argc,
00027                                  TCL_Char **argv, TclModelBuilder *theBuilder)
00028 {
00029   if (argc < 3) {
00030     opserr << "WARNING insufficient number of arguments\n";
00031     printCommand(argc, argv);
00032     return 0;
00033   }
00034   
00035   int tag;
00036   if (Tcl_GetInt(interp, argv[2], &tag) != TCL_OK) {
00037     opserr << "WARNING invalid section tag\n";
00038     printCommand(argc, argv);
00039     return 0;
00040   }
00041   
00042   SectionForceDeformation *theModel = 0;
00043 
00044   if (strcmp(argv[1],"YS_Section2D01") == 0 ||
00045       strcmp(argv[1],"YS_Section2d01") == 0) {
00046 
00047     if (argc < 7) {
00048       opserr << "WARNING invalid number of arguments\n";
00049       printCommand(argc,argv);
00050       opserr << "Want: section YS_Section2D01 tag? E? A? Iz? ysTag? <algo?>" << endln;
00051       return 0;
00052     }
00053 
00054     int algo, ysTag;
00055     double E, A, Iz;  
00056     int indx = 3;
00057   
00058     if (Tcl_GetDouble (interp, argv[indx++], &E) != TCL_OK) {
00059       opserr << "WARNING invalid E" << endln;
00060       opserr << " section: " << tag << endln;
00061       return 0;
00062     }
00063   
00064     if (Tcl_GetDouble (interp, argv[indx++], &A) != TCL_OK) {
00065       opserr << "WARNING invalid A" << endln;
00066       opserr << " section: " << tag << endln;
00067       return 0;
00068     }
00069   
00070     if (Tcl_GetDouble (interp, argv[indx++], &Iz) != TCL_OK) {
00071       opserr << "WARNING invalid Iz" << endln;
00072       opserr << " section: " << tag << endln;
00073       return 0;
00074     }
00075 
00076     if (Tcl_GetInt (interp, argv[indx++], &ysTag) != TCL_OK) {
00077       opserr << "WARNING invalid ysTag" << endln;
00078       opserr << " section: " << tag << endln;
00079       return 0;
00080     }
00081     
00082     YieldSurface_BC *ys = theBuilder->getYieldSurface_BC(ysTag);
00083 
00084     if (ys == 0) {
00085       opserr << "WARNING yield surface does not exist\n";
00086       opserr << "yieldSurface: " << ysTag; 
00087       opserr << "\nsection YieldSurface: " << tag << endln;
00088       return 0;
00089     }
00090 
00091     bool useKr = true;
00092     if(argc > indx) {
00093       if (Tcl_GetInt(interp, argv[indx++], &algo) != TCL_OK) {
00094         opserr << "WARNING invalid algo" << endln;
00095         opserr << " section: " << tag << endln;
00096         return 0;
00097       }
00098       if(algo == 0)
00099         useKr = false;
00100     }
00101     
00102     theModel = new YS_Section2D01(tag,E, A, Iz, ys, useKr);
00103   }
00104 
00105   else if (strcmp(argv[1],"YS_Section2D02") == 0 ||
00106            strcmp(argv[1],"YS_Section2d02") == 0) {
00107 
00108     if (argc < 8) {
00109       opserr << "WARNING invalid number of arguments\n";
00110       printCommand(argc,argv);
00111       opserr << "Want: section YS_Section2D01 tag? E? A? Iz? maxPlastRot? ysTag? <algo?>" << endln;
00112       return 0;
00113     }
00114 
00115     int algo, ysTag;
00116     double E, A, Iz, maxPlstkRot;    
00117     int indx = 3;
00118     
00119     if (Tcl_GetDouble (interp, argv[indx++], &E) != TCL_OK) {
00120       opserr << "WARNING invalid E" << endln;
00121       opserr << " section: " << tag << endln;
00122       return 0;
00123     }
00124     
00125     if (Tcl_GetDouble (interp, argv[indx++], &A) != TCL_OK) {
00126       opserr << "WARNING invalid A" << endln;
00127       opserr << " section: " << tag << endln;
00128       return 0;
00129     }
00130     
00131     if (Tcl_GetDouble (interp, argv[indx++], &Iz) != TCL_OK) {
00132       opserr << "WARNING invalid Iz" << endln;
00133       opserr << " section: " << tag << endln;
00134       return 0;
00135     }
00136     
00137     if (Tcl_GetDouble (interp, argv[indx++], &maxPlstkRot) != TCL_OK) {
00138       opserr << "WARNING maxPlstkRot " << endln;
00139       opserr << " section: " << tag << endln;
00140       return 0;
00141     }
00142 
00143     if (Tcl_GetInt (interp, argv[indx++], &ysTag) != TCL_OK) {
00144       opserr << "WARNING invalid ysTag" << endln;
00145       opserr << " section: " << tag << endln;
00146       return 0;
00147     }
00148 
00149     YieldSurface_BC *ys = theBuilder->getYieldSurface_BC(ysTag);
00150 
00151     if (ys == 0) {
00152       opserr << "WARNING yield surface does not exist\n";
00153       opserr << "yieldSurface: " << ysTag; 
00154       opserr << "\nsection YieldSurface: " << tag << endln;
00155       return 0;
00156     }
00157 
00158     bool useKr = true;
00159     if(argc > indx) {
00160       if (Tcl_GetInt(interp, argv[indx++], &algo) != TCL_OK) {
00161         opserr << "WARNING invalid algo" << endln;
00162         opserr << " section: " << tag << endln;
00163         return 0;
00164       }
00165       if(algo == 0)
00166         useKr = false;
00167     }
00168      
00169     theModel = new YS_Section2D02(tag,E, A, Iz, maxPlstkRot, ys, useKr);    
00170   }
00171 
00172 // Added by S.Gajan <sgajan@ucdavis.edu>
00173 
00174 
00175 
00176  else if ((strcmp(argv[1], "soilFootingSection2d") == 0) ||
00177            (strcmp(argv[1], "SoilFootingSection2d") == 0) )  
00178   {
00179       
00180     if (argc < 10) {
00181       opserr << "WARNING invalid number of arguments\n";
00182       printCommand(argc,argv);
00183       opserr << "Want: section soilFootingSection2d tag? FS? Vult? L? Kv? dL?" << endln;
00184       return 0;
00185     }
00186       
00187     double FS, Vult, L, Kv, Kh, Rv, deltaL;
00188     int indx = 3;
00189     
00190     if (Tcl_GetDouble (interp, argv[indx++], &FS) != TCL_OK) {
00191       opserr << "WARNING invalid FS" << endln;
00192       opserr << " section: " << tag << endln;
00193       return 0;
00194     }
00195     
00196     if (Tcl_GetDouble (interp, argv[indx++], &Vult) != TCL_OK) {
00197       opserr << "WARNING invalid Vult" << endln;
00198       opserr << " section: " << tag << endln;
00199       return 0;
00200     }
00201 
00202     if (Tcl_GetDouble (interp, argv[indx++], &L) != TCL_OK) {
00203       opserr << "WARNING invalid L" << endln;
00204       opserr << " section: " << tag << endln;
00205       return 0;
00206     }
00207       
00208     if (Tcl_GetDouble (interp, argv[indx++], &Kv) != TCL_OK) {
00209       opserr << "WARNING invalid Kv" << endln;
00210       opserr << " section: " << tag << endln;
00211       return 0;
00212     }
00213     
00214     if (Tcl_GetDouble (interp, argv[indx++], &Kh) != TCL_OK) {
00215       opserr << "WARNING invalid Kh" << endln;
00216       opserr << " section: " << tag << endln;
00217       return 0;
00218     }
00219 
00220     if (Tcl_GetDouble (interp, argv[indx++], &Rv) != TCL_OK) {
00221       opserr << "WARNING invalid Rv" << endln;
00222       opserr << " section: " << tag << endln;
00223       return 0;
00224     }
00225 
00226     if (Tcl_GetDouble (interp, argv[indx++], &deltaL) != TCL_OK) {
00227       opserr << "WARNING invalid Kv" << endln;
00228       opserr << " section: " << tag << endln;
00229       return 0;
00230     }
00231 
00232     theModel = new SoilFootingSection2d (tag, FS, Vult, L, Kv, Kh, Rv, deltaL);
00233   }
00234 
00235 
00236   return theModel;
00237 }

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