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

Domain.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.3 $
00022 // $Date: 2001/03/29 04:00:33 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/domain/domain/Domain.h,v $
00024                                                                         
00025                                                                         
00026 // File: ~/domain/domain/Domain.h
00027 // 
00028 // Written: fmk 
00029 // Created: Fri Sep 20 15:27:47: 1996
00030 // Revision: A
00031 //
00032 // Description: This file contains the class definition for Domain.
00033 // Domain is a container class. The class is responsible for holding
00034 // and providing access to the Elements, Nodes, SP_Constraints 
00035 // MP_Constraints, and LoadPatterns.
00036 //
00037 // What: "@(#) Domain.h, revA"
00038 
00039 #ifndef Domain_h
00040 #define Domain_h
00041 
00042 #include <iostream.h>
00043 #include <Vector.h>
00044 
00045 #ifndef _bool_h
00046 #include <bool.h>
00047 #endif
00048 
00049 #include <Element.h>
00050 #include <Node.h>
00051 #include <SP_Constraint.h>
00052 #include <MP_Constraint.h>
00053 #include <NodalLoad.h>
00054 #include <ElementalLoad.h>
00055 #include <LoadPattern.h>
00056 
00057 #include <ElementIter.h>
00058 #include <NodeIter.h>
00059 #include <SP_ConstraintIter.h>
00060 #include <MP_ConstraintIter.h>
00061 #include <LoadPatternIter.h>
00062 
00063 #include <SingleDomEleIter.h>
00064 #include <SingleDomNodIter.h>
00065 #include <SingleDomSP_Iter.h>
00066 #include <SingleDomMP_Iter.h>
00067 #include <SingleDomAllSP_Iter.h>
00068 
00069 #include <Recorder.h>
00070 #include <Graph.h>
00071 #include <NodeGraph.h>
00072 #include <ElementGraph.h>
00073 #include <Channel.h>
00074 #include <FEM_ObjectBroker.h>
00075 
00076 #include <TaggedObjectStorage.h>
00077 
00107 class Domain
00108 {
00109   public:
00119     Domain();
00120 
00131     Domain(int numNodes, int numElements, int numSPs, int numMPs,
00132 
00133     int numLoadPatterns);
00134     
00138     Domain(TaggedObjectStorage &theNodesStorage,
00139 
00140     TaggedObjectStorage &theElementsStorage,
00141     TaggedObjectStorage &theMPsStorage,
00142     TaggedObjectStorage &theSPsStorage,
00143     TaggedObjectStorage &theLoadPatternsStorage);
00144 
00153     Domain(TaggedObjectStorage &theStorageType);
00154 
00155     
00165     virtual ~Domain();    
00166 
00167 
00169     virtual  bool addElement(Element *);
00182     virtual  bool addNode(Node *);
00183 
00185     virtual  bool addSP_Constraint(SP_Constraint *);
00186 
00188     virtual  bool addMP_Constraint(MP_Constraint *); 
00190     virtual  bool addLoadPattern(LoadPattern *);            
00191     
00193     virtual  bool addSP_Constraint(SP_Constraint *, int loadPatternTag); 
00195     virtual  bool addNodalLoad(NodalLoad *, int loadPatternTag);
00197     virtual  bool addElementalLoad(ElementalLoad *, int loadPatternTag);
00198     
00200     virtual void clearAll(void); 
00202     virtual Element       *removeElement(int tag);
00204     virtual Node          *removeNode(int tag);    
00206     virtual SP_Constraint *removeSP_Constraint(int tag);
00208     virtual MP_Constraint *removeMP_Constraint(int tag);    
00210     virtual LoadPattern   *removeLoadPattern(int loadTag);
00211 
00213     virtual NodalLoad     *removeNodalLoad(int tag, int loadPattern);
00215     virtual ElementalLoad *removeElementalLoad(int tag, int loadPattern);
00217     virtual SP_Constraint *removeSP_Constraint(int tag, int loadPattern);
00218     
00220     virtual  ElementIter       &getElements();
00222     virtual  NodeIter          &getNodes();
00224     virtual  SP_ConstraintIter &getSPs();
00226     virtual  MP_ConstraintIter &getMPs();
00228     virtual  LoadPatternIter   &getLoadPatterns();
00230     virtual  SP_ConstraintIter &getDomainAndLoadPatternSPs();
00231     
00233     virtual  Element       *getElement(int tag);
00235     virtual  Node          *getNode(int tag);
00237     virtual  SP_Constraint *getSP_Constraint(int tag);    
00239     virtual  MP_Constraint *getMP_Constraint(int tag);    
00241     virtual  LoadPattern   *getLoadPattern(int tag);        
00242 
00244     virtual double  getCurrentTime(void) const;
00246     virtual int getNumElements(void) const;
00248     virtual int getNumNodes(void) const;
00250     virtual int getNumSPs(void) const;
00252     virtual int getNumMPs(void) const;
00254     virtual int getNumLoadPatterns(void) const;            
00256     virtual const Vector &getPhysicalBounds(void); 
00257     
00259     virtual  Graph  &getElementGraph(void);
00261     virtual  Graph  &getNodeGraph(void);
00262     
00264     virtual  void setCommitTag(int newTag);     
00266     virtual  void setCurrentTime(double newTime);    
00268     virtual  void setCommittedTime(double newTime);        
00270     virtual  void applyLoad(double pseudoTime);
00272     virtual  void setLoadConstant(void);    
00274     virtual  int  initialize(void);    
00275     
00277     virtual  int  commit(void);
00279     virtual  int  revertToLastCommit(void);
00281     virtual  int  revertToStart(void);    
00283     virtual  int  update(void);
00284 
00285     
00287     virtual int setEigenvalues(const Vector &theEigenvalues);
00289     virtual const Vector &getEigenvalues(void);
00291     virtual double getTimeEigenvaluesSet(void);
00292     
00294     virtual int hasDomainChanged(void);
00296     virtual void setDomainChangeStamp(int newStamp);
00297     
00299     virtual int  addRecorder(Recorder &theRecorder);     
00301     virtual int  playback(int cTag);         
00303     virtual int  removeRecorders(void);
00304 
00306     virtual void Print(ostream &s, int flag =0);
00308     friend ostream &operator<<(ostream &s, Domain &M);    
00309 
00311     virtual int sendSelf(int commitTag, Channel &theChannel);  
00313     virtual int recvSelf(int commitTag, Channel &theChannel, 
00314     FEM_ObjectBroker &theBroker);    
00315 
00316   protected:    
00318     virtual void domainChange(void);    
00320     virtual int buildEleGraph(Graph *theEleGraph);
00322     virtual int buildNodeGraph(Graph *theNodeGraph);
00323     
00324   private:
00326     double currentTime;               
00327     double committedTime;             
00328     int    currentGeoTag;             
00329     bool   hasDomainChangedFlag;      
00330     int    theDbTag;                   
00331     int    lastGeoSendTag;            
00332     int dbEle, dbNod, dbSPs, dbMPs, dbLPs; 
00333 
00334     bool eleGraphBuiltFlag;
00336     bool nodeGraphBuiltFlag;
00337     
00339     Graph *theNodeGraph;
00341     Graph *theElementGraph;
00342 
00344     TaggedObjectStorage  *theElements;
00346     TaggedObjectStorage  *theNodes;
00348     TaggedObjectStorage  *theSPs;    
00350     TaggedObjectStorage  *theMPs;    
00352     TaggedObjectStorage  *theLoadPatterns;        
00353 
00355     SingleDomEleIter      *theEleIter;
00357     SingleDomNodIter     *theNodIter;
00359     SingleDomSP_Iter      *theSP_Iter;
00361     SingleDomMP_Iter      *theMP_Iter;
00363     LoadPatternIter       *theLoadPatternIter;        
00365     SingleDomAllSP_Iter   *allSP_Iter;
00366     
00368     Recorder **theRecorders;
00370     int numRecorders;    
00372     int commitTag;
00373     
00375     Vector theBounds;
00376     
00378     Vector *theEigenvalues;
00380     double theEigenvalueSetTime;
00381 };
00382 
00383 #endif
00384 
00385 
Copyright Contact Us