J2ThreeDimensional.hGo 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:38 $ 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 <stdio.h> 00057 #include <stdlib.h> 00058 #include <math.h> 00059 00060 #include <Vector.h> 00061 #include <Matrix.h> 00062 00063 #include <J2Plasticity.h> 00064 00065 class J2ThreeDimensional : public J2Plasticity { 00066 00067 //-------------------Declarations------------------------------- 00068 00069 public : 00070 00071 //null constructor 00072 J2ThreeDimensional( ) ; 00073 00074 //full constructor 00075 J2ThreeDimensional( int tag, 00076 double K, 00077 double G, 00078 double yield0, 00079 double yield_infty, 00080 double d, 00081 double H, 00082 double viscosity = 0 ) ; 00083 00084 00085 //elastic constructor 00086 J2ThreeDimensional( int tag, double K, double G ) ; 00087 00088 //destructor 00089 ~J2ThreeDimensional( ) ; 00090 00091 const char *getClassType(void) const {return "J2ThreeDimensional";}; 00092 00093 //make a clone of this material 00094 NDMaterial* getCopy( ) ; 00095 00096 //send back type of material 00097 const char* getType( ) const ; 00098 00099 //send back order of strain in vector form 00100 int getOrder( ) const ; 00101 00102 //get the strain and integrate plasticity equations 00103 int setTrialStrain( const Vector &strain_from_element) ; 00104 00105 //unused trial strain functions 00106 int setTrialStrain( const Vector &v, const Vector &r ) ; 00107 int setTrialStrainIncr( const Vector &v ) ; 00108 int setTrialStrainIncr( const Vector &v, const Vector &r ) ; 00109 00110 //send back the strain 00111 const Vector& getStrain( ) ; 00112 00113 //send back the stress 00114 const Vector& getStress( ) ; 00115 00116 //send back the tangent 00117 const Matrix& getTangent( ) ; 00118 const Matrix& getInitialTangent( ) ; 00119 00120 //this is mike's problem 00121 int setTrialStrain(const Tensor &v) ; 00122 int setTrialStrain(const Tensor &v, const Tensor &r) ; 00123 int setTrialStrainIncr(const Tensor &v) ; 00124 int setTrialStrainIncr(const Tensor &v, const Tensor &r) ; 00125 const Tensor& getTangentTensor( ) ; 00126 //jeremic@ucdavis.edu 22jan2001 const Tensor& getStressTensor( ) ; 00127 //jeremic@ucdavis.edu 22jan2001 const Tensor& getStrainTensor( ) ; 00128 00129 private : 00130 00131 //static vectors and matrices 00132 static Vector strain_vec ; //strain in vector notation 00133 static Vector stress_vec ; //stress in vector notation 00134 static Matrix tangent_matrix ; //material tangent in matrix notation 00135 00136 } ; //end of J2ThreeDimensional declarations 00137 00138 |