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

DOF_Group.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: 2001/05/26 06:20:26 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/dof_grp/DOF_Group.h,v $
00024                                                                         
00025                                                                         
00026 #ifndef DOF_Group_h
00027 #define DOF_Group_h
00028 
00029 // File: ~/analysis/dof_grp/DOF_Group.h
00030 // 
00031 // Written: fmk 
00032 // Created: 11/96
00033 // Revision: A
00034 //
00035 // Description: This file contains the class definition for DOF_Group.
00036 // A DOF_Group object is instantiated by the ConstraintHandler for 
00037 // every unconstrained node in the domain. The constrained nodes require 
00038 // specialised types of DOF_Group; which deal with the constraints. DOF_Group
00039 // objects can handle 0 boundary constraints; if the eqn number of a DOF is 
00040 // less than START_EQN_NUM a value of 0.0 is set for disp, vel and accel when
00041 // a setNode*(Vector &) is invoked.
00042 //
00043 // What: "@(#) DOF_Group.h, revA"
00044 
00045 #include <ID.h>
00046 
00047 #include <Node.h>
00048 #include <Vector.h>
00049 #include <Matrix.h>
00050 #include <TransientIntegrator.h>
00051 #include <Integrator.h>
00052 
00071 class DOF_Group
00072 {
00073   public:
00075     DOF_Group(int tag, Node *myNode);
00076 
00078     DOF_Group(int tag, int ndof);    
00080     virtual ~DOF_Group();    
00081 
00083     virtual void setID(int dof, int value);
00085     virtual void setID(const ID &values);
00087     virtual const ID &getID(void) const;
00088 
00090     virtual int getTag(void) const;
00092     virtual int getNodeTag(void) const;
00094     virtual int getNumDOF(void) const;    
00096     virtual int getNumFreeDOF(void) const;
00098     virtual int getNumConstrainedDOF(void) const;
00099 
00101     virtual const Matrix &getTangent(Integrator *theIntegrator);
00103     virtual void  zeroTangent(void);
00105     virtual void  addMtoTang(double fact = 1.0);    
00106 
00108     virtual const Vector &getUnbalance(Integrator *theIntegrator);
00110     virtual void  zeroUnbalance(void);
00112     virtual void  addPtoUnbalance(double fact = 1.0);
00114     virtual void  addPIncInertiaToUnbalance(double fact = 1.0);    
00116     virtual void  addM_Force(const Vector &Udotdot, double fact = 1.0);        
00117 
00119     virtual const Vector & getCommittedDisp(void);
00121     virtual const Vector & getCommittedVel(void);
00123     virtual const Vector & getCommittedAccel(void);
00124     
00126     virtual void setNodeDisp(const Vector &u);
00128     virtual void setNodeVel(const Vector &udot);
00130     virtual void setNodeAccel(const Vector &udotdot);
00131 
00133     virtual void incrNodeDisp(const Vector &u);
00135     virtual void incrNodeVel(const Vector &udot);
00137     virtual void incrNodeAccel(const Vector &udotdot);
00138 
00139 
00141     virtual void setEigenvector(int mode, const Vector &eigenvalue);
00142  
00144     virtual Matrix *getT(void);
00145     
00146   protected:
00148     void  addLocalM_Force(const Vector &Udotdot, double fact = 1.0);     
00149 
00151     Vector *unbalance;
00153     Matrix *tangent;
00155     Node *myNode;
00156     
00157   private:
00159     int myTag;
00161     ID  myID;
00163     int numDOF;
00164 
00166     static Matrix errMatrix;
00168     static Vector errVect;
00170     static Matrix **theMatrices; 
00171     static Vector **theVectors;  
00172     static int numDOFs;           // number of objects    
00173 };
00174 
00175 #endif
00176 
Copyright Contact Us