AxialCurve.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.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 ¶m); 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 |