DistributedDisplacementControl.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 $
00022 // $Date: 2005/11/29 21:59:49 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/DistributedDisplacementControl.h,v $
00024 
00025 // Written: fmk 
00026 // Created: 07/98
00027 // Revision: A
00028 //
00029 // Description: This file contains the class definition for DistributedDisplacementControl.
00030 // DistributedDisplacementControl is an algorithmic class for perfroming a static analysis
00031 // using the arc length scheme, that is within a load step the follwing
00032 // constraint is enforced: 
00033 //  i=1        delta U^T delta U + alpha^2 delta lambda^2 = delta s^2
00034 //  i>1        dU^T delta U + alpha^2 dLambda delta lambda = 0
00035 // where dU is change in nodal displacements for step, dLambda is
00036 // change in applied load and DistributedDisplacementControl is a control parameter.
00037 //
00038 // What: "@(#) DistributedDisplacementControl.h, revA"
00039 
00040 #ifndef DistributedDisplacementControl_h
00041 #define DistributedDisplacementControl_h
00042 
00043 #include <StaticIntegrator.h>
00044 
00045 class LinearSOE;
00046 class AnalysisModel;
00047 class FE_Element;
00048 class Vector;
00049 class Domain;
00050 
00051 class DistributedDisplacementControl : public StaticIntegrator
00052 {
00053   public:
00054     DistributedDisplacementControl(int node, int dof, double increment,
00055                                    int numIncrStep, double minIncrement, double maxIncrement);
00056     DistributedDisplacementControl();
00057 
00058     ~DistributedDisplacementControl();
00059 
00060     int newStep(void);    
00061     int update(const Vector &deltaU);
00062     int domainChanged(void);
00063     
00064     int sendSelf(int commitTag, Channel &theChannel);
00065     int recvSelf(int commitTag, Channel &theChannel, 
00066                          FEM_ObjectBroker &theBroker);
00067 
00068     void Print(OPS_Stream &s, int flag =0);    
00069     
00070   protected:
00071     
00072   private:
00073     int processID;         // processID
00074     Channel **theChannels; // Channel array
00075     int numChannels;       // numChannels in theChannel array
00076 
00077     int theNode;          // the node that is being followed
00078     int theDof;           // the dof at the node being followed
00079     double theIncrement;  // deltaU at step (i)
00080     int theDofID;         // the syste level id of the dof being followed
00081     bool allHaveDofID;
00082     
00083     Vector *deltaUhat, *deltaUbar, *deltaU, *deltaUstep;
00084     Vector *phat;                           // the reference load vector
00085     double deltaLambdaStep, currentLambda;  // dLambda(i) & current value of lambda  
00086 
00087     double specNumIncrStep, numIncrLastStep; // Jd & J(i-1) 
00088     double minIncrement, maxIncrement; // min/max values of deltaU at (i)
00089 };
00090 
00091 #endif
00092 

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