T2Vector.hGo to the documentation of this file.00001 //<<<<<<< T2Vector.h 00002 //<<<<<<< T2Vector.h 00003 // $Revision: 1.7 $ 00004 // $Date: 2002/05/16 00:07:47 $ 00005 //======= 00006 // $Revision: 1.7 $ 00007 // $Date: 2002/05/16 00:07:47 $ 00008 //>>>>>>> 1.4 00009 //======= 00010 // $Revision: 1.7 $ 00011 // $Date: 2002/05/16 00:07:47 $ 00012 //>>>>>>> 1.6 00013 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/T2Vector.h,v $ 00014 00015 // Written: ZHY 00016 // Created: August 2000 00017 00018 // 00019 // T2Vector.h 00020 // -------- 00021 // 00022 00023 #ifndef _T2Vector_H_ 00024 #define _T2Vector_H_ 00025 00026 #include <Vector.h> 00027 #include <Channel.h> 00028 #include <float.h> 00029 00030 #define UP_LIMIT 1.0e+30 00031 #define LOW_LIMIT 20.*DBL_EPSILON 00032 00033 // global function: scalar product of two second order tensor vectors 00034 double operator && (const Vector &, const Vector &); 00035 00036 // define second order tensor vector class 00037 class T2Vector 00038 { 00039 00040 public: 00041 // constructors 00042 T2Vector(); 00043 T2Vector(const Vector & T2Vector_init, int isEngrgStrain=0); 00044 T2Vector(const Vector & deviat_init, double volume_init); 00045 00046 ~T2Vector(); 00047 00048 void setData(const Vector &init, int isEngrgStrain =0); 00049 void setData(const Vector &deviat, double volume); 00050 00051 const Vector & t2Vector(int isEngrgStrain=0) const; 00052 const Vector & deviator(int isEngrgStrain=0) const; 00053 double volume() const {return theVolume; } 00054 const Vector &unitT2Vector() const; 00055 const Vector &unitDeviator() const; 00056 double t2VectorLength() const; 00057 double deviatorLength() const; 00058 double octahedralShear(int isEngrgStrain=0) const; 00059 00060 // = -sqrt(3/2*(S:S))/(p+residualPress) 00061 double deviatorRatio(double residualPress=0.) const; 00062 00063 //next function return the angle between two T2Vectors in radians (-PI to PI) 00064 double angleBetweenT2Vector(const T2Vector &) const; 00065 00066 //next function return the angle between deviatoric components of 00067 //two vectors in radians (-PI to PI) 00068 double angleBetweenDeviator(const T2Vector &) const; 00069 00070 int operator == (const T2Vector & a) const; 00071 int isZero(void) const; 00072 00073 protected: 00074 00075 private: 00076 Vector theT2Vector; 00077 Vector theDeviator; 00078 double theVolume; 00079 static Vector engrgStrain; 00080 }; 00081 00082 00083 #endif |