MultiaxialCyclicPlasticity.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  
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

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