MultiaxialCyclicPlasticity.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 00017 /*----+----+----+----+----+----+----+----+----+----+----+----+----+----+----* 00018 | | 00019 | MultiaxialCyclicPlasticity NDMaterial | 00020 + + 00021 |--------------------------------------------------------------------------| 00022 | | 00023 + Authors: Gang Wang AND Professor Nicholas Sitar + 00024 | | 00025 | Department of Civil and Environmental Engineering | 00026 + Univeristy of California, Berkeley, CA 94720, USA + 00027 | | 00028 | Email: wang@ce.berkeley.edu (G.W.) | 00029 + + 00030 | Disclaimers: | 00031 | (1) This is implemenation of MultiaxialCyclicPlasticity for clays | 00032 + Model References: + 00033 | Borja R.I, Amies, A.P. Multiaxial Cyclic Plasticity Model for | 00034 | Clays, ASCE J. Geotech. Eng. Vol 120, No 6, 1051-1070 | 00035 + Montans F.J, Borja R.I. Implicit J2-bounding Surface Plasticity + 00036 | using Prager's translation rule. Int. J. Numer. Meth. Engng. | 00037 | 55:1129-1166, 2002 | 00038 + Code References: + 00039 | Ignacio Romero and Adrian Rodriguez Marek, Brick element model with | 00040 | a Multiaxial Cyclic Plasticity Model, in GEOFEAP, UC Berkeley | 00041 + (2) Questions regarding this code should be directed to Gang Wang + 00042 | (3) Documentation could be found at | 00043 | www.ce.berkeley.edu/~wang/papers/MultiaxialCyclicPlasticity.pdf | 00044 + + 00045 | Development History: | 00046 | First Draft -- April 2004 | 00047 + Rewrite -- Nov 2004 + 00048 | Final Release -- | 00049 | | 00050 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----*/ 00051 00052 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00053 00054 User Command 00055 00056 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00057 nDMaterial MultiaxialCyclicPlasticity $tag, $rho, $K, $G, 00058 $Su , $Ho , $h, $m, $beta, $KCoeff 00059 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00060 where: 00061 tag : tag for this material 00062 rho : density 00063 K : buck modulus 00064 G : maximum (small strain) shear modulus 00065 Su : undrained shear strength, size of bounding surface R=sqrt(8/3)*Su 00066 Ho : linear kinematic hardening modulus of bounding surface 00067 h : hardening parameter 00068 m : hardening parameter 00069 beta : integration parameter, usually beta=0.5 00070 KCoeff: coefficient of earth pressure, K0 00071 00072 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 00073 00074 00075 #ifndef MultiaxialCyclicPlasticity_h 00076 #define MultiaxialCyclicPlasticity_h 00077 00078 #include <stdio.h> 00079 #include <stdlib.h> 00080 #include <math.h> 00081 00082 #include <Vector.h> 00083 #include <Matrix.h> 00084 #include <NDMaterial.h> 00085 00086 00087 class MultiaxialCyclicPlasticity : public NDMaterial { 00088 00089 //-------------------Declarations------------------------------- 00090 00091 public : 00092 00093 //null constructor 00094 MultiaxialCyclicPlasticity() ; 00095 00096 00097 //full constructor 00098 MultiaxialCyclicPlasticity(int tag, 00099 int classTag, 00100 double rho, 00101 double K, 00102 double G, 00103 double Su, 00104 double Ho_kin, 00105 double Parameter_h, 00106 double Parameter_m, 00107 double Parameter_beta, 00108 double Kcoeff, 00109 double viscosity = 0 00110 ) ; 00111 00112 00113 //elastic constructor 00114 MultiaxialCyclicPlasticity( int tag, int classTag, double rho, double K, double G ) ; 00115 00116 //destructor 00117 virtual ~MultiaxialCyclicPlasticity( ) ; 00118 00119 virtual NDMaterial* getCopy (const char *type); 00120 00121 //swap history variables 00122 virtual int commitState( ) ; 00123 00124 //revert to last saved state 00125 virtual int revertToLastCommit( ) ; 00126 00127 //revert to start 00128 virtual int revertToStart( ) ; 00129 00130 //sending and receiving 00131 virtual int sendSelf(int commitTag, Channel &theChannel) ; 00132 virtual int recvSelf(int commitTag, Channel &theChannel, 00133 FEM_ObjectBroker &theBroker ) ; 00134 00135 //print out material data 00136 void Print(OPS_Stream &s, int flag = 0) ; 00137 00138 virtual NDMaterial *getCopy (void) ; 00139 virtual const char *getType (void) const ; 00140 virtual int getOrder (void) const ; 00141 00142 double getRho(); 00143 int updateParameter(int responseID, Information &eleInformation); 00144 Vector& getMCPparameter(void); // used for debug only 00145 00146 protected : 00147 00148 00149 //this is mike's problem 00150 static Tensor rank2; 00151 static Tensor rank4; 00152 00153 // Material parameter used for K0 condition 00154 double K0; //lateral earth pressure coefficient 00155 double bulk_K0; 00156 double shear_K0; 00157 00158 // Parameters used for Bounding Surface 00159 double bulk ; //bulk modulus 00160 double shear ; //shear modulus 00161 double density; //material density (mass/volume) 00162 double R; //Radius of Bounding Surface, R=sqrt(8/3)*Su 00163 double Ho; //Limit value of hardening modulus Ho=Hard 00164 double h; //Exponential degradation parameter H=h*kappa^m 00165 double m; //Exponential degradation parameter H=h*kappa^m 00166 double beta; //integration parameter 00167 double eta ; //viscosity // not used now 00168 00169 // some flags 00170 int flagjustunload; // not used 00171 int flagfirstload; // very first loading, initialize so_n 00172 int icounter; // iteration counter, local newton 00173 int iternum; // iteration counter, global newton 00174 00175 int plasticflag; // flags indicate stage of plasticity at current step 00176 int plasticflag_n; // flags indicate stage of plasticity at t=n 00177 00178 // state variables 00179 double kappa; //kappa at t=n 00180 double Psi; //Psi at t=n 00181 double X[3]; //X[1]:Psi X[2]:kappa at t=n+1 00182 double alp; //alp for strain split across B.S. 00183 double load; //loading/unloading indicator 00184 00185 //material input 00186 Matrix strain ; // strain @ t=n+1, input from element 00187 //material response 00188 Matrix stress ; // stress @ t=n+1, computed this step 00189 Matrix stress_n; // stress @ t=n; stored before 00190 Matrix so; // unload deviatoric back stress 00191 //memeory variables 00192 Matrix strain_n; // strain @ t=n; stored before 00193 Matrix backs_n; // back stress for BS @ t=n+1 00194 Matrix backs; // back stress for BS @ t=n 00195 Matrix so_n; // unload point for t=n 00196 00197 double tangent[3][3][3][3] ; // material tangent 00198 static double initialTangent[3][3][3][3] ; //material tangent 00199 static double IIdev[3][3][3][3] ; //rank 4 deviatoric 00200 static double IbunI[3][3][3][3] ; //rank 4 I bun I 00201 00202 00203 // element tag associated with this material; added method by Gang Wang 00204 int EleTag; 00205 static int MaterialStageID; // classwide tag 00206 static int IncrFormulationFlag; 00207 00208 00209 //parameters 00210 static const double one3 ; 00211 static const double two3 ; 00212 static const double four3 ; 00213 static const double root23 ; 00214 static const double infinity ; 00215 00216 //initialize internal variables 00217 void initialize( ) ; 00218 00219 //plasticity integration routine, used in MaterialStageID==2 00220 void plastic_integrator( ) ; 00221 //elasticity integration routine, used in MaterialStageID==1 (K0) 00222 void elastic_integrator( ) ; 00223 00224 void doInitialTangent( ) ; 00225 00226 //matrix index to tensor index mapping 00227 virtual void index_map( int matrix_index, int &i, int &j ) ; 00228 00229 static Vector MCPparameter; // debug tool 00230 00231 } ; //end of MultiaxialCyclicPlasticity declarations 00232 00233 #endif |