IncrementalIntegrator.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.8 $
00022 // $Date: 2006/09/05 23:05:34 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/IncrementalIntegrator.h,v $
00024                                                                         
00025                                                                         
00026 #ifndef IncrementalIntegrator_h
00027 #define IncrementalIntegrator_h
00028 
00029 // File: ~/analysis/integrator/IncrementalIntegrator.h
00030 // 
00031 // Written: fmk 
00032 // Created: Tue Sept 17 15:54:47: 1996
00033 // Revision: A
00034 //
00035 // Description: This file contains the interface for IncrementalIntegrator. 
00036 // IncrementalIntegrator is an algorithmic class for setting up the finite 
00037 // element equations in an incremental analysis and for updating the nodal
00038 // response quantities based on the values in the soln vector.
00039 //
00040 // What: "@(#) IncrementalIntegrator.h, revA"
00041 
00042 #include <Integrator.h>
00043 
00044 #ifndef _bool_h
00045 #include <bool.h>
00046 #endif
00047 
00048 class LinearSOE;
00049 class AnalysisModel;
00050 class FE_Element;
00051 class DOF_Group;
00052 class Vector;
00053 
00054 #define CURRENT_TANGENT 0
00055 #define INITIAL_TANGENT 1
00056 #define CURRENT_SECANT  2
00057 #define INITIAL_THEN_CURRENT_TANGENT  3
00058 #define NO_TANGENT  4
00059 #define SECOND_TANGENT 5
00060 
00061 class IncrementalIntegrator : public Integrator
00062 {
00063   public:
00064     IncrementalIntegrator(int classTag);
00065     virtual ~IncrementalIntegrator();
00066 
00067     virtual void setLinks(AnalysisModel &theModel,
00068                           LinearSOE &theSOE);
00069 
00070     // methods to set up the system of equations
00071     virtual int  formTangent(int statusFlag = CURRENT_TANGENT);    
00072     virtual int  formUnbalance(void);
00073 
00074     // pure virtual methods to define the FE_ELe and DOF_Group contributions
00075     virtual int formEleTangent(FE_Element *theEle) =0;
00076     virtual int formNodTangent(DOF_Group *theDof) =0;    
00077     virtual int formEleResidual(FE_Element *theEle) =0;
00078     virtual int formNodUnbalance(DOF_Group *theDof) =0;    
00079 
00080     // methods to update the domain
00081     virtual int newStep(double deltaT);
00082     virtual int update(const Vector &deltaU) =0;
00083     virtual int commit(void);
00084     virtual int revertToLastStep(void);
00085     virtual int initialize(void);
00086 
00087 // AddingSensitivity:BEGIN //////////////////////////////////
00088     virtual int revertToStart();
00089 // AddingSensitivity:END ////////////////////////////////////
00090     
00091     // method introduced for domain decomposition
00092     virtual int getLastResponse(Vector &result, const ID &id);
00093     
00094   protected:
00095     LinearSOE *getLinearSOEPtr(void) const;
00096     AnalysisModel *getAnalysisModelPtr(void) const;
00097     virtual int  formNodalUnbalance(void);        
00098     virtual int  formElementResidual(void);            
00099     int statusFlag;
00100     
00101   private:
00102     LinearSOE *theSOE;
00103     AnalysisModel *theAnalysisModel;
00104 };
00105 
00106 #endif
00107 

Generated on Mon Oct 23 15:04:58 2006 for OpenSees by doxygen 1.5.0