HSConstraint.h

Go to the documentation of this file.
00001 //===============================================================================
00002 //# COPYRIGHT (C): Woody's license (by BJ):
00003 //                 ``This    source  code is Copyrighted in
00004 //                 U.S.,  for  an  indefinite  period,  and anybody
00005 //                 caught  using it without our permission, will be
00006 //                 mighty good friends of ourn, cause we don't give
00007 //                 a  darn.  Hack it. Compile it. Debug it. Run it.
00008 //                 Yodel  it.  Enjoy it. We wrote it, that's all we
00009 //                 wanted to do.''
00010 //
00011 //# PROJECT:           Object Oriented Finite Element Program
00012 //# PURPOSE:           Hyper-spherical Constraint 
00013 //# CLASS:             HSConstraint
00014 //#
00015 //# VERSION:           0.61803398874989 (golden section)
00016 //# LANGUAGE:          C++
00017 //# TARGET OS:         all...
00018 //# DESIGN:            Ritu Jain, Boris Jeremic
00019 //# PROGRAMMER(S):     Ritu, Boris Jeremic
00020 //#
00021 //#
00022 //# DATE:              14Mar2003
00023 //# UPDATE HISTORY:   
00024 //#
00025 //#
00026 //===============================================================================
00027 #ifndef HSConstraint_h
00028 #define HSConstraint_h
00029 
00030 #include <StaticIntegrator.h>
00031 
00032 class LinearSOE;
00033 class AnalysisModel;
00034 class FE_Element;
00035 class Vector;
00036 class Matrix;
00037 
00038 class HSConstraint : public StaticIntegrator
00039 {
00040   public:
00041     HSConstraint(double arcLength, double psi_u=1.0, double psi_f=1.0, double u_ref=1.0);
00042 
00043     ~HSConstraint();
00044 
00045     int newStep(void);    
00046     int update(const Vector &deltaU);
00047     int domainChanged(void);
00048     
00049     int sendSelf(int commitTag, Channel &theChannel);
00050     int recvSelf(int commitTag, Channel &theChannel, 
00051                          FEM_ObjectBroker &theBroker);
00052 
00053     void Print(OPS_Stream &s, int flag =0);    
00054     
00055   protected:
00056     
00057   private:
00058     double arcLength2;
00059     double psi_u2;
00060     double psi_f2;
00061     double u_ref2;
00062     Matrix *scalingMatrix;
00063     Vector *deltaUhat;
00064     Vector *deltaUbar;
00065     Vector *deltaU;
00066     Vector *deltaUstep;
00067     Vector *phat; // the reference load vector
00068     double deltaLambdaStep;
00069     double currentLambda;
00070     int signLastDeltaLambdaStep;
00071 };
00072 
00073 #endif
00074 

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