DispBeamColumn3d.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.12 $
00022 // $Date: 2006/08/04 18:44:02 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/dispBeamColumn/DispBeamColumn3d.h,v $
00024 
00025 // Written: MHS
00026 // Created: Feb 2001
00027 //
00028 // Description: This file contains the class definition for DispBeamColumn3d.
00029 // The element displacement field gives rise to constant axial strain,
00030 // linear curvature, and constant twist angle.
00031 
00032 #ifndef DispBeamColumn3d_h
00033 #define DispBeamColumn3d_h
00034 
00035 #ifndef _bool_h
00036 #include "bool.h"
00037 #endif
00038 
00039 #include <Element.h>
00040 #include <Matrix.h>
00041 #include <Vector.h>
00042 #include <ID.h>
00043 #include <GaussQuadRule1d01.h>
00044 
00045 class Node;
00046 class SectionForceDeformation;
00047 class CrdTransf3d;
00048 class Response;
00049 
00050 class DispBeamColumn3d : public Element
00051 {
00052   public:
00053     DispBeamColumn3d(int tag, int nd1, int nd2,
00054                      int numSections, SectionForceDeformation **s,
00055                      CrdTransf3d &coordTransf, double rho = 0.0);
00056     DispBeamColumn3d();
00057     ~DispBeamColumn3d();
00058 
00059     const char *getClassType(void) const {return "DispBeamColumn3d";};
00060 
00061     int getNumExternalNodes(void) const;
00062     const ID &getExternalNodes(void);
00063     Node **getNodePtrs(void);
00064 
00065     int getNumDOF(void);
00066     void setDomain(Domain *theDomain);
00067 
00068     // public methods to set the state of the element    
00069     int commitState(void);
00070     int revertToLastCommit(void);
00071     int revertToStart(void);
00072 
00073     // public methods to obtain stiffness, mass, damping and residual information    
00074     int update(void);
00075     const Matrix &getTangentStiff(void);
00076     const Matrix &getInitialStiff(void);
00077     const Matrix &getMass(void);
00078 
00079     void zeroLoad();
00080     int addLoad(ElementalLoad *theLoad, double loadFactor);
00081     int addInertiaLoadToUnbalance(const Vector &accel);
00082 
00083     const Vector &getResistingForce(void);
00084     const Vector &getResistingForceIncInertia(void);            
00085 
00086     // public methods for element output
00087     int sendSelf(int commitTag, Channel &theChannel);
00088     int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker 
00089                   &theBroker);
00090     int displaySelf(Renderer &theViewer, int displayMode, float fact);
00091     void Print(OPS_Stream &s, int flag =0);
00092 
00093     Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00094     int getResponse(int responseID, Information &eleInfo);
00095 
00096   protected:
00097     
00098   private:
00099     const Matrix &getInitialBasicStiff(void);
00100 
00101     int numSections;
00102     SectionForceDeformation **theSections; // pointer to the ND material objects
00103     CrdTransf3d *crdTransf;        // pointer to coordinate tranformation object 
00104 
00105     ID connectedExternalNodes; // Tags of quad nodes
00106 
00107     Node *theNodes[2];
00108 
00109     static Matrix K;            // Element stiffness, damping, and mass Matrix
00110     static Vector P;            // Element resisting force vector
00111 
00112     Vector Q;           // Applied nodal loads
00113     Vector q;           // Basic force
00114     double q0[5];  // Fixed end forces in basic system (no torsion)
00115     double p0[5];  // Reactions in basic system (no torsion)
00116 
00117     double rho;                 // Mass density per unit length
00118 
00119     static double workArea[];
00120 
00121     static GaussQuadRule1d01 quadRule;
00122 };
00123 
00124 #endif
00125 

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