TransformationDOF_Group.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.5 $
00022 // $Date: 2005/08/03 19:12:26 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/dof_grp/TransformationDOF_Group.h,v $
00024                                                                         
00025                                                                         
00026 #ifndef TransformationDOF_Group_h
00027 #define TransformationDOF_Group_h
00028 
00029 // Written: fmk 
00030 // Created: 05/99
00031 // Revision: A
00032 //
00033 // Description: This file contains the class definition for 
00034 // TransformationDOF_Group. A TransformationDOF_Group object is 
00035 // instantiated by the TransformationConstraintHandler for 
00036 // every node in the domain which is constrained by an MP_Constraint
00037 // or an SP_Constrant.
00038 //
00039 // What: "@(#) TransformationDOF_Group.h, revA"
00040 
00041 #include <DOF_Group.h>
00042 
00043 class MP_Constraint;
00044 class SP_Constraint;
00045 class TransformationConstraintHandler;
00046 
00047 class TransformationDOF_Group: public DOF_Group
00048 {
00049   public:
00050     TransformationDOF_Group(int tag, Node *myNode, MP_Constraint *mp, TransformationConstraintHandler*);
00051     TransformationDOF_Group(int tag, Node *myNode, TransformationConstraintHandler *);    
00052     ~TransformationDOF_Group();    
00053     
00054     // methods dealing with the ID and transformation matrix
00055     int doneID(void);    
00056     const ID &getID(void) const; 
00057     virtual void setID(int dof, int value);    
00058     Matrix *getT(void);
00059     virtual int getNumDOF(void) const;    
00060     virtual int getNumFreeDOF(void) const;
00061     virtual int getNumConstrainedDOF(void) const;
00062     
00063     // methods to form the tangent
00064     const Matrix &getTangent(Integrator *theIntegrator);
00065 
00066     // methods to form the unbalance
00067     const Vector &getUnbalance(Integrator *theIntegrator);
00068     void  addM_Force(const Vector &Udotdot, double fact = 1.0);        
00069 
00070     const Vector &getTangForce(const Vector &x, double fact = 1.0);
00071     const Vector &getC_Force(const Vector &x, double fact = 1.0);
00072     const Vector &getM_Force(const Vector &x, double fact = 1.0);
00073     
00074     // methods to obtain committed responses from the nodes
00075     const Vector & getCommittedDisp(void);
00076     const Vector & getCommittedVel(void);
00077     const Vector & getCommittedAccel(void);
00078     
00079     // methods to update the trial response at the nodes
00080     void setNodeDisp(const Vector &u);
00081     void setNodeVel(const Vector &udot);
00082     void setNodeAccel(const Vector &udotdot);
00083 
00084     void incrNodeDisp(const Vector &u);
00085     void incrNodeVel(const Vector &udot);
00086     void incrNodeAccel(const Vector &udotdot);
00087 
00088     virtual void setEigenvector(int mode, const Vector &eigenvalue);
00089 
00090     int addSP_Constraint(SP_Constraint &theSP);
00091     int enforceSPs(void);
00092 
00093 // AddingSensitivity:BEGIN ////////////////////////////////////
00094     void addM_ForceSensitivity(const Vector &Udotdot, double fact = 1.0);        
00095     void addD_ForceSensitivity(const Vector &vel, double fact = 1.0);
00096     void addD_Force(const Vector &vel, double fact = 1.0);
00097 
00098     const Vector & getDispSensitivity(int gradNumber);
00099     const Vector & getVelSensitivity(int gradNumber);
00100     const Vector & getAccSensitivity(int gradNumber);
00101     int saveSensitivity(Vector *v,Vector *vdot,Vector *vdotdot,int gradNum,int numGrads);
00102 // AddingSensitivity:END //////////////////////////////////////
00103     
00104   protected:
00105     
00106   private:
00107     // private variables - a copy for each object of the class            
00108     MP_Constraint *theMP;
00109     Matrix *Trans;
00110     Matrix *modTangent;
00111     Vector *modUnbalance;
00112     ID *modID;
00113     int modNumDOF;
00114     
00115     SP_Constraint **theSPs;
00116     
00117     // static variables - single copy for all objects of the class          
00118     static Matrix **modMatrices; // array of pointers to class wide matrices
00119     static Vector **modVectors;  // array of pointers to class widde vectors
00120     static int numTransDOFs;           // number of objects        
00121     static TransformationConstraintHandler *theHandler;
00122 };
00123 
00124 #endif
00125 

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