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

BeamWithHinges3d.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/BeamWithHinges3d.h,v $
00024                                                                         
00025                                                                         
00027 // File:  ~/Src/element/beamWithHinges/BeamWithHinges3d.h
00028 //
00029 // Written by MHS
00030 // 
00031 // Written:  June 2000
00032 //
00033 // Purpose:  This header file contains the prototype
00034 // for BeamWithHinges3d.  The element uses hinges (passed as
00035 // object pointers) at the element ends.  The middle section
00036 // is analyzed elastically, while the hinge ends return
00037 // a section flexibility sampled at their middle points.  The element
00038 // calculates a space frame (12x12) stiffness matrix from this info.
00039 //
00040 
00041 #ifndef BeamWithHinges3d_h
00042 #define BeamWithHinges3d_h
00043 
00044 #include <Element.h>
00045 #include <Matrix.h>
00046 #include <Vector.h>
00047 #include <ID.h>
00048 
00049 #include <Node.h>
00050 #include <Channel.h>
00051 #include <FEM_ObjectBroker.h>
00052 
00053 #include <SectionForceDeformation.h>
00054 
00055 #include <CrdTransf3d.h>
00056 #include <Response.h>
00057 #include <Renderer.h>
00058 
00060 class BeamWithHinges3d: public Element
00061 {
00062   public:
00064     BeamWithHinges3d ();
00065     
00067     BeamWithHinges3d (int tag, int nodeI, int nodeJ,
00068         double E, double Iz, double Iy, double A,
00069         double G, double J,  double alpha,
00070         SectionForceDeformation &sectionRefI, double hingeIlen, 
00071         SectionForceDeformation &sectionRefJ, double hingeJlen,
00072         CrdTransf3d &coordTrans, double shearL = 1.0,
00073         double massDensPerUnitLength = 0.0, int max = 1, double tol = 1.0e-10);
00074     
00076     BeamWithHinges3d (int tag, int nodeI, int nodeJ,
00077         double E, double Iz, double Iy, double A,
00078         double G, double J, double alpha,
00079         SectionForceDeformation &sectionRefI, double hingeIlen, 
00080         SectionForceDeformation &sectionRefJ, double hingeJlen,
00081         CrdTransf3d &coordTrans, const Vector &distLoad,
00082         double shearL = 1.0, double massDensPerUnitLength = 0.0,
00083         int max = 1, double tol = 1.0e-10);
00084     
00086     ~BeamWithHinges3d();
00087     
00089     int getNumExternalNodes (void) const;
00091     const ID &getExternalNodes (void);
00093     int getNumDOF (void);
00095     void setDomain (Domain *theDomain);
00096 
00098     int commitState (void);
00100     int revertToLastCommit (void);
00102     int revertToStart (void);
00103 
00105     const Matrix &getTangentStiff (void);
00107     const Matrix &getSecantStiff (void);
00109     const Matrix &getDamp (void);
00111     const Matrix &getMass (void);
00112 
00114     void zeroLoad (void);
00116     int addLoad (const Vector &moreLoad);
00118  int addInertiaLoadToUnbalance(const Vector &accel);
00120     const Vector &getResistingForce (void);
00122     const Vector &getResistingForceIncInertia (void);
00123 
00125     int sendSelf (int commitTag, Channel &theChannel);
00127     int recvSelf (int commitTag, Channel &theChannel, 
00128     FEM_ObjectBroker &theBroker);
00129 
00131  Response *setResponse (char **argv, int argc, Information &info);
00133     int getResponse (int responseID, Information &info);
00134     
00136     int setParameter (char **argv, int argc, Information &info);
00138     int updateParameter (int parameterID, Information &info);
00139     
00141     void Print (ostream &s, int flag = 0);
00143  int displaySelf(Renderer &theViewer, int displayMode, float fact);
00144     
00145   protected:
00146     
00147   private:
00148     
00150     void setNodePtrs (Domain *theDomain);
00152     void getGlobalDispls (Vector &dg);
00154     void getGlobalAccels (Vector &ag);
00156     void setStiffMatrix (void);
00158     void setMass (void);
00159     
00161     CrdTransf3d *theCoordTransf;
00162     
00164     void getForceInterpMatrix (Matrix &b, double x, const ID &c, int &shearKeyVY, int &shearKeyVZ);
00166     void getDistrLoadInterpMatrix (Matrix &bp, double x, const ID &c);
00167     
00169     void setHinges (void);
00171     void setElasticFlex (void);
00172     
00175      
00176     double E, Iz, Iy, A, G, J, alpha, L;
00178     double massDens;
00180     double hingeIlen, hingeJlen;
00181       
00183     ID connectedExternalNodes;    
00185     Node *node1Ptr, *node2Ptr; 
00187     SectionForceDeformation *sectionI, *sectionJ;
00189     Matrix K;
00191     Matrix m;
00193     Matrix d;
00194 
00196     Matrix fElastic;
00198     Matrix vElastic;
00199   
00201     Matrix b1, bp1;
00203     Matrix b3, bp3;
00204 
00206     Matrix fs1, fs3;
00207     
00209  Vector sr1, sr3;
00210 
00212     Vector e1, e3;
00213     
00215     Vector UePrev;
00217     Vector P;
00219     Vector Pinert;
00221     Matrix kb;
00223     Vector q;
00225     Vector load;
00227     Vector prevDistrLoad;
00228   
00230     Vector distrLoadCommit;
00232     Vector UeCommit;
00234     Matrix kbCommit;
00236     Vector qCommit;
00237     
00239     bool initialFlag;
00240     
00242     double shearLength;
00244     int shearIkeyVY, shearJkeyVY;
00246     int shearIkeyVZ, shearJkeyVZ;    
00247 
00249     double shearWeightIVY, shearWeightIVZ;
00251     double shearWeightJVY, shearWeightJVZ;
00252     
00254     int maxIter;
00256     double tolerance;
00257 };
00258 
00259 #endif
00260 ÿ
Copyright Contact Us