SectionAggregator.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.12 $
00022 // $Date: 2006/09/05 23:30:03 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/section/SectionAggregator.h,v $
00024                                                                         
00025                                                                         
00026 // File: ~/section/SectionAggregator.h
00027 //
00028 // Written: MHS
00029 // Created: Jun 2000
00030 // Revision: A
00031 //
00032 // Description: This file contains the class definition for 
00033 // SectionAggregator.  SectionAggregator decorates an MP
00034 // section (couple bending and axial) with an uncoupled shear
00035 // relation.
00036 //
00037 // What: "@(#) SectionAggregator.h, revA"
00038 
00039 #ifndef SectionAggregator_h
00040 #define SectionAggregator_h
00041 
00042 #include <SectionForceDeformation.h>
00043 #include <UniaxialMaterial.h>
00044 
00045 #include <Vector.h>
00046 #include <Matrix.h>
00047 
00048 class SectionAggregator : public SectionForceDeformation
00049 {
00050   public:
00051     SectionAggregator(); 
00052 
00053     SectionAggregator(int tag, SectionForceDeformation &theSection,
00054                       int numAdditions, UniaxialMaterial **theAdditions,
00055                       const ID &code); 
00056     SectionAggregator(int tag, int numAdditions,
00057                       UniaxialMaterial **theAdditions, const ID &code); 
00058     SectionAggregator(int tag, SectionForceDeformation &thesection,
00059                       UniaxialMaterial &theAddition, int c);
00060 
00061     ~SectionAggregator();
00062 
00063     const char *getClassType(void) const {return "SectionAggregator";};
00064 
00065     int   setTrialSectionDeformation(const Vector &deforms); 
00066     const Vector &getSectionDeformation(void);
00067 
00068     const Vector &getStressResultant(void);
00069     const Matrix &getSectionTangent(void);
00070     const Matrix &getInitialTangent(void);
00071     const Matrix &getSectionFlexibility(void);
00072     const Matrix &getInitialFlexibility(void);
00073 
00074     int   commitState(void);
00075     int   revertToLastCommit(void);    
00076     int   revertToStart(void);
00077  
00078     SectionForceDeformation *getCopy(void);
00079     const ID &getType (void);
00080     int getOrder (void) const;
00081 
00082     int sendSelf(int cTag, Channel &theChannel);
00083     int recvSelf(int cTag, Channel &theChannel, 
00084                  FEM_ObjectBroker &theBroker);
00085  
00086     void Print(OPS_Stream &s, int flag =0);
00087 
00088     Response *setResponse(const char **argv, int argc, Information &info, OPS_Stream &s);
00089     int getResponse(int responseID, Information &info);
00090 
00091     int setVariable(const char *argv);
00092     int getVariable(int variableID, double &info);
00093 
00094     // AddingSensitivity:BEGIN //////////////////////////////////////////
00095     int setParameter(const char **argv, int argc, Parameter &param);
00096     const Vector & getStressResultantSensitivity(int gradNumber, bool conditional);
00097     const Vector & getSectionDeformationSensitivity(int gradNumber);
00098     const Matrix & getSectionTangentSensitivity(int gradNumber);
00099     int   commitSensitivity(const Vector& sectionDeformationGradient, int gradNumber, int numGrads);
00100 
00101     const Vector &getdedh(void); // MHS hack
00102     // AddingSensitivity:END ///////////////////////////////////////////
00103 
00104   protected:
00105     
00106   private:
00107     
00108     SectionForceDeformation *theSection;
00109     UniaxialMaterial **theAdditions;
00110 
00111     ID *matCodes;
00112     int numMats;
00113     
00114     Vector *e;    // Storage for section deformations
00115     Vector *s;    // Storage for stress resultants
00116     Matrix *ks;   // Storage for section stiffness
00117     Matrix *fs;   // Storage for section flexibility
00118     ID     *theCode;     // Storage for section type information
00119    
00120     int otherDbTag;
00121 
00122     static double workArea[];
00123     static int codeArea[];
00124 
00125 // AddingSensitivity:BEGIN //////////////////////////////////////////
00126     int parameterID;
00127 
00128     Vector dedh; // MHS hack
00129 // AddingSensitivity:END ///////////////////////////////////////////
00130 
00131 };
00132 
00133 #endif

Generated on Mon Oct 23 15:05:18 2006 for OpenSees by doxygen 1.5.0