BeamColumnJoint3d.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.3 $
00022 // $Date: 2006/08/04 22:22:37 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/joint/BeamColumnJoint3d.h,v $
00024                                                                         
00025 // Written: NM (nmitra@u.washington.edu)
00026 // Created: Feb 2003
00027 // Updated: September 2004
00028 //
00029 // Description: This file contains the class defination for beam-column joint.
00030 // This element is a 4 noded 24 dof (6 dof at each node) finite area super-element, being a slight
00031 // variation of the 2d one. The element takes in 13 different material types in order to simulate
00032 // the inelastic action observed in a reinforced beam column joint. Though it has 6 dof per node 
00033 // the out of the plane nodal dof are constrained or fixed and the inplane nodal dof are activated.
00034                                                                         
00035 #ifndef BeamColumnJoint3d_h
00036 #define BeamColumnJoint3d_h
00037 
00038 #include <Element.h>
00039 #include <ID.h>
00040 #include <Matrix.h>
00041 #include <Vector.h>
00042 #include <FileStream.h>
00043 #include <OPS_Stream.h>
00044 
00045 class Node;
00046 class Channel;
00047 class FEM_ObjectBroker;
00048 class Response;
00049 class Renderer;
00050 class UniaxialMaterial;
00051 
00052 
00053 class BeamColumnJoint3d : public Element
00054 {
00055  public:
00056   // default constructor
00057   BeamColumnJoint3d(); 
00058   
00059   // defined constructor
00060   BeamColumnJoint3d(int tag,int Nd1, int Nd2, int Nd3, int Nd4,
00061                     UniaxialMaterial& theMat1, UniaxialMaterial& theMat2,
00062                     UniaxialMaterial& theMat3, UniaxialMaterial& theMat4,
00063                     UniaxialMaterial& theMat5, UniaxialMaterial& theMat6,
00064                     UniaxialMaterial& theMat7, UniaxialMaterial& theMat8,
00065                     UniaxialMaterial& theMat9, UniaxialMaterial& theMat10,
00066                     UniaxialMaterial& theMat11, UniaxialMaterial& theMat12,
00067                     UniaxialMaterial& theMat13);
00068   
00069   BeamColumnJoint3d(int tag,int Nd1, int Nd2, int Nd3, int Nd4,
00070                     UniaxialMaterial& theMat1, UniaxialMaterial& theMat2,
00071                     UniaxialMaterial& theMat3, UniaxialMaterial& theMat4,
00072                     UniaxialMaterial& theMat5, UniaxialMaterial& theMat6,
00073                     UniaxialMaterial& theMat7, UniaxialMaterial& theMat8,
00074                     UniaxialMaterial& theMat9, UniaxialMaterial& theMat10,
00075                     UniaxialMaterial& theMat11, UniaxialMaterial& theMat12,
00076                     UniaxialMaterial& theMat13, double Hgtfac, double Wdtfac);
00077   
00078   // default destructor
00079   ~BeamColumnJoint3d();
00080 
00081     const char *getClassType(void) const {return "BeamColumnJoint3d";};
00082   
00084   bool  isSubdomain(void) { return false; } ;
00085   
00086   // get number of external nodes
00087   int getNumExternalNodes(void) const;
00088   
00089   // return connected external nodes
00090   const ID &getExternalNodes(void);
00091   Node **getNodePtrs(void);
00092   
00093   // return number of DOFs
00094   int getNumDOF(void);  
00095   
00096   // set domain performs check on dof and associativity with node
00097   void setDomain(Domain *theDomain);
00098   
00100   
00101   // commit state
00102   int commitState(void);
00103   
00104   // revert to last commit
00105   int revertToLastCommit(void);        
00106   
00107   // revert to start
00108   int revertToStart(void);        
00109   
00110   // determine current strain and set strain in material
00111   int update(void);
00112   
00115   
00116   // returns converged tangent stiffness matrix
00117   const Matrix &getTangentStiff(void);
00118   const Matrix &getInitialStiff(void);           
00119   
00120   // not required for this element formulation
00121   const Matrix &getDamp(void);    
00122   const Matrix &getMass(void);    
00123   
00124   // not required for this element formulation
00125   void zeroLoad(void);  
00126   int addLoad(ElementalLoad *theLoad, double loadFactor);
00127   int addInertiaLoadToUnbalance(const Vector &accel);
00128   
00129   // get converged residual
00130   const Vector &getResistingForce(void);
00131   
00132   // get converged residual with inertia terms
00133   const Vector &getResistingForceIncInertia(void);            
00134   
00135   // public methods for element output for parallel and database processing
00136   int sendSelf(int commitTag, Channel &theChannel);
00137   int recvSelf(int commitTag, Channel &theChannel, 
00138                FEM_ObjectBroker &theBroker);
00139   
00140   // display element graphically
00141   int displaySelf(Renderer &theViewer, int displayMode, float fact);    
00142   
00143   // print out element data
00144   void Print(OPS_Stream &s, int flag =0);    
00145   
00146   // implemented to print into file
00147   Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00148   int getResponse(int responseID, Information &eleInformation);
00149   
00150   int setParameter (char **argv, int argc, Information &info);
00151   int updateParameter (int parameterID, Information &info);
00152   
00153   
00154  protected:
00155   
00156  private:
00157   
00158   // private methods
00159   void getGlobalDispls(Vector&) ;
00160   void getBCJoint(void);
00161   void getdg_df(void);
00162   void getdDef_du(void);
00163   void matDiag(Vector, Matrix&);
00164   void getMatResponse(Vector, Vector&, Vector&);
00165   void formR(Vector);
00166   void formK(Vector);
00167   void formTransfMat();
00168   double getStepSize(double,double,Vector,Vector,Vector,Vector,double);
00169   
00170   // material info
00171   UniaxialMaterial **MaterialPtr;  // pointer to the 13 different materials
00172   
00173   // node info
00174   ID  connectedExternalNodes;   // contains the tags of the end nodes
00175   Node* nodePtr[4];             // pointers to four nodes
00176   
00177   int nodeDbTag, dofDbTag;
00178   
00179   // various other element parameters
00180   Vector Node1; Vector Node2; Vector Node3; Vector Node4;
00181   double elemActHeight;
00182   double elemActWidth;
00183   double elemWidth;
00184   double elemHeight;
00185   double HgtFac;               // distance in between the tension compression couple in the height direction 
00186   double WdtFac;               // distance in between the tension compression couple in the width direction      
00187   
00188   Vector Uecommit;             // vector of external commited displacements
00189   Vector UeIntcommit;          // vector of internal commited displacements   
00190   Vector UeprCommit;           // vector of previous external committed displacements
00191   Vector UeprIntCommit;        // vector of previous internal committed displacements  
00192   Matrix BCJoint;       // matrix describing relation between the component deformations and the external and internal deformations
00193   Matrix dg_df;         // matrix of derivative of internal equilibrium 
00194   Matrix dDef_du;       // matrix of a portion of BCJoint reqd. for static condensation
00195   
00196   Matrix K;               // element stiffness matrix
00197   Vector R;               // element residual matrix
00198   
00199   // static transformation matrices
00200   static Matrix Transf;
00201   static Matrix Tran;
00202   
00203 };
00204 
00205 #endif

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