Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

J2Plasticity.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.1 $
00017 // $Date: 2000/12/13 08:12:17 $
00018 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/J2Plasticity.h,v $
00019 
00020 #ifndef J2Plasticity_h
00021 #define J2Plasticity_h
00022 
00023 // Written: Ed "C++" Love
00024 //
00025 // J2 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 //  set eta := 0 for rate independent case
00047 //
00048 
00049 
00050 #include <iostream.h>
00051 #include <stdio.h> 
00052 #include <stdlib.h> 
00053 #include <math.h> 
00054 
00055 #include <Vector.h>
00056 #include <Matrix.h>
00057 #include <NDMaterial.h>
00058 
00059 
00061 class J2Plasticity : public NDMaterial {
00062 
00064 
00065   public : 
00066 
00067   //null constructor
00068   J2Plasticity() ;
00069 
00071   J2Plasticity(    int    tag,
00072      int    classTag,
00073                    double K,
00074                    double G,
00075                    double yield0,
00076                    double yield_infty,
00077                    double d,
00078                    double H,
00079                    double viscosity = 0 ) ;
00080 
00082   J2Plasticity( int tag, int classTag, double K, double G ) ;
00083 
00085   virtual ~J2Plasticity( ) ;
00086 
00088   virtual NDMaterial* getCopy (const char *type);
00089 
00091   int commitState( ) ; 
00092 
00094   int revertToLastCommit( ) ;
00095 
00097   int revertToStart( ) ;
00098 
00100   void Print(ostream &s, int flag = 0) ;
00101 
00103   virtual NDMaterial *getCopy (void) ;
00105   virtual const char *getType (void) const ;
00107   virtual int getOrder (void) const ;
00108     
00110   virtual int sendSelf(int commitTag, Channel &theChannel) ;  
00112   virtual int recvSelf(int commitTag, Channel &theChannel, 
00113          FEM_ObjectBroker &theBroker) ;    
00115   protected :
00116 
00117   //this is mike's problem
00118   static Tensor rank2;
00120   static Tensor rank4;
00121 
00123   double bulk ;        
00124   double shear ;       
00125   double sigma_0 ;     
00126   double sigma_infty ; 
00127   double delta ;       
00128   double Hard ;        
00129   double eta ;         //viscosity
00130 
00132   Matrix epsilon_p_n ;       
00133   Matrix epsilon_p_nplus1 ;  
00134   double xi_n ;              
00135   double xi_nplus1 ;         // xi time n+1
00136 
00138   Matrix stress ;                
00139   double tangent[3][3][3][3] ;   //material tangent
00140 
00142   Matrix strain ;               //strain tensor
00143 
00145   static const double one3 ;
00147   static const double two3 ;
00149   static const double four3 ;
00151   static const double root23 ;
00152 
00153 
00155   void zero( ) ;
00156 
00158   void plastic_integrator( ) ;
00159 
00161   double q( double xi ) ;
00162 
00164   double qprime( double xi ) ;
00165   
00167   virtual void index_map( int matrix_index, int &i, int &j ) ;
00168 
00169 
00170 } ; //end of J2Plasticity declarations
00171 
00172 #endif
00173 ÿ
Copyright Contact Us