J2PlaneStress.h

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 1999, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** ****************************************************************** */
00015                                                                         
00016 // $Revision: 1.6 $
00017 // $Date: 2006/08/04 18:18:37 $
00018 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/J2PlaneStress.h,v $
00019 
00020 #ifndef J2PlaneStress_h
00021 #define J2PlaneStress_h
00022 
00023 // Written: Ed "C++" Love
00024 //
00025 // J2PlaneStress isotropic hardening material class
00026 // 
00027 //  Elastic Model
00028 //  sigma = K*trace(epsilion_elastic) + (2*G)*dev(epsilon_elastic)
00029 //
00030 //  Yield Function
00031 //  phi(sigma,q) = || dev(sigma) ||  - sqrt(2/3)*q(xi) 
00032 //
00033 //  Saturation Isotropic Hardening with linear term
00034 //  q(xi) = simga_0 + (sigma_infty - sigma_0)*exp(-delta*xi) + H*xi 
00035 //
00036 //  Flow Rules
00037 //  \dot{epsilon_p} =  gamma * d_phi/d_sigma
00038 //  \dot{xi}        = -gamma * d_phi/d_q 
00039 //
00040 //  Linear Viscosity 
00041 //  gamma = phi / eta  ( if phi > 0 ) 
00042 //
00043 //  Backward Euler Integration Routine 
00044 //  Yield condition enforced at time n+1 
00045 //
00046 //  Send strains in following format :
00047 // 
00048 //     strain_vec = {   eps_00
00049 //                      eps_11
00050 //                    2 eps_01   }   <--- note the 2
00051 // 
00052 //  set eta := 0 for rate independent case
00053 //
00054 
00055 #include <stdio.h> 
00056 #include <stdlib.h> 
00057 #include <math.h> 
00058 
00059 #include <Vector.h>
00060 #include <Matrix.h>
00061 
00062 #include <J2Plasticity.h>
00063 
00064 class J2PlaneStress : public J2Plasticity {
00065 
00066 //-------------------Declarations-------------------------------
00067 
00068   public : 
00069 
00070   //null constructor
00071   J2PlaneStress( ) ;
00072 
00073   //full constructor
00074   J2PlaneStress(   int    tag, 
00075                    double K,
00076                    double G,
00077                    double yield0,
00078                    double yield_infty,
00079                    double d,
00080                    double H,
00081                    double viscosity ) ;
00082 
00083 
00084   //elastic constructor
00085   J2PlaneStress( int tag, double K, double G ) ;
00086 
00087   //destructor
00088   ~J2PlaneStress( ) ;
00089 
00090   const char *getClassType(void) const {return "J2PlaneStress";};
00091 
00092   //make a clone of this material
00093   NDMaterial* getCopy( ) ;
00094 
00095   //send back type of material
00096   const char* getType( ) const ;
00097 
00098   //send back order of strain in vector form
00099   int getOrder( ) const ;
00100 
00101   //get the strain and integrate plasticity equations
00102   int setTrialStrain( const Vector &strain_from_element) ;
00103 
00104   //unused trial strain functions
00105   int setTrialStrain( const Vector &v, const Vector &r ) ;
00106   int setTrialStrainIncr( const Vector &v ) ;
00107   int setTrialStrainIncr( const Vector &v, const Vector &r ) ;
00108 
00109   //send back the strain
00110   const Vector& getStrain( ) ;
00111 
00112   //send back the stress 
00113   const Vector& getStress( ) ;
00114 
00115   //send back the tangent 
00116   const Matrix& getTangent( ) ;
00117   const Matrix& getInitialTangent( ) ;
00118 
00119   //this is mike's problem
00120   int setTrialStrain(const Tensor &v) ;
00121   int setTrialStrain(const Tensor &v, const Tensor &r) ;    
00122   int setTrialStrainIncr(const Tensor &v) ;
00123   int setTrialStrainIncr(const Tensor &v, const Tensor &r) ;
00124   const Tensor& getTangentTensor( ) ;
00125 //jeremic@ucdavis.edu 22jan2001  const Tensor& getStressTensor( ) ;
00126 //jeremic@ucdavis.edu 22jan2001  const Tensor& getStrainTensor( ) ;  
00127 
00128   //swap history variables
00129   int commitState( ) ; 
00130   int revertToLastCommit( ) ;
00131   int revertToStart( ) ;
00132 
00133   //sending and receiving
00134   int sendSelf(int commitTag, Channel &theChannel) ;  
00135   int recvSelf(int commitTag, Channel &theChannel, 
00136                FEM_ObjectBroker &theBroker ) ;
00137   
00138   private : 
00139   
00140   //static vectors and matrices
00141   static Vector strain_vec ;     //strain in vector notation
00142   static Vector stress_vec ;     //stress in vector notation
00143   static Matrix tangent_matrix ; //material tangent in matrix notation
00144 
00145   double commitEps22;
00146 
00147   //index mapping special for plane stress because of 
00148   // condensation on tangent
00149   void index_map( int matrix_index, int &i, int &j ) ;
00150 
00151 } ; //end of J2PlaneStress declarations
00152 
00153 
00154 #endif

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