Joint2D.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.9 $
00022 // $Date: 2006/09/05 21:13:27 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/joint/Joint2D.h,v $
00024 
00025 // Written: Arash & GGD
00026 // Created: 03/02
00027 // Revision: Arash
00028 
00029 // Joint2D.h: interface for the Joint2d class.
00030 //
00032 
00033 #ifndef Joint2D_h
00034 #define Joint2D_h
00035 
00036 #include <bool.h>
00037 #include <Matrix.h>
00038 #include <Vector.h>
00039 #include <Element.h>
00040 #include <ID.h>
00041 #include <Domain.h>
00042 
00043 class Node;
00044 class UniaxialMaterial;
00045 class Response;
00046 class DamageModel;
00047 
00048 class Joint2D : public Element  
00049 {
00050 public:
00051   Joint2D();
00052 
00053   Joint2D(int tag, int nd1, int nd2, int nd3, int nd4, int IntNodeTag,
00054         UniaxialMaterial &spring1,
00055         UniaxialMaterial &spring2,
00056         UniaxialMaterial &spring3,
00057         UniaxialMaterial &spring4,
00058         UniaxialMaterial &springC,
00059         Domain *theDomain,
00060         int LrgDisp);
00061   
00062     Joint2D(int tag, int nd1, int nd2, int nd3, int nd4, int IntNodeTag,
00063         UniaxialMaterial &spring1,
00064         UniaxialMaterial &spring2,
00065         UniaxialMaterial &spring3,
00066         UniaxialMaterial &spring4,
00067         UniaxialMaterial &springC,
00068         Domain *theDomain,
00069         int LrgDisp,
00070         DamageModel &dmg1,
00071         DamageModel &dmg2,
00072         DamageModel &dmg3,
00073         DamageModel &dmg4,
00074         DamageModel &dmgC);
00075 
00076   ~Joint2D();
00077 
00078   const char *getClassType(void) const {return "Joint2D";};
00079   
00080   // methods dealing with domain
00081   int   getNumExternalNodes(void) const;
00082   const ID &getExternalNodes(void);
00083   Node **getNodePtrs(void);
00084   int   getNumDOF(void);
00085   
00086   void  setDomain(Domain *theDomain);  
00087   bool  isSubdomain(void) { return false; } ;
00088         
00089   // methods dealing with committed state and update
00090   int update(void);
00091   int commitState(void);
00092   int revertToLastCommit(void);
00093   int revertToStart(void);
00094   
00095   // methods to return the current linearized stiffness,
00096   // damping and mass matrices
00097   const Matrix &getTangentStiff(void);
00098   const Matrix &getInitialStiff(void);   
00099   const Matrix &getDamp(void);
00100   const Matrix &getMass(void);
00101         
00102   // methods for returning and applying loads
00103   //virtual Vector &getUVLoadVector(double q1, double q2);
00104   void  zeroLoad(void); 
00105   int addLoad(ElementalLoad *theLoad, double loadFactor);
00106   int addInertiaLoadToUnbalance(const Vector &accel);
00107 
00108   const Vector &getResistingForce(void);
00109   const Vector &getResistingForceIncInertia(void);     
00110 
00111   // method for graphics
00112   int   displaySelf(Renderer &theViewer, int displayMode, float fact);  
00113         
00114   // method for obtaining information specific to an element
00115   Response* setResponse(const char **argv, int argc, Information &eleInformation, OPS_Stream &s);
00116   int getResponse(int responseID, Information &eleInformation);
00117   int sendSelf(int commitTag, Channel &theChannel);
00118   int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00119   void Print(OPS_Stream &s, int flag =0);
00120 
00121     // AddingSensitivity:BEGIN //////////////////////////////////////////
00122     int   addInertiaLoadSensitivityToUnbalance(const Vector &accel, bool tag);
00123     int   setParameter(const char **argv, int argc, Parameter &param);
00124     const Vector & getResistingForceSensitivity(int gradNumber);
00125     const Matrix & getKiSensitivity(int gradNumber);
00126     const Matrix & getMassSensitivity(int gradNumber);
00127     int   commitSensitivity(int gradNumber, int numGrads);
00128     // AddingSensitivity:END ///////////////////////////////////////////
00129 
00130  protected:
00131   int   addMP_Joint(Domain *theDomain, int mpNum, int RnodeID, int CnodeID, int MainDOF, int FixedEnd, int LrgDispFlag );   
00132 
00133  private:
00134   UniaxialMaterial *theSprings[5]; 
00135   DamageModel *theDamages[5];
00136   ID            ExternalNodes;
00137   ID            InternalConstraints;
00138   int       fixedEnd[5];
00139   Node          *theNodes[5];
00140   Domain        *TheDomain;
00141   int           numDof, nodeDbTag, dofDbTag;
00142   static        Matrix K;
00143   static        Vector V;
00144 
00145   // AddingSensitivity:BEGIN //////////////////////////////////////////
00146   int parameterID;
00147   Vector *theLoadSens;
00148   // AddingSensitivity:END ///////////////////////////////////////////
00149 };
00150 
00151 #endif

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