stresst.h

Go 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 

Generated on Mon Oct 23 15:05:24 2006 for OpenSees by doxygen 1.5.0