AxialCurve.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.2 $
00022 // $Date: 2006/09/05 22:39:58 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/limitState/limitCurve/AxialCurve.h,v $
00024 
00025 // Written: kje
00026 // Created: 08/01
00027 // Modified: 07/02
00028 // Revision: A
00029 //
00030 // Description: This file contains the class definition for 
00031 // AxialCurve. Defines the curve used by LimitStateMaterial  
00032 // to determine if a limit state has been reached.
00033 
00034 
00035 #ifndef AxialCurve_h
00036 #define AxialCurve_h
00037 
00038 #define TAG_AxialCurve  1973 //???????? 
00039 
00040 #include <LimitCurve.h>
00041 #include <tcl.h>
00042 
00043 class Element;
00044 class Domain;
00045 
00046 class AxialCurve : public LimitCurve
00047 {
00048   public:
00049         AxialCurve (Tcl_Interp *theTclInterp, int tag, int eleTag, Domain *theDomain, 
00050                     double Fsw, double Kdeg, double Fres, //SDK
00051                     int defType, int forType, 
00052                     int ndI = 0, int ndJ = 0, int dof = 0, int perpDirn = 0,
00053                     double delta = 0.0, int eleRemove = 0);
00054         AxialCurve();
00055         ~AxialCurve();
00056 
00057     LimitCurve *getCopy (void);
00058 
00059         int checkElementState(double springForce);
00060 
00061         double getDegSlope(void);
00062         double getResForce(void);
00063         double getUnbalanceForce(void); // get change in axial load for next time step
00064 
00065         int sendSelf(int commitTag, Channel &theChannel);  
00066         int recvSelf(int commitTag, Channel &theChannel, 
00067                 FEM_ObjectBroker &theBroker);    
00068     
00069         void Print(OPS_Stream &s, int flag =0);
00070 
00071         double findLimit(double input);
00072 
00073         int revertToStart(void);  
00074         
00075 
00076         int    setParameter (const char **argv, int argc, Parameter &param);
00077         int    updateParameter          (int parameterID, Information &info);
00078 
00079 
00080 
00081   protected:
00082     
00083   private:
00084 
00085         Tcl_Interp *theTclInterp;
00086 
00087         // Associated beam-colum element information
00088         int eleTag;                     // tag for associated beam column element
00089         Element *theElement;// element pointer
00090         Domain *theDomain;      // needed to retrieve element pointer
00091 
00092         int stateFlag;  // state of limitstate material
00093                                         // stateFlag = 0: prior to failure
00094                                         // stateFlag = 1: first time limit surface is reached
00095                                         // stateFlag = 2: on limit surface after first failure
00096                                         // stateFlag = 3: off limit surface after first failure
00097                                         // stateFlag = 4: at residual axial capacity
00098 
00099         double dP;                 // change in axial load
00100         double dP_old;     // History variable SDK
00101         double deform_old; // History variable SDK
00102         double failDrift;   // drift at failure SDK
00103 
00104         double Fsw;             // Asw*fy*dcore/s
00105         
00106 
00107 
00108 
00109 
00110         double Kdeg;    // degrading slope for LimitState material after failure
00111         double Fres;    // residual capacity for LimitState material after failure (assumed to be positive)
00112         int defType, forType; // flags indicating the axes of the limit state surface
00113                                                   //    defType = 1 for max chord rotation
00114                                                   //                = 2 for drift based on displ of nodes ndI and ndJ
00115                               //    forType = 0 for force in associated LimitState material
00116                               //            = 1 for shear from beam-column element
00117                                                   //            = 2 for axial load from beam-column element
00118 
00119         int ndI;                // nodes for determining interstory drift
00120         int ndJ;
00121         int dof;                // degree of freedom in which drift is desired
00122         int perpDirn;   // perpendicular direction to dof to get distance between nodes
00123         double oneOverL;// 1/dist between nodes
00124 
00125         int eleRemove;  // option to remove element when failure is detected (not fully implemented)
00126                                         //   eleRemove = 0 (default) do not remove element
00127                                         //   eleRemove = 1 remove element after failure surface is exceeded
00128                                         //   eleRemove = 2 value after element has been removed
00129         double delta;   // drift ratio used to shift failure surface
00130 
00131 
00132         double theta2; //SDK
00133         double sigma;  //SDK
00134         double eps_normal; //SDK
00135 
00136         int stepCounter; //Terje
00137 
00138 
00139 
00140 
00141 
00142 };
00143 
00144 
00145 #endif
00146 

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