straint.hGo to the documentation of this file.00001 00002 //################################################################################ 00003 //# COPYRIGHT (C): :-)) # 00004 //# PROJECT: Object Oriented Finite Element Program # 00005 //# PURPOSE: strain tensor with all necessery functions # 00006 //# CLASS: straintensor # 00007 //# # 00008 //# VERSION: # 00009 //# LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) # 00010 //# TARGET OS: DOS || UNIX || . . . # 00011 //# DESIGNER(S): Boris Jeremic # 00012 //# PROGRAMMER(S): Boris Jeremic # 00013 //# # 00014 //# # 00015 //# DATE: July 25 '93 # 00016 //# UPDATE HISTORY: August 22-29 '94 choped to separate files and worked on # 00017 //# const and & issues # 00018 //# August 30-31 '94 added use_def_dim to full the CC, # 00019 //# resolved problem with temoraries for # 00020 //# operators + and - ( +=, -= ) # 00021 //# # 00022 //# # 00023 //# # 00024 //# # 00025 //# # 00026 //# # 00027 //################################################################################ 00028 //*/ 00029 // 00030 #ifndef STRAINTENSOR_HH 00031 #define STRAINTENSOR_HH 00032 00033 #include <OPS_Globals.h> 00034 #include "BJtensor.h" 00035 00036 00037 class straintensor : public tensor 00038 { 00039 public: // just send appropriate arguments to the base constructor 00040 00041 // straintensor (int rank_of_tensor=2, double initval=0.00000003141528); 00042 straintensor (int rank_of_tensor=2, double initval=0.0); 00043 // default constructor // this is just PI/10^8 to check default constructor 00044 00045 straintensor ( double *values ); 00046 00047 straintensor ( double initvalue ); 00048 00049 straintensor(const straintensor & x ); 00050 straintensor(const tensor & x); // copy-initializer 00051 straintensor(const nDarray & x); // copy-initializer 00052 00053 //~straintensor( ); 00054 00055 straintensor operator=(const straintensor & rval); // straintensor assignment 00056 straintensor operator=(const tensor & rval);// tensor assignment to straintensor 00057 straintensor operator=(const nDarray & rval);// nDarray assignment to straintensor 00058 00059 straintensor deep_copy(void); 00060 //.. straintensor * p_deep_copy(void); 00061 00062 //ini // use "from" and initialize already allocated strain tensor from "from" values 00063 //ini void Initialize( const straintensor & from ); 00064 00065 //___// operator() overloading for 3D Gauss points! 00066 //___ straintensor & operator()(short ir, short is, short it, 00067 //___ short tr, short ts, short tt ); 00068 00069 double Iinvariant1( ) const; 00070 double Iinvariant2( ) const; 00071 double Iinvariant3( ) const; 00072 00073 double Jinvariant1( ) const; 00074 double Jinvariant2( ) const; 00075 double Jinvariant3( ) const; 00076 00077 double equivalent( ) const; //Zhaohui added 09-02-2000 00078 00079 straintensor deviator( ) const; 00080 straintensor principal( ) const; 00081 00082 double sigma_octahedral( ) const; 00083 double tau_octahedral( ) const; 00084 00085 double ksi( ) const; 00086 double ro( ) const; 00087 double theta( ) const; 00088 double thetaPI( ) const; 00089 00090 double p_hydrostatic( ) const; 00091 double q_deviatoric( ) const; 00092 00093 00094 straintensor pqtheta2strain( double, double, double ); 00095 straintensor evoleq2strain( double, double ); 00096 00097 void report(char *) const; 00098 void reportshort(char *) const; 00099 00100 friend OPS_Stream& operator<< (OPS_Stream& os, const straintensor & rhs); 00101 00102 //..// polinomial root solver friend functions definitions 00103 //..public: 00104 //..friend void laguer(complex *, int , complex *, double , int ); 00105 //..friend void zroots(complex *, int , complex *, int ); 00106 //.. 00107 }; 00108 00109 #endif 00110 |