XC Open source finite element analysis program
BoucWenMaterial.h
1 //----------------------------------------------------------------------------
2 // XC program; finite element analysis code
3 // for structural analysis and design.
4 //
5 // Copyright (C) Luis Claudio Pérez Tato
6 //
7 // This program derives from OpenSees <http://opensees.berkeley.edu>
8 // developed by the «Pacific earthquake engineering research center».
9 //
10 // Except for the restrictions that may arise from the copyright
11 // of the original program (see copyright_opensees.txt)
12 // XC is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This software is distributed in the hope that it will be useful, but
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program.
25 // If not, see <http://www.gnu.org/licenses/>.
26 //----------------------------------------------------------------------------
27 /* ****************************************************************** **
28 ** OpenSees - Open System for Earthquake Engineering Simulation **
29 ** Pacific Earthquake Engineering Research Center **
30 ** **
31 ** **
32 ** (C) Copyright 2001, The Regents of the University of California **
33 ** All Rights Reserved. **
34 ** **
35 ** Commercial use of this program without express permission of the **
36 ** University of California, Berkeley, is strictly prohibited. See **
37 ** file 'COPYRIGHT' in main directory for information on usage and **
38 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
39 ** **
40 ** Developed by: **
41 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
42 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
43 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
44 ** **
45 ** Reliability module developed by: **
46 ** Terje Haukaas (haukaas@ce.berkeley.edu) **
47 ** Armen Der Kiureghian (adk@ce.berkeley.edu) **
48 ** **
49 ** ****************************************************************** */
50 
51 // $Revision: 1.1 $
52 // $Date: 2003/03/06 18:34:14 $
53 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/BoucWenMaterial.h,v $
54 
55 
56 //
57 // Written by Terje Haukaas (haukaas@ce.berkeley.edu)
58 //
59 
60 #ifndef BoucWenMaterial_h
61 #define BoucWenMaterial_h
62 
63 #include <material/uniaxial/UniaxialMaterial.h>
64 
65 namespace XC {
66  class Matrix;
67 
69 //
72  {
73  private:
74  // Material parameters
75  double alpha;
76  double ko;
77  double n;
78  double gamma;
79  double beta;
80  double Ao;
81  double deltaA;
82  double deltaNu;
83  double deltaEta;
84 
85  // History variables(trial and commited)
86  double Tstrain, Cstrain;
87  double Tz, Cz;
88  double Te, Ce;
89 
90  // Ohter variables
91  double Tstress, Ttangent;
92 
93  double tolerance;
94  int maxNumIter;
95 
96  // Sensitivit stuff
97  int parameterID;
98  Matrix *SHVs;
99  public:
100  BoucWenMaterial(int tag, double alpha, double ko, double n, double gamma, double beta, double Ao,
101  double deltaA, double deltaNu, double deltaEta, double tolerance, int maxNumIter);
102  BoucWenMaterial(void);
103  ~BoucWenMaterial(void);
104  int setTrialStrain(double strain, double strainRate = 0.0);
105  double getStrain(void) const;
106  double getStress(void) const;
107  double getTangent(void) const;
108  static double signum(double);
109  int commitState(void);
110  int revertToLastCommit(void);
111  int revertToStart(void);
112  UniaxialMaterial *getCopy(void) const;
113  int sendSelf(CommParameters &);
114  int recvSelf(const CommParameters &);
115  void Print(std::ostream &s, int flag =0);
116 
117  // Reliability and sensitivity stuff
118  double getInitialTangent(void) const;
119  int setParameter(const std::vector<std::string> &argv, Parameter &param);
120  int updateParameter(int parameterID, Information &info);
121  int activateParameter(int parameterID);
122  double getStressSensitivity(int gradNumber, bool conditional);
123  double getStrainSensitivity(int gradNumber);
124  double getTangentSensitivity(int gradNumber);
125  double getDampTangentSensitivity(int gradNumber);
126  double getRhoSensitivity(int gradNumber);
127  int commitSensitivity(double strainGradient, int gradNumber, int numGrads);
128  };
129 } // end of XC namespace
130 
131 
132 #endif
133 
static double signum(double)
Returns the signo del valor.
Definition: BoucWenMaterial.cpp:100
Information about an element.
Definition: Information.h:80
~BoucWenMaterial(void)
Destructor.
Definition: BoucWenMaterial.cpp:93
??.
Definition: BoucWenMaterial.h:71
Definition: Matrix.h:82
Definition: Parameter.h:65
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: BoucWenMaterial.cpp:269
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: BoucWenMaterial.cpp:293
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:88