Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

BeamWithHinges2d.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.2 $
00022 // $Date: 2000/12/18 10:40:40 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/beamWithHinges/BeamWithHinges2d.h,v $
00024                                                                         
00025                                                                         
00027 // File:  ~/Src/element/beamWithHinges/BeamWithHinges2d.h
00028 //
00029 // Written by Matthew Peavy
00030 // 
00031 // Written:  Feb 14, 2000
00032 // Debugged: Feb 15, 2000
00033 // Revised:        , 200x
00034 //
00035 //
00036 //
00037 // Purpose:  This header file contains the prototype
00038 // for BeamWithHinges.  The element uses hinges (passed as
00039 // object pointers) at the element ends.  The middle section
00040 // is analyzed elastically, while the hinge ends return
00041 // a section flexibility sampled at their middle points.  The element
00042 // calculates a frame (6x6) stiffness matrix from this info.
00043 //
00044 
00045 #ifndef BeamWithHinges2d_h
00046 #define BeamWithHinges2d_h
00047 
00048 #include <Element.h>
00049 #include <Matrix.h>
00050 #include <Vector.h>
00051 #include <ID.h>
00052 
00053 #include <Node.h>
00054 #include <Channel.h>
00055 #include <FEM_ObjectBroker.h>
00056 
00057 #include <SectionForceDeformation.h>
00058 
00059 #include <CrdTransf2d.h>
00060 #include <Response.h>
00061 #include <Renderer.h>
00062 
00064 class BeamWithHinges2d: public Element
00065 {
00066   public:
00068     BeamWithHinges2d ();
00069     
00071     BeamWithHinges2d (int tag, int nodeI, int nodeJ,
00072         double E, double I, double A,
00073         double G, double alpha,
00074         SectionForceDeformation &sectionRefI, double hingeIlen, 
00075         SectionForceDeformation &sectionRefJ, double hingeJlen,
00076         CrdTransf2d &coordTrans, double shearL = 1.0,
00077         double massDensPerUnitLength = 0.0, int max = 1, double tol = 1.0e-10);
00078     
00080     BeamWithHinges2d (int tag, int nodeI, int nodeJ,
00081         double E, double I, double A,
00082         double G, double alpha,
00083         SectionForceDeformation &sectionRefI, double hingeIlen, 
00084         SectionForceDeformation &sectionRefJ, double hingeJlen,
00085         CrdTransf2d &coordTrans, const Vector &distLoad,
00086         double shearL = 1.0, double massDensPerUnitLength = 0.0,
00087         int max = 1, double tol = 1.0e-10);
00088     
00090     ~BeamWithHinges2d();
00091     
00093     int getNumExternalNodes (void) const;
00095     const ID &getExternalNodes (void);
00097     int getNumDOF (void);
00099     void setDomain (Domain *theDomain);
00100 
00102     int commitState (void);
00104     int revertToLastCommit (void);
00106     int revertToStart (void);
00107 
00109     const Matrix &getTangentStiff (void);
00111     const Matrix &getSecantStiff (void);
00113     const Matrix &getDamp (void);
00115     const Matrix &getMass (void);
00116 
00118     void zeroLoad (void);
00120     int addLoad (const Vector &moreLoad);
00122  int addInertiaLoadToUnbalance(const Vector &accel);
00124     const Vector &getResistingForce (void);
00126     const Vector &getResistingForceIncInertia (void);
00127 
00129     int sendSelf (int commitTag, Channel &theChannel);
00131     int recvSelf (int commitTag, Channel &theChannel, 
00132     FEM_ObjectBroker &theBroker);
00133 
00135  Response *setResponse (char **argv, int argc, Information &info);
00137     int getResponse (int responseID, Information &info);
00138     
00140     int setParameter (char **argv, int argc, Information &info);
00142     int updateParameter (int parameterID, Information &info);
00143     
00145     void Print (ostream &s, int flag = 0);
00147     int displaySelf(Renderer &theViewer, int displayMode, float fact);
00148 
00149   protected:
00150     
00151   private:
00152     
00154     void setNodePtrs (Domain *theDomain);
00156     void getGlobalDispls (Vector &dg);
00158     void getGlobalAccels (Vector &ag);
00160     void setStiffMatrix (void);
00162     void setMass (void);
00163     
00165     CrdTransf2d *theCoordTransf;
00166     
00168     void getForceInterpMatrix (Matrix &b, double x, const ID &c, int &shearKey);
00170     void getDistrLoadInterpMatrix (Matrix &bp, double x, const ID &c);
00171     
00173     void setHinges (void);
00175     void setElasticFlex (void);
00176     
00179      
00180     double E, I, A, G, alpha, L;
00182     double massDens;
00184     double hingeIlen, hingeJlen;
00185       
00187     ID connectedExternalNodes;    
00189     Node *node1Ptr, *node2Ptr; 
00191     SectionForceDeformation *sectionI, *sectionJ;
00193     Matrix K;
00195     Matrix m;
00197     Matrix d;
00198 
00200     Matrix fElastic;
00202     Matrix vElastic;
00203   
00205     Matrix b1, bp1;
00207     Matrix b3, bp3;
00208 
00210     Matrix fs1, fs3;
00211     
00213  Vector sr1, sr3;
00214 
00216     Vector e1, e3;
00217 
00219     Vector UePrev;
00221     Vector P;
00223     Vector Pinert;
00225     Matrix kb;
00227     Vector q;
00229     Vector load;
00231     Vector prevDistrLoad;
00232   
00234     Vector distrLoadCommit;
00236     Vector UeCommit;
00238     Matrix kbCommit;
00240     Vector qCommit;
00241     
00243     bool initialFlag;
00244     
00246     double shearLength;
00248     int shearIkey, shearJkey;
00249     
00251     int maxIter;
00253     double tolerance;
00254 };
00255 
00256 #endif
00257 ÿ
Copyright Contact Us