DispBeamColumn2d.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.16 $
00022 // $Date: 2006/09/05 22:59:03 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/dispBeamColumn/DispBeamColumn2d.h,v $
00024 
00025 // Written: MHS
00026 // Created: Feb 2001
00027 //
00028 // Description: This file contains the class definition for DispBeamColumn2d.
00029 // The element displacement field gives rise to constant axial strain and
00030 // linear curvature.
00031 
00032 #ifndef DispBeamColumn2d_h
00033 #define DispBeamColumn2d_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 <BeamIntegration.h>
00044 
00045 class Node;
00046 class SectionForceDeformation;
00047 class CrdTransf2d;
00048 class Response;
00049 
00050 class DispBeamColumn2d : public Element
00051 {
00052   public:
00053     DispBeamColumn2d(int tag, int nd1, int nd2,
00054                      int numSections, SectionForceDeformation **s,
00055                      BeamIntegration &bi, CrdTransf2d &coordTransf,
00056                      double rho = 0.0);
00057     DispBeamColumn2d();
00058     ~DispBeamColumn2d();
00059 
00060     const char *getClassType(void) const {return "DispBeamColumn2d";};
00061 
00062     int getNumExternalNodes(void) const;
00063     const ID &getExternalNodes(void);
00064     Node **getNodePtrs(void);
00065 
00066     int getNumDOF(void);
00067     void setDomain(Domain *theDomain);
00068 
00069     // public methods to set the state of the element    
00070     int commitState(void);
00071     int revertToLastCommit(void);
00072     int revertToStart(void);
00073 
00074     // public methods to obtain stiffness, mass, damping and residual information    
00075     int update(void);
00076     const Matrix &getTangentStiff(void);
00077     const Matrix &getInitialStiff(void);
00078     const Matrix &getMass(void);
00079 
00080     void zeroLoad();
00081     int addLoad(ElementalLoad *theLoad, double loadFactor);
00082     int addInertiaLoadToUnbalance(const Vector &accel);
00083 
00084     const Vector &getResistingForce(void);
00085     const Vector &getResistingForceIncInertia(void);            
00086 
00087     // public methods for element output
00088     int sendSelf(int commitTag, Channel &theChannel);
00089     int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker 
00090                   &theBroker);
00091     int displaySelf(Renderer &theViewer, int displayMode, float fact);
00092     void Print(OPS_Stream &s, int flag =0);
00093 
00094     Response *setResponse(const char **argv, int argc, Information &eleInfo, OPS_Stream &s);
00095     int getResponse(int responseID, Information &eleInfo);
00096 
00097     // AddingSensitivity:BEGIN //////////////////////////////////////////
00098     int setParameter(const char **argv, int argc, Parameter &param);
00099     int            updateParameter(int parameterID, Information &info);
00100     int            activateParameter(int parameterID);
00101     const Vector & getResistingForceSensitivity(int gradNumber);
00102     const Matrix & getKiSensitivity(int gradNumber);
00103     const Matrix & getMassSensitivity(int gradNumber);
00104     int            commitSensitivity(int gradNumber, int numGrads);
00105     // AddingSensitivity:END ///////////////////////////////////////////
00106 
00107   protected:
00108     
00109   private:
00110     const Matrix &getInitialBasicStiff(void);
00111 
00112     int numSections;
00113     SectionForceDeformation **theSections; // pointer to the ND material objects
00114     CrdTransf2d *crdTransf;        // pointer to coordinate tranformation object 
00115 
00116     BeamIntegration *beamInt;
00117 
00118     ID connectedExternalNodes; // Tags of quad nodes
00119 
00120     Node *theNodes[2];
00121 
00122     static Matrix K;            // Element stiffness, damping, and mass Matrix
00123     static Vector P;            // Element resisting force vector
00124 
00125     Vector Q;           // Applied nodal loads
00126     Vector q;           // Basic force
00127     double q0[3];  // Fixed end forces in basic system
00128     double p0[3];  // Reactions in basic system
00129 
00130     double rho;                 // Mass density per unit length
00131 
00132     static double workArea[];
00133 
00134     // AddingSensitivity:BEGIN //////////////////////////////////////////
00135     int parameterID;
00136     // AddingSensitivity:END ///////////////////////////////////////////
00137 };
00138 
00139 #endif
00140 

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