TclModelBuilder.h

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.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 

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