Subversion Repositories OpenSees

Rev

Rev 2956 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2956 fmk 1
/* ****************************************************************** **
2
**    OpenSees - Open System for Earthquake Engineering Simulation    **
3
**          Pacific Earthquake Engineering Research Center            **
4
**                                                                    **
5
**                                                                    **
6
** (C) Copyright 1999, The Regents of the University of California    **
7
** All Rights Reserved.                                               **
8
**                                                                    **
9
** Commercial use of this program without express permission of the   **
10
** University of California, Berkeley, is strictly prohibited.  See   **
11
** file 'COPYRIGHT'  in main directory for information on usage and   **
12
** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
13
**                                                                    **
14
** Developed by:                                                      **
15
**   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
16
**   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
17
**   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
18
**                                                                    **
19
** ****************************************************************** */
20
 
21
// $Revision: 1.2 $
22
// $Date: 2007-06-28 21:46:43 $
23
// $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Concrete07.h,v $
24
 
25
// Written: Jon Waugh, Iowa State University
26
// Created: 11/2005
27
//
28
// Description: This file contains the class defination for Uniaxial material Concrete07 
29
//                              A simplified form of Chang & Mander Concrrete model from 1994.
30
 
31
#ifndef Concrete07_h
32
#define Concrete07_h
33
 
34
#include <UniaxialMaterial.h>
35
 
36
 
37
class Concrete07 : public UniaxialMaterial
38
{
39
        public:
40
                Concrete07 (int tag, double FPC, double EPSC0, double EC, double FPT, double ESPT0, double XCRP, double XCRN, double R);
41
                Concrete07 ();
42
                ~Concrete07();
43
 
44
                int setTrialStrain(double strain, double strainRate = 0.0);
45
                int setTrial (double strain, double &stress, double &tangent, double strainRate = 0.0);
46
                double getStrain(void);      
47
                double getStress(void);
48
                double getTangent(void);
49
                double getInitialTangent(void) {return Ec;}
50
 
51
                int commitState(void);
52
                int revertToLastCommit(void);    
53
                int revertToStart(void);        
54
 
55
                UniaxialMaterial *getCopy(void);
56
 
57
                int sendSelf(int commitTag, Channel &theChannel);  
58
                int recvSelf(int commitTag, Channel &theChannel,
59
                 FEM_ObjectBroker &theBroker);    
60
 
61
                void Print(OPS_Stream &s, int flag =0);
62
 
63
        protected:
64
 
65
        private:
66
      /*** Material Properties ***/
67
      double fpc;                               // Compressive strength
68
      double epsc0;                             // Strain at compressive strength
69
          double Ec;                            // Initial Young's modulus;
70
          double fpt;                           // Tensile strength
71
          double epst0;                         // Strain at tensile strength
72
 
73
          /*** Model Variables ***/
74
      double xcrn;                              // nondimensional critical strain used to determine spalling
75
          double xsp;                           // nondimensional spalling strain
76
          double xcrp;                          // nondimensional critical strain used to determine cracking
77
          double xcrk;                          // nondimensional cracking strain
78
          double nn;                            // parameter to control stress-strain curve in compression
79
          double np;                            // parameter to control stress-strain curve in tension
80
          double r;                                     // factor from Tsai's equation
81
          double e0;                            // origin of the shifted tension side.
82
 
83
      /*** CONVERGED History Variables ***/
84
      double CminStrain;                // Smallest previous concrete strain (compression)
85
          double CminStress;            // Stress that goes with CminStrain
86
          double CUnloadStrain;         // Previous partial unloading strain
87
          double CUnloadStress;         // Previous partial unloading stress
88
          double CUnloadStiffness;      // Previous partial unloading stiffness
89
          double CmaxStrain;            // Largest previous concrete strain (tension)
90
          double CmaxStress;            // Stress that goes with CmaxStrain (tension)
91
          double CReloadStrain;         // Previous partial reloading strain
92
          double CReloadStress;         // Previous partial reloading stress
93
          double CReloadStiffness;      // Previous partial reloading stiffness
94
          double C13Zero;                       // Strain where we reversed onto rule 13.
95
          double C13Strain;                     // Strain where we left reversed on rule 13
96
          double C13Stress;                     // Stress where we left reversed on rule 13
97
 
98
          int Cloading;                         // Flag for stressing/unstressing
99
                                                                // 1 = compressing the concrete
100
                                                                // -1 = uncompressing the concrete
101
                                                                // 0 = initial state
102
          bool Ccracked;                        // Flag for if the concrete has cracked
103
                                                                // true the concrete has cracked and assumed to have no tension capacity
104
                                                                // false the concrete has not cracked yet
105
          int Crule;                            // The rule we are following for this step
106
 
107
      /*** CONVERGED State Variables ***/
108
      double Cstrain;
109
      double Cstress;  
110
      double Ctangent;                  // Don't need Ctangent other than for revert and sendSelf/recvSelf
111
                                                                // Storing it is better than recomputing it!!!
112
 
113
      /*** TRIAL History Variables ***/
114
      double TminStrain;
115
          double TminStress;
116
          double TUnloadStrain;
117
          double TUnloadStress;
118
          double TUnloadStiffness;
119
          double TmaxStrain;
120
          double TmaxStress;
121
          double TReloadStrain;
122
          double TReloadStress;
123
          double TReloadStiffness;
124
          double T13Zero;
125
          double T13Strain;
126
          double T13Stress;
127
          int Tloading;
128
          bool Tcracked;
129
          int Trule;
130
 
131
      /*** TRIAL State Variables ***/
132
      double Tstrain;
133
      double Tstress;
134
      double Ttangent; // Not really a state variable, but declared here
135
                       // for convenience
136
 
137
          /*** Private functions to make life easier ***/
138
          // Calculates trial state variables based on the trail strain
139
      void determineTrialState (double dStrain);
140
 
141
          // Determines is a strain reversal has occured based on the trial strain
142
          void detectStrainReversal (double dStrain);
143
 
144
          // Calculates the value of y(x) and z(x)
145
          void calculateYandZ(double x, double& y, double& z, double n);
146
 
147
          // Calculate the stress of the transition curve;
148
          void calculateStressTransition(double &fc, double &Et, double ec, double eI, double fI, double EI, double eF, double fF, double EF, int rule);
149
 
150
          // Calculate the envelope stress for a given nondimensional strain.
151
          void envelope(double x, double& fc, double& Et, int flag);
152
 
153
          // Calculate the stress-strain curve for Rule 13
154
          void calculate13Stress(double &fc, double &Et, double ec, double eI, double eF, double fF, double EF);
155
 
156
 
157
};
158
 
159
#endif
160