Subversion Repositories OpenSees

Rev

Rev 2726 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* ****************************************************************** **
**    OpenSees - Open System for Earthquake Engineering Simulation    **
**          Pacific Earthquake Engineering Research Center            **
**                                                                    **
**                                                                    **
** (C) Copyright 1999, The Regents of the University of California    **
** All Rights Reserved.                                               **
**                                                                    **
** Commercial use of this program without express permission of the   **
** University of California, Berkeley, is strictly prohibited.  See   **
** file 'COPYRIGHT'  in main directory for information on usage and   **
** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
**                                                                    **
** Developed by:                                                      **
**   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
**   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
**   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
**                                                                    **
** ****************************************************************** */

                                                                       
// $Revision: 1.1 $
// $Date: 2007-02-02 22:58:36 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Concrete01WithSITC.h,v $
                                                                       
#ifndef Concrete01WithSITC_h
#define Concrete01WithSITC_h

// Modified by: Won Lee
// Created: 10/3/05
// Modified from Concrete01.h (see details below)
// Desctiption: This file contains the class definition for Concrete01WithSITC
// Description: Concrete01 model modified to include SITC effect (ref. Prof.
//      John Stanton of Univ. of Washington).  Use modified rules from his paper to include this
//      effect (J.F. Stanton and H.D. McNiven, "The Development of a Mathematical
//      Model to Predict the Flexural Response of Reinforced Concrete Beams to Cyclic
//      Loads, Using System Identification", EERC Report Number 79/02, January 1979.
//

// BASED ON FILE:
// File: Concrete01.h
//
// Written: MHS
// Created: 06/99
// Revision: A
//
// Description: This file contains the class definition for
// Concrete01.h adapted from Concr1.f90 (Filippou)
//   - Modified Kent-Park envelope
//   - No tension
//   - Linear unloading/reloading
//
// What: "@(#) Concrete01.h, revA"


#include <UniaxialMaterial.h>

class Concrete01WithSITC : public UniaxialMaterial
{
 public:
  Concrete01WithSITC (int tag, double fpc, double eco, double fpcu, double ecu, double endStrainSITC = 0.03);
  Concrete01WithSITC ();
  ~Concrete01WithSITC();

      int setTrialStrain(double strain, double strainRate = 0.0);
      int setTrial (double strain, double &stress, double &tangent, double strainRate = 0.0);
      double getStrain(void);      
      double getStress(void);
      double getTangent(void);
      double getInitialTangent(void) {return 2.0*fpc/epsc0;}

      int commitState(void);
      int revertToLastCommit(void);    
      int revertToStart(void);        

      UniaxialMaterial *getCopy(void);
   
      int sendSelf(int commitTag, Channel &theChannel);  
      int recvSelf(int commitTag, Channel &theChannel,
                 FEM_ObjectBroker &theBroker);    
   
      void Print(OPS_Stream &s, int flag =0);

   protected:

   private:
      /*** Material Properties ***/
      double fpc;    // Compressive strength
      double epsc0;  // Strain at compressive strength
      double fpcu;   // Crushing strength
      double epscu;  // Strain at crushing strength

      /*** CONVERGED History Variables ***/
      double CminStrain;   // Smallest previous concrete strain (compression)
      double CunloadSlope; // Unloading (reloading) slope from CminStrain
      double CendStrain;   // Strain at the end of unloading from CminStrain
      double CmaxStrain;   // Largest previous concrete strain (tension)
      double CslopeSITC;
      double CendStrainSITC;
      int Cindex;
      int CsmallStrainIndex;
     
     
      /*** CONVERGED State Variables ***/
      double Cstrain;
      double Cstress;  
      double Ctangent;  // Don't need Ctangent other than for revert and sendSelf/recvSelf
      // Storing it is better than recomputing it!!!

      /*** TRIAL History Variables ***/
      double TminStrain;
      double TunloadSlope;
      double TendStrain;
      double TmaxStrain;
      double TslopeSITC;

      int Tindex;
      int TsmallStrainIndex;
     
      /*** TRIAL State Variables ***/
      double Tstrain;
      double Tstress;
      double Ttangent; // Not really a state variable, but declared here
                       // for convenience
     
      void determineTrialState (double dStrain);
     
      void reload();
      void unload();
      void envelope();
      void getSITCslope();
};


#endif