ThreePointCurve.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.1 $
00022 // $Date: 2006/02/07 23:15:55 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/limitState/limitCurve/ThreePointCurve.h,v $
00024 
00025 
00026 // Written: kje
00027 // Created: 08/01
00028 // Modified: 07/02
00029 // Revision: A
00030 //
00031 // Description: This file contains the class definition for 
00032 // ThreePointCurve. Defines the curve used by HystereticMaterial  
00033 // to determine if a limit state has been reached.
00034 
00035 
00036 #ifndef ThreePointCurve_h
00037 #define ThreePointCurve_h
00038 
00039 #define TAG_ThreePointCurve     1972 //???????? 
00040 
00041 #include <LimitCurve.h>
00042 
00043 class Element;
00044 class Domain;
00045 
00046 class ThreePointCurve : public LimitCurve
00047 {
00048   public:
00049         ThreePointCurve(int tag, int eleTag, Domain *theDomain, 
00050                 double x1, double y1,
00051                 double x2, double y2,
00052                 double x3, double y3,
00053                 double Kdeg, double Fres,
00054                 int defType, int forType,
00055                 int ndI = 0, int ndJ = 0, int dof = 0, int perpDirn = 0);
00056         ThreePointCurve();
00057     ~ThreePointCurve();
00058 
00059     LimitCurve *getCopy (void);
00060 
00061         int checkElementState(double springForce);
00062 
00063         double getDegSlope(void);
00064         double getResForce(void);
00065         double getUnbalanceForce(void);
00066 
00067         int sendSelf(int commitTag, Channel &theChannel);  
00068         int recvSelf(int commitTag, Channel &theChannel, 
00069                 FEM_ObjectBroker &theBroker);    
00070     
00071         void Print(OPS_Stream &s, int flag =0);
00072 
00073         double findLimit(double input);
00074 
00075         int revertToStart(void);        
00076 
00077   protected:
00078     
00079   private:
00080         // Associated beam-colum element information
00081         int eleTag;                     // tag for associated beam column element
00082         Element *theElement;// element pointer
00083         Domain *theDomain;      // needed to retrieve element pointer
00084 
00085         int stateFlag;  // state of hysteretic material
00086                                         // stateFlag = 0: prior to failure
00087                                         // stateFlag = 1: first time limit surface is reached
00088                                         // stateFlag = 2: on limit surface after first failure
00089                                         // stateFlag = 3: off limit surface after first failure
00090 
00091         double Kdeg;    // degrading slope for hysteretic material after failure
00092         double Fres;    // residual capacity for hysteretic material after failure (assumed to be positive)
00093         int defType, forType; // flags indicating the axes of the limit state surface
00094                                                   //    defType = 1 for max chord rotation
00095                                                   //                = 2 for drift based on displ of nodes ndI and ndJ
00096                               //    forType = 0 for force in associated hysteretic material
00097                                                   //            = 1 for shear from beam-column element
00098                                                   //            = 2 for axial load from beam-column element
00099         double x1;              // corner points of limit surface
00100         double x2;
00101         double x3;
00102         double y1;
00103         double y2;
00104         double y3;
00105 
00106         int ndI;                // nodes for determining interstory drift
00107         int ndJ;
00108         int dof;                // degree of freedom in which drift is desired
00109         int perpDirn;   // perpendicular direction to dof to get distance between nodes
00110         double oneOverL;// 1/dist between nodes
00111 
00112         int count; //for debugging
00113 
00114 };
00115 
00116 
00117 #endif

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