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

FE_Element.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/03/29 05:36:55 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/fe_ele/FE_Element.h,v $
00024                                                                         
00025                                                                         
00026 #ifndef FE_Element_h
00027 #define FE_Element_h
00028 
00029 // File: ~/analysis/fe_ele/FE_Element.h
00030 // 
00031 // Written: fmk 
00032 // Created: 11/96
00033 // Revision: A
00034 //
00035 // Description: This file contains the class definition for FE_Element.
00036 //
00037 // What: "@(#) FE_Element.h, revA"
00038 
00039 #include <ID.h>
00040 #include <Matrix.h>
00041 #include <Vector.h>
00042 
00043 #include <Element.h>
00044 #include <Integrator.h>
00045 #include <AnalysisModel.h>
00046 
00072 class FE_Element
00073 {
00074   public:
00076     FE_Element(Element *theElement);
00077 
00079     FE_Element(int numDOF_Group, int ndof);
00081     virtual ~FE_Element();    
00082 
00084     virtual const ID &getDOFtags(void) const;
00086     virtual const ID &getID(void) const;
00088     void setAnalysisModel(AnalysisModel &theModel);
00090     virtual int  setID(void);
00091     
00093     virtual const Matrix &getTangent(Integrator *theIntegrator);
00095     virtual const Vector &getResidual(Integrator *theIntegrator);
00096 
00098     virtual void  zeroTangent(void);
00100     virtual void  addKtToTang(double fact = 1.0);
00102     virtual void  addKsToTang(double fact = 1.0);    
00104     virtual void  addCtoTang(double fact = 1.0);    
00106     virtual void  addMtoTang(double fact = 1.0);    
00108     virtual int   setKc(void);
00110     virtual void  addKcToTang(double fact = 1.0);    
00112     virtual void  addKiToTang(double fact = 1.0);        
00113     
00115     virtual void  zeroResidual(void);    
00117     virtual void  addRtoResidual(double fact = 1.0);
00119     virtual void  addRIncInertiaToResidual(double fact = 1.0);    
00121     virtual void  addKtForce(const Vector &disp,  double fact = 1.0);
00123     virtual void  addKsForce(const Vector &disp,  double fact = 1.0);    
00125     virtual void  addKcForce(const Vector &disp,  double fact = 1.0);        
00127     virtual void  addKiForce(const Vector &disp,  double fact = 1.0);            
00129     virtual void  addD_Force(const Vector &vel,   double fact = 1.0);
00131     virtual void  addM_Force(const Vector &accel, double fact = 1.0);    
00132 
00134     virtual const Vector &getTangForce(const Vector &x, double fact = 1.0);
00136     virtual const Vector &getKtForce(const Vector &disp, double fcat = 1.0);
00138     virtual const Vector &getKsForce(const Vector &disp, double fcat = 1.0); 
00140     virtual const Vector &getD_Force(const Vector &vel, double fcat = 1.0);    
00142     virtual const Vector &getM_Force(const Vector &accel, double fcat = 1.0);
00144     virtual Integrator *getLastIntegrator(void);
00146     virtual const Vector &getLastResponse(void);
00147     
00148   protected:
00150     void  addLocalKtForce(const Vector &disp,  double fact = 1.0);
00152     void  addLocalKsForce(const Vector &disp,  double fact = 1.0);    
00154     void  addLocalKcForce(const Vector &disp,  double fact = 1.0);        
00156     void  addLocalKiForce(const Vector &disp,  double fact = 1.0);            
00158     void  addLocalD_Force(const Vector &vel,   double fact = 1.0);
00160     void  addLocalM_Force(const Vector &accel, double fact = 1.0);    
00161     
00163     ID myDOF_Groups;
00165     ID myID;
00166 
00167   private:
00169     int numDOF;
00171     AnalysisModel *theModel;
00173     Element *myEle;
00175     Vector *theResidual;
00177     Matrix *theTangent;
00179     Integrator *theIntegrator; 
00180     Matrix *Kc;                // the committed tangent
00181     
00183     static Matrix errMatrix;
00185     static Vector errVector;
00187     static Matrix **theMatrices; 
00188     static Vector **theVectors;  
00189     static int numFEs;           // number of objects
00190     
00191 
00192 };
00193 
00194 #endif
00195 
00196 
Copyright Contact Us