TclModelBuilder.hGo 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.6 $ 00022 // $Date: 2006/09/05 23:11:08 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/modelbuilder/tcl/TclModelBuilder.h,v $ 00024 00025 // Written: fmk 00026 // Created: 07/99 00027 // Revision: A 00028 // 00029 // Description: This file contains the class definition for TclModelBuilder. 00030 // A TclModelBuilder adds the commands to create the model for the standard 00031 // models that can be generated using the elements released with the g3 00032 // framework. currently these elements include: 00033 // 1) linear-elastic 2 and 3d beam-column elements 00034 // 2) non-linear material truss 00035 // 3) non-linear 2 and 3d fiber-beam-column elements 00036 // 00037 // What: "@(#) TclModelBuilder.h, revA" 00038 00039 #ifndef TclModelBuilder_h 00040 #define TclModelBuilder_h 00041 00042 #include <ModelBuilder.h> 00043 00044 class SectionForceDeformation; 00045 class SectionRepres; 00046 class UniaxialMaterial; 00047 class NDMaterial; 00048 class TaggedObjectStorage; 00049 class YieldSurface_BC; 00050 class YS_Evolution; 00051 class PlasticHardeningMaterial; 00052 class CyclicModel; 00053 class DamageModel; 00054 class HystereticBackbone; 00055 class StiffnessDegradation; 00056 class UnloadingRule; 00057 class StrengthDegradation; 00058 00059 class CrdTransf2d; 00060 class CrdTransf3d; 00061 00062 #include <tcl.h> 00063 #include <tk.h> 00064 00065 class TclModelBuilder : public ModelBuilder 00066 { 00067 public: 00068 TclModelBuilder(Domain &theDomain,Tcl_Interp *interp, int ndm, int ndf); 00069 ~TclModelBuilder(); 00070 00071 int buildFE_Model(void); 00072 int getNDM(void) const; 00073 int getNDF(void) const; 00074 00075 // methods needed for the truss and fiber-beam elements for 00076 // adding/getting uniaxial material objects 00077 int addUniaxialMaterial(UniaxialMaterial &theMaterial); 00078 UniaxialMaterial *getUniaxialMaterial(int tag); 00079 00080 // methods needed for the continuum elements and generic section 00081 // models to add/get ND material models 00082 int addNDMaterial(NDMaterial &theMaterial); 00083 NDMaterial *getNDMaterial(int tag); 00084 00085 // methods needed for the nonlinear beam column elements to 00086 // add/get section objects 00087 int addSection(SectionForceDeformation &theSection); 00088 SectionForceDeformation *getSection(int tag); 00089 int addSectionRepres(SectionRepres &theSectionRepres); 00090 SectionRepres *getSectionRepres(int tag); 00091 00092 // methods needed for the frame elements to 00093 // add/get cordinate transformation objects 00094 int addCrdTransf2d(CrdTransf2d &theCrdTransf); 00095 int addCrdTransf3d(CrdTransf3d &theCrdTransf); 00096 CrdTransf2d *getCrdTransf2d(int tag); 00097 CrdTransf3d *getCrdTransf3d(int tag); 00098 00099 // methods needed for the yield surfaces 00100 int addYieldSurface_BC(YieldSurface_BC &theYS); 00101 YieldSurface_BC *getYieldSurface_BC(int tag); 00102 int addYS_EvolutionModel(YS_Evolution &theModel); 00103 YS_Evolution *getYS_EvolutionModel(int tag); 00104 int addPlasticMaterial(PlasticHardeningMaterial &theMaterial); 00105 PlasticHardeningMaterial *getPlasticMaterial(int tag); 00106 int addCyclicModel(CyclicModel &theModel); 00107 CyclicModel *getCyclicModel(int tag); 00108 int addDamageModel(DamageModel &theModel); 00109 DamageModel *getDamageModel(int tag); 00110 00111 #ifdef OO_HYSTERETIC 00112 // methods needed to add/get material state relationships 00113 int addStiffnessDegradation(StiffnessDegradation &theDegr); 00114 StiffnessDegradation *getStiffnessDegradation(int tag); 00115 int addUnloadingRule(UnloadingRule &theDegr); 00116 UnloadingRule *getUnloadingRule(int tag); 00117 int addStrengthDegradation(StrengthDegradation &theDegr); 00118 StrengthDegradation *getStrengthDegradation(int tag); 00119 int addHystereticBackbone(HystereticBackbone &theBackbone); 00120 HystereticBackbone *getHystereticBackbone(int tag); 00121 #endif 00122 00123 private: 00124 int ndm; // space dimension of the mesh 00125 int ndf; // number of degrees of freedom per node 00126 00127 TaggedObjectStorage *theUniaxialMaterials; 00128 TaggedObjectStorage *theNDMaterials; 00129 TaggedObjectStorage *theSections; 00130 TaggedObjectStorage *theSectionRepresents; 00131 TaggedObjectStorage *the2dGeomTransfs; 00132 TaggedObjectStorage *the3dGeomTransfs; 00133 TaggedObjectStorage *theYieldSurface_BCs; 00134 TaggedObjectStorage *thePlasticMaterials; 00135 TaggedObjectStorage *theYS_EvolutionModels; 00136 TaggedObjectStorage *theCycModels; 00137 TaggedObjectStorage *theDamageModels; 00138 00139 #ifdef OO_HYSTERETIC 00140 TaggedObjectStorage *theStiffnessDegradations; 00141 TaggedObjectStorage *theUnloadingRules; 00142 TaggedObjectStorage *theStrengthDegradations; 00143 TaggedObjectStorage *theHystereticBackbones; 00144 #endif 00145 00146 protected: 00147 Tcl_Interp *theInterp; 00148 }; 00149 00150 #endif 00151 00152 00153 00154 00155 00156 00157 |