HSConstraint.hGo 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 |