Cosseratstraint.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: Cosseratstraintensor # 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): Alireza Tabarrei, Boris Jeremic # 00012 //# PROGRAMMER(S): Alireza Tabarrei,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 COSSERATSTRAINTENSOR_HH 00031 #define COSSERATSTRAINTENSOR_HH 00032 00033 #include "BJtensor.h" 00034 00035 class Cosseratstraintensor : public tensor 00036 { 00037 public: // just send appropriate arguments to the base constructor 00038 00039 // Cosseratstraintensor (int rank_of_tensor=2, double initval=0.00000003141528); 00040 Cosseratstraintensor (int rank_of_tensor=2, double initval=0.0); 00041 // default constructor // this is just PI/10^8 to check default constructor 00042 00043 Cosseratstraintensor ( double *values ); 00044 00045 Cosseratstraintensor ( double initvalue ); 00046 00047 Cosseratstraintensor(const Cosseratstraintensor & x ); 00048 Cosseratstraintensor(const tensor & x); // copy-initializer 00049 Cosseratstraintensor(const nDarray & x); // copy-initializer 00050 00051 //~Cosseratstraintensor( ); 00052 00053 Cosseratstraintensor operator=(const Cosseratstraintensor & rval); // Cosseratstraintensor assignment 00054 Cosseratstraintensor operator=(const tensor & rval);// tensor assignment to Cosseratstraintensor 00055 Cosseratstraintensor operator=(const nDarray & rval);// nDarray assignment to Cosseratstraintensor 00056 00057 Cosseratstraintensor deep_copy(void); 00058 //.. Cosseratstraintensor * p_deep_copy(void); 00059 00060 //ini // use "from" and initialize already allocated strain tensor from "from" values 00061 //ini void Initialize( const Cosseratstraintensor & from ); 00062 00063 //___// operator() overloading for 3D Gauss points! 00064 //___ Cosseratstraintensor & operator()(short ir, short is, short it, 00065 //___ short tr, short ts, short tt ); 00066 00067 double Iinvariant1( ) const; 00068 double Iinvariant2( ) const; 00069 double Iinvariant3( ) const; 00070 00071 double Jinvariant1( ) const; 00072 double Jinvariant2( ) const; 00073 double Jinvariant3( ) const; 00074 00075 double equivalent( ) const; //Zhaohui added 09-02-2000 00076 00077 Cosseratstraintensor deviator( ) const; 00078 Cosseratstraintensor principal( ) const; 00079 00080 double sigma_octahedral( ) const; 00081 double tau_octahedral( ) const; 00082 00083 double ksi( ) const; 00084 double ro( ) const; 00085 double theta( ) const; 00086 double thetaPI( ) const; 00087 00088 double p_hydrostatic( ) const; 00089 double q_deviatoric( ) const; 00090 00091 00092 Cosseratstraintensor pqtheta2strain( double, double, double ); 00093 Cosseratstraintensor evoleq2strain( double, double ); 00094 00095 void report(char *) const; 00096 void reportshort(char *) const; 00097 00098 //..// polinomial root solver friend functions definitions 00099 //..public: 00100 //..friend void laguer(complex *, int , complex *, double , int ); 00101 //..friend void zroots(complex *, int , complex *, int ); 00102 //.. 00103 }; 00104 00105 #endif 00106 |