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

J2ThreeDimensional.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.2 $
00017 // $Date: 2001/01/23 08:46:28 $
00018 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/J2ThreeDimensional.h,v $
00019 
00020 // Written: Ed "C++" Love
00021 
00022 //
00023 // J2ThreeDimensional isotropic hardening material class
00024 // 
00025 //  Elastic Model
00026 //  sigma = K*trace(epsilion_elastic) + (2*G)*dev(epsilon_elastic)
00027 //
00028 //  Yield Function
00029 //  phi(sigma,q) = || dev(sigma) ||  - sqrt(2/3)*q(xi) 
00030 //
00031 //  Saturation Isotropic Hardening with linear term
00032 //  q(xi) = simga_0 + (sigma_infty - sigma_0)*exp(-delta*xi) + H*xi 
00033 //
00034 //  Flow Rules
00035 //  \dot{epsilon_p} =  gamma * d_phi/d_sigma
00036 //  \dot{xi}        = -gamma * d_phi/d_q 
00037 //
00038 //  Linear Viscosity 
00039 //  gamma = phi / eta  ( if phi > 0 ) 
00040 //
00041 //  Backward Euler Integration Routine 
00042 //  Yield condition enforced at time n+1 
00043 //
00044 //  Send strains in following format :
00045 // 
00046 //     strain_vec = {   eps_00
00047 //                      eps_11
00048 //                 eps_22         
00049 //                    2 eps_01   
00050 //                   2 eps_12   
00051 //        2 eps_20    }   <--- note the 2
00052 // 
00053 //  set eta := 0 for rate independent case
00054 //
00055 
00056 #include <iostream.h>
00057 #include <stdio.h> 
00058 #include <stdlib.h> 
00059 #include <math.h> 
00060 
00061 #include <Vector.h>
00062 #include <Matrix.h>
00063 
00064 #include <J2Plasticity.h>
00065 
00067 class J2ThreeDimensional : public J2Plasticity {
00068 
00070 
00071   public : 
00072 
00073   //null constructor
00074   J2ThreeDimensional( ) ;
00075 
00077   J2ThreeDimensional(   int    tag, 
00078                    double K,
00079                    double G,
00080                    double yield0,
00081                    double yield_infty,
00082                    double d,
00083                    double H,
00084                    double viscosity = 0 ) ;
00085 
00086 
00088   J2ThreeDimensional( int tag, double K, double G ) ;
00089 
00091   ~J2ThreeDimensional( ) ;
00092 
00094   NDMaterial* getCopy( ) ;
00095 
00097   const char* getType( ) const ;
00098 
00100   int getOrder( ) const ;
00101 
00103   int setTrialStrain( const Vector &strain_from_element) ;
00104 
00106   int setTrialStrain( const Vector &v, const Vector &r ) ;
00108   int setTrialStrainIncr( const Vector &v ) ;
00110   int setTrialStrainIncr( const Vector &v, const Vector &r ) ;
00111 
00113   const Vector& getStrain( ) ;
00114 
00116   const Vector& getStress( ) ;
00117 
00119   const Matrix& getTangent( ) ;
00120 
00122   int setTrialStrain(const Tensor &v) ;
00124   int setTrialStrain(const Tensor &v, const Tensor &r) ;    
00126   int setTrialStrainIncr(const Tensor &v) ;
00128   int setTrialStrainIncr(const Tensor &v, const Tensor &r) ;
00130   const Tensor& getTangentTensor( ) ;
00131 //jeremic@ucdavis.edu 22jan2001  const Tensor& getStressTensor( ) ;
00132 //jeremic@ucdavis.edu 22jan2001  const Tensor& getStrainTensor( ) ;  
00133 
00135   int sendSelf(int commitTag, Channel &theChannel) ;  
00137   int recvSelf(int commitTag, Channel &theChannel, 
00138                FEM_ObjectBroker &theBroker ) ;
00139   
00141   private :
00142 
00143   //static vectors and matrices
00144   static Vector strain_vec ;     
00145   static Vector stress_vec ;     
00146   static Matrix tangent_matrix ; //material tangent in matrix notation
00147 
00148           
00149 } ; //end of J2ThreeDimensional declarations
00150 
00151 
00152 ÿ
Copyright Contact Us