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

Node.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.1.1.1 $
00022 // $Date: 2000/09/15 08:23:19 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/domain/node/Node.h,v $
00024                                                                         
00025                                                                         
00026 #ifndef Node_h
00027 #define Node_h
00028 
00029 // File: ~/domain/node/Node.h
00030 //
00031 // Written: fmk 
00032 // Created: 11/96
00033 // Revision: A
00034 //
00035 // Purpose: This file contains the class interface for Node.
00036 // A Node provides the abstraction for a node in the FEM.
00037 // Nodes have original position, trial displacement, velocity and 
00038 // acceleration and committed displacement, velocity and acceleration 
00039 // (the last committed() trial quantities).
00040 //
00041 // What: "@(#) Node.h, revA"
00042 
00043 #include <DomainComponent.h>
00044 #include <Element.h>
00045 #include <Vector.h>
00046 #include <Matrix.h>
00047 #include <Channel.h>
00048 #include <Renderer.h>
00049 
00050 #include <DOF_Group.h>
00051 
00066 class Node : public DomainComponent
00067 {
00068   public:
00070     Node(int classTag);
00078     Node(int tag, int classTag);
00079 
00086     Node(int tag, int ndof, double Crd1);
00087 
00098     Node(int tag, int ndof, double Crd1, double Crd2);
00099 
00110     Node(int tag, int ndof, double Crd1, double Crd2, double Crd3);
00111 
00122     Node(const Node *theCopy);        
00123 
00124     
00126     virtual ~Node();
00127 
00129     virtual int  getNumberDOF(void) const;    
00131     virtual void setDOF_GroupPtr(DOF_Group *theDOF_Grp);
00132 
00134     virtual DOF_Group *getDOF_GroupPtr(void);
00135 
00137     virtual const Vector &getCrds(void) const;
00138 
00139     // public methods for obtaining committed and trial 
00141     virtual const Vector &getDisp(void);
00143     virtual const Vector &getVel(void);
00145     virtual const Vector &getAccel(void);    
00147     virtual const Vector &getIncrDisp(void);
00149     virtual const Vector &getIncrDeltaDisp(void);
00150 
00152     virtual const Vector &getTrialDisp(void);    
00154     virtual const Vector &getTrialVel(void);    
00156     virtual const Vector &getTrialAccel(void);    
00157 
00159     virtual int setTrialDisp(const Vector &);    
00161     virtual int setTrialVel(const Vector &);    
00163     virtual int setTrialAccel(const Vector &);        
00164 
00166     virtual int incrTrialDisp(const Vector &);    
00168     virtual int incrTrialVel(const Vector &);    
00170     virtual int incrTrialAccel(const Vector &);        
00171     
00173     virtual void zeroUnbalancedLoad(void);
00175     virtual int addUnbalancedLoad(const Vector &load, double fact = 1.0); 
00177     virtual int addInertiaLoadToUnbalance(const Vector &accel, double fact = 1.0);    
00179     virtual const Vector &getUnbalancedLoad(void);     
00181     virtual const Vector &getUnbalancedLoadIncInertia(void);        
00182 
00184     virtual int commitState();
00186     virtual int revertToLastCommit();    
00188     virtual int revertToStart();        
00189 
00191     virtual const Matrix &getMass(void);
00193     virtual int setMass(const Matrix &theMass);
00195     virtual int setNumColR(int numCol);
00197     virtual int setR(int row, int col, double Value);
00199     virtual const Vector &getRV(const Vector &V);        
00200 
00202     virtual int setNumEigenvectors(int numVectorsToStore);
00204     virtual int setEigenvector(int mode, const Vector &eigenVector);
00206     virtual const Matrix &getEigenvectors(void);
00207     
00209     virtual int sendSelf(int commitTag, Channel &theChannel);
00211     virtual int recvSelf(int commitTag, Channel &theChannel, 
00212     FEM_ObjectBroker &theBroker);
00214     virtual void Print(ostream &s, int flag = 0);
00216     virtual int displaySelf(Renderer &theRenderer, int displayMode, float fact);
00217     
00218   private:
00219     // priavte methods used to create the Vector objects 
00221     int createDisp(void);
00223     int createVel(void);
00225     int createAccel(void); 
00226 
00228     int numberDOF;                    
00229     DOF_Group *theDOF_GroupPtr;       
00230     Vector *Crd;                      
00231     Vector *commitDisp, *commitVel, *commitAccel; 
00232     Vector *trialDisp, *trialVel, *trialAccel;     
00233     Vector *unbalLoad;                
00234     Vector *incrDisp;
00236     Vector *incrDeltaDisp;
00237     
00239     double *disp, *vel, *accel; // double arrays holding the displ, 
00241 
00242     int dbTag1, dbTag2, dbTag3, dbTag4; 
00243     Matrix *R;                          
00244     Matrix *mass;                       
00245     Vector *unbalLoadWithInertia;       
00246     
00248     Matrix *theEigenvectors;
00249 };
00250 
00251 #endif
00252 
Copyright Contact Us