stresst.hGo to the documentation of this file.00001 00002 //################################################################################ 00003 //# COPYRIGHT (C): :-)) # 00004 //# PROJECT: Object Oriented Finite Element Program # 00005 //# PURPOSE: stress tensor with all necessery functions # 00006 //# CLASS: stresstensor # 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 22 '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 //# 13 septembar '96 added reportAnim :) # 00022 //# # 00023 //# # 00024 //# # 00025 //# # 00026 //# # 00027 //################################################################################ 00028 //*/ 00029 00030 #ifndef STRESSTENSOR_H 00031 #define STRESSTENSOR_H 00032 00033 #include <OPS_Globals.h> 00034 #include "BJtensor.h" 00035 class Material_Model; 00036 00037 00038 class stresstensor : public BJtensor 00039 { 00040 public: 00041 friend class Material_Model; 00042 00043 public: 00044 // just send appropriate arguments to the base constructor 00045 stresstensor(int rank_of_tensor=2, double initval=0.0); // default constructor 00046 stresstensor( double *values ); 00047 stresstensor( double initvalue ); 00048 00049 stresstensor(const stresstensor & x ); 00050 stresstensor(const BJtensor & x); // copy-initializer 00051 stresstensor(const nDarray & x); // copy-initializer 00052 00053 //~stresstensor( ); 00054 00055 00056 stresstensor operator=(const stresstensor & rval);// stresstensor assignment 00057 stresstensor operator=(const BJtensor & rval);// tensor assignment to stresstensor 00058 stresstensor operator=(const nDarray & rval);// nDarray assignment to stresstensor 00059 00060 stresstensor deep_copy(void); 00061 //.. stresstensor * p_deep_copy(void); 00062 00063 //ini // use "from" and initialize already allocated stress tensor from "from" values 00064 //ini void Initialize( const stresstensor & from ); 00065 00066 //___// operator() overloading for 3D Gauss points! 00067 //___ stresstensor & operator()(short ir, short is, short it, 00068 //___ short tr, short ts, short tt ); 00069 00070 00071 double Iinvariant1( ) const; 00072 double Iinvariant2( ) const; 00073 double Iinvariant3( ) const; 00074 00075 double Jinvariant1( ) const; 00076 double Jinvariant2( ) const; 00077 double Jinvariant3( ) const; 00078 00079 stresstensor deviator( ) const; 00080 stresstensor principal( ) const; 00081 00082 double sigma_octahedral( ) const; 00083 double tau_octahedral( ) const; 00084 00085 double ksi( ) const; 00086 double xi( ) const; 00087 double ro( ) const; 00088 double rho( ) const; 00089 double theta() const; 00090 double thetaPI( ) const; 00091 00092 double p_hydrostatic( ) const; 00093 double q_deviatoric( ) const; 00094 00095 tensor dpoverds( void ) const; 00096 tensor dqoverds( void ) const; 00097 tensor dthetaoverds( void ) const; 00098 tensor d2poverds2( void ) const; 00099 tensor d2qoverds2( void ) const; 00100 tensor d2thetaoverds2( void ) const; 00101 00102 00103 00104 //-- stresstensor yield_surface_cross(stresstensor & end_stress, 00105 //-- Material_Model & YC); 00106 00107 stresstensor pqtheta2stress( double, double, double ); 00108 00109 void report(char *) const; 00110 void reportshort(char *) const; 00111 void reportshortpqtheta(char *) const; 00112 void reportSHORTpqtheta(char *) const; 00113 void reportSHORTs1s2s3(char *) const; 00114 void reportKLOTpqtheta(char *) const; 00115 void reportshortI1J2J3(char *) const; 00116 void reportAnim(void) const; 00117 void reportTensor(char *) const; 00118 00119 //================================================================================ 00120 // Overloaded Insertion Operator ZHaohui Added Aug. 13, 2000 00121 // prints an stresstensor's contents 00122 //================================================================================ 00123 friend OPS_Stream& operator<< (OPS_Stream& os, const stresstensor & rhs); 00124 00125 // // routine used by root finder, takes an alfa and returns the 00126 // // yield function value for that alfa 00127 // public: 00128 // double func( stresstensor & start_stress, 00129 // stresstensor & end_stress, 00130 // Material_Model & YC, 00131 // double alfa ); 00132 // 00133 // 00134 // //..// polinomial root solver friend functions definitions 00135 // //..public: 00136 // //..friend void laguer(complex *, int , complex *, double , int ); 00137 // //..friend void zroots(complex *, int , complex *, int ); 00138 // //.. 00139 // 00140 // zero of function 00141 friend double zbrentstress(stresstensor & start_stress, 00142 stresstensor & end_stress, 00143 Material_Model & YC, 00144 double x1, double x2, double tol); 00145 00146 // friend double zbrent(double x1, double x2, double tol); 00147 // 00148 // 00149 }; 00150 00151 #endif 00152 |