xc
MC10CreepSteps.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 
29 #ifndef MC10CreepSteps_h
30 #define MC10CreepSteps_h
31 
32 #include "material/uniaxial/concrete/CreepSteps.h"
33 
34 namespace XC {
35 
37  {
38  private:
43  double get_mech_strain(const double &Ec, int i)
44  {
45  return this->DSIG_i[i]/Ec; // CONSTANT STRESS within Time interval.
46  }
47 
48  protected:
49  std::vector<float> PHIB_i;
50  std::vector<float> PHID_i;
51 
52  std::size_t resize(void);
53  public:
54  MC10CreepSteps(void);
55 
56  double getLastPhiB(void) const
57  { return this->PHIB_i[this->count]; }
58  double getLastPhiD(void) const
59  { return this->PHID_i[this->count]; }
60 
61 
62  template <class CreepConcrete>
63  double computeBasicPhi(const CreepConcrete &concrete, const double &Ec, const double &time)
64  {
65  this->setCreepDt();
66 
67  double retval = 0.0;
68  for(int i = 1; i<=count; i++)
69  {
70  this->PHIB_i[i] = concrete.setPhiBasic(time,this->TIME_i[i]); // Determine PHI
71  retval+= this->PHIB_i[i]*this->get_mech_strain(Ec, i); // CONSTANT STRESS within Time interval.
72  }
73 
74  return retval;
75  }
76 
77  template <class CreepConcrete>
78  double computeDryingPhi(const CreepConcrete &concrete, const double &Ec, const double &time)
79  {
80  this->setCreepDt();
81 
82  double retval = 0.0;
83  for(int i = 1; i<=count; i++)
84  {
85  this->PHID_i[i] = concrete.setPhiDrying(time,this->TIME_i[i]); // Determine PHI
86  retval+= this->PHID_i[i]*this->get_mech_strain(Ec, i); // CONSTANT STRESS within Time interval.
87  }
88 
89  return retval;
90  }
91 
92  int revertToStart(void);
93  };
94 
95 } // end of XC namespace
96 
97 #endif
98 
std::vector< float > PHIB_i
split into basic and drying creep (ntosic)
Definition: MC10CreepSteps.h:49
std::vector< float > PHID_i
split into basic and drying creep (ntosic)
Definition: MC10CreepSteps.h:50
Definition: MC10CreepSteps.h:36
std::size_t resize(void)
Resize the vectors that store the creep history.
Definition: MC10CreepSteps.cc:31
Definition: CreepSteps.h:40
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
MC10CreepSteps(void)
Constructor.
Definition: MC10CreepSteps.cc:43