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

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