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

DomainDecompositionAnalysis.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:16 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/analysis/DomainDecompositionAnalysis.h,v $
00024                                                                         
00025                                                                         
00026 // File: ~/analysis/method/DomainDecompositionAnalysis.h
00027 // 
00028 // Written: fmk 
00029 // Created: Tue Sept 17 16:34:47: 1996
00030 // Revision: A
00031 //
00032 // Description: This file contains the class definition for 
00033 // DomainDecompositionAnalysis. DomainDecompositionAnalysis is a subclass 
00034 // of AnalysisAnalysis, it is used when performing a domain decomposition
00035 // analysis. It provides methods which can be invoked by a subdomain to
00036 // perform the numerical computations required.
00037 //
00038 // What: "@(#) DomainDecompositionAnalysis.h, revA"
00039 
00040 #ifndef DomainDecompositionAnalysis_h
00041 #define DomainDecompositionAnalysis_h
00042 
00043 #ifndef _bool_h
00044 #include <bool.h>
00045 #endif
00046 
00047 #include <Analysis.h>
00048 #include <Matrix.h>
00049 #include <Vector.h>
00050 #include <MovableObject.h>
00051 
00052 #include <ConstraintHandler.h>
00053 #include <DOF_Numberer.h>
00054 #include <AnalysisModel.h>
00055 #include <IncrementalIntegrator.h>
00056 #include <LinearSOE.h>
00057 #include <DomainSolver.h>
00058 #include <DomainDecompAlgo.h>
00059 #include <Subdomain.h>
00060 #include <Vector.h>
00061 
00098 class DomainDecompositionAnalysis: public Analysis, public MovableObject
00099 {
00100   public:
00105     DomainDecompositionAnalysis(Subdomain &theDomain);
00106 
00107 
00112     DomainDecompositionAnalysis(int classTag, 
00113 
00114     Subdomain &theDomain);    
00115     
00118     DomainDecompositionAnalysis(Subdomain &theDomain,
00119 
00120      ConstraintHandler &theHandler,
00121      DOF_Numberer &theNumberer,
00122      AnalysisModel &theModel,
00123      DomainDecompAlgo &theSolnAlgo,     
00124      IncrementalIntegrator &theIntegrator, 
00125      LinearSOE &theSOE,
00126      DomainSolver &theSolver);
00127 
00128 
00133     virtual ~DomainDecompositionAnalysis();
00134 
00135     
00139     virtual int  analyze(void);
00140 
00145     virtual int domainChanged(void);
00146 
00147 
00153     virtual int  getNumExternalEqn(void);
00154 
00156     virtual int  getNumInternalEqn(void);
00157 
00159     virtual int  computeInternalResponse(void);
00161     virtual int  formTangent(void);
00163     virtual int  formResidual(void);
00165     virtual int  formTangVectProduct(Vector &force);
00167     virtual const Matrix &getTangent(void);
00169     virtual const Vector &getResidual(void);
00171     virtual const Vector &getTangVectProduct(void);
00172     
00174     virtual int sendSelf(int commitTag, Channel &theChannel);
00176     virtual int recvSelf(int commitTag, Channel &theChannel, 
00177     FEM_ObjectBroker &theBroker);
00178     
00179   protected: 
00181     Subdomain  *getSubdomainPtr(void) const;
00183     ConstraintHandler  *getConstraintHandlerPtr(void) const;
00185     DOF_Numberer  *getDOF_NumbererPtr(void) const;
00187     AnalysisModel  *getAnalysisModelPtr(void) const;
00189     DomainDecompAlgo    *getDomainDecompAlgoPtr(void) const;        
00191     IncrementalIntegrator  *getIncrementalIntegratorPtr(void) const;    
00193     LinearSOE   *getLinSOEPtr(void) const;
00195     DomainSolver        *getDomainSolverPtr(void) const;
00196     
00197 
00198     
00199   private:
00201     Subdomain        *theSubdomain;
00203     ConstraintHandler       *theHandler;    
00205     DOF_Numberer       *theNumberer;
00207     AnalysisModel       *theModel;
00209     DomainDecompAlgo       *theAlgorithm;
00211     IncrementalIntegrator    *theIntegrator;        
00213     LinearSOE        *theSOE;
00215     DomainSolver      *theSolver;
00216 
00218     Vector        *theResidual;
00220     int numEqn;
00222     int numExtEqn;
00223 
00224     // the following 2 variables are used to allow formResidual()
00225     // and formTangVectProduct() to be called before formTangent()
00226     // - this must be allowed as typical elements will not have to fromTangent
00228     bool tangFormed;
00230     int tangFormedCount; // saves the expense of computing formTangent() 
00232     int domainStamp;      
00233 };
00234 
00235 #endif
00236 
00237 
00238 
00239 
00240 
00241 
00242 
00243 
00244 
00245 
00246 
Copyright Contact Us