xc
MC10CreepShrinkageState.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 MC10CreepShrinkageState_h
30 #define MC10CreepShrinkageState_h
31 
32 #include "material/uniaxial/concrete/CreepShrinkageStateBase.h"
33 
34 namespace XC {
35 
40  {
41  private:
42 
43  double eps_crb;
44  double eps_crd;
45  double eps_shb;
46  double eps_shd;
47 
48  double epsP_crb;
49  double epsP_crd;
50  double epsP_shb;
51  double epsP_shd;
52 
53  protected:
54  void commit_eps_and_sig_init(void);
55  int sendData(Communicator &);
56  int recvData(const Communicator &);
57  public:
59  MC10CreepShrinkageState(const double &_age, const double &_tcast, const double &_Et);
60  void setup_parameters(const double &);
61 
62 
63  double getCreepBasic(void) const
64  { return eps_crb; }
65  double getCreepDrying(void) const
66  { return eps_crd; }
67  double getShrinkBasic(void) const
68  { return eps_shb; }
69  double getShrinkDrying(void) const
70  { return eps_shd; }
71 
72  void setCreepBasic(const double &d)
73  { this->eps_crb= d; }
74  void setCreepDrying(const double &d)
75  { this->eps_crd= d; }
76  void setShrinkBasic(const double &d)
77  { this->eps_shb= d; }
78  void setShrinkDrying(const double &d)
79  { this->eps_shd= d; }
80 
81  void set_eps_cr_sh_m_total(const double &_eps_crb, const double &_eps_crd, const double &_eps_shb, const double &_eps_shd, const double &_eps_m, const double &_eps_total)
82  {
83  CreepShrinkageStateBase::set_eps_m_total(_eps_m, _eps_total);
84  this->eps_crb= _eps_crb; // Basic creep strain.
85  this->eps_crd= _eps_crd; // Drying creep strain.
86  this->eps_shb= _eps_shb; // Basic shrinkage strain.
87  this->eps_shd= _eps_shd; // Drying shrinkage strain.
88  }
89  void update_mech_strain(void)
90  {
91  const double shrinkage_strain= this->eps_shb + this->eps_shd;
92  const double creep_strain= this->eps_crb + this->eps_crd;
93  const double non_mech_strain= shrinkage_strain + creep_strain;
94  this->eps_m= this->eps_total - non_mech_strain;
95  }
96 
97  void use_creep_shrinkage_from_last_commit(void)
98  {
99  this->eps_crb= this->epsP_crb; // Basic creep strain.
100  this->eps_crd= this->epsP_crd; // Drying creep strain.
101  this->eps_shb= this->epsP_shb; // Basic shrinkage strain.
102  this->eps_shd= this->epsP_shd; // Drying shrinkage strain.
103  this->update_mech_strain(); // Mechanical strain.
104  }
105 
106  int commit_state(const int &count, const double &hstvP_sig, const double &currentTime);
107  int revert_to_last_commit(void);
108  int revert_to_start(const double &_Et);
109 
110  int sendSelf(Communicator &);
111  int recvSelf(const Communicator &);
112 
113  void Print(std::ostream &s, int flag =0) const;
114 
115  };
116 } // end of XC namespace
117 
118 
119 #endif
120 
Communication parameters between processes.
Definition: Communicator.h:66
int recvData(const Communicator &)
Receives object members through the communicator argument.
Definition: MC10CreepShrinkageState.cc:103
Class that groups the variables that keep track of the creep and shrinkage strains according to the M...
Definition: MC10CreepShrinkageState.h:39
void setup_parameters(const double &)
Sets initial values for the concrete parameters.
Definition: MC10CreepShrinkageState.cc:48
Base class that groups the variables that keep track of the creep and shrinkage strains.
Definition: CreepShrinkageStateBase.h:40
int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: MC10CreepShrinkageState.cc:127
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: MC10CreepShrinkageState.cc:96
double eps_total
Total strain.
Definition: CreepShrinkageStateBase.h:53
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
double eps_m
Mechanical strain.
Definition: CreepShrinkageStateBase.h:50
int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: MC10CreepShrinkageState.cc:111