XC Open source finite element analysis program
PressureDependMultiYield.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 //<<<<<<< PressureDependMultiYield.h
28 // $Revision: 1.19 $
29 // $Date: 2004/06/15 18:58:01 $
30 //=======
31 // $Revision: 1.19 $
32 // $Date: 2004/06/15 18:58:01 $
33 //>>>>>>> 1.7
34 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/PressureDependMultiYield.h,v $
35 
36 // Written: ZHY
37 // Created: August 2000
38 
39 
40 // Description: This file contains the class prototype for PressureDependMultiYield.
41 //
42 // What: "@(#) PressureDependMultiYield.h, revA"
43 
44 #ifndef PressureDependMultiYield_h
45 #define PressureDependMultiYield_h
46 
47 #include "material/nD/soil/PressureDependMultiYieldBase.h"
48 
49 namespace XC {
50 
51 class MultiYieldSurface;
52 
54 //
57  {
58  private:
59  // user supplied
60  static double* liquefyParam4x;
61 
62  mutable T2Vector reversalStress;
63  mutable T2Vector lockStress;
64 
65  T2Vector reversalStressCommitted;
66  T2Vector lockStressCommitted;
67 
68  // Called by constructor
69  void setUpSurfaces(double *);
70  void initStrainUpdate(void);
71 
72  // Return num_strain_subincre
73  int isCriticalState(const T2Vector & stress) const;
74  void updatePPZ(const T2Vector & stress) const;
75  void PPZTranslation(const T2Vector & contactStress) const;
76  double getPPZLimits(int which, const T2Vector & contactStress) const;
77  double getPlasticPotential(const T2Vector & stress, const T2Vector & surfaceNormal) const;
78  //return 1 if stress locked; o/w return 0.
79  int stressCorrection(int crossedSurface) const;
80 
81  protected:
82  int sendData(CommParameters &);
83  int recvData(const CommParameters &);
84  public:
85  // Initialization constructor
86  PressureDependMultiYield(int tag,
87  int nd,
88  double rho,
89  double refShearModul,
90  double refBulkModul,
91  double frictionAng,
92  double peakShearStra,
93  double refPress,
94  double pressDependCoe,
95  double phaseTransformAngle,
96  double contractionParam1,
97  double dilationParam1,
98  double dilationParam2,
99  double liquefactionParam1,
100  double liquefactionParam2,
101  double liquefactionParam4,
102  int numberOfYieldSurf = 20,
103  double * gredu = 0,
104  double e = 0.6,
105  double volLimit1 = 0.9,
106  double volLimit2 = 0.02,
107  double volLimit3 = 0.7,
108  double atm = 101.,
109  double cohesi = 0.1,
110  double hv = 0.,
111  double pv = 1.);
112 
113  PressureDependMultiYield(int tag);
114 
115  // Default constructor
117 
118  // Copy constructor
120 
121  // Calculates current tangent stiffness.
122  const Matrix &getTangent(void) const;
123 
124  // Calculates the corresponding stress increment(rate), for a given strain increment.
125  const Vector &getStress(void) const;
126 
127  // Return an exact copy of itself.
128  NDMaterial *getCopy(void) const;
129 
130  // Return a copy of itself if "code"="PressureDependMultiYield", otherwise return null.
131  NDMaterial *getCopy(const std::string &) const;
132 
133  // Return the string "PressureDependMultiYield".
134  const std::string &getType(void) const ;
135 
136  int sendSelf(CommParameters &);
137  int recvSelf(const CommParameters &);
138  void Print(std::ostream &s, int flag =0);
139  // RWB; PyLiq1 & TzLiq1 need to see the excess pore pressure and initial stresses.
140  friend class PyLiq1;
141  friend class TzLiq1;
142  };
143 } // end of XC namespace
144 
145 #endif
??.
Definition: TzLiq1.h:60
int sendSelf(CommParameters &)
Sends object through the channel being passed as parameter.
Definition: PressureDependMultiYield.cpp:390
Tensor de segundo orden.
Definition: T2Vector.h:67
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
Definition: Vector.h:82
int recvSelf(const CommParameters &)
Receives object through the channel being passed as parameter.
Definition: PressureDependMultiYield.cpp:404
int recvData(const CommParameters &)
Receives object members through the channel being passed as parameter.
Definition: PressureDependMultiYield.cpp:379
const Matrix & getTangent(void) const
Return the tangent stiffness matrix.
Definition: PressureDependMultiYield.cpp:152
const Vector & getStress(void) const
Returns stress.
Definition: PressureDependMultiYield.cpp:261
??.
Definition: PressureDependMultiYieldBase.h:43
Definition: Matrix.h:82
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: PressureDependMultiYield.cpp:349
??.
Definition: PyLiq1.h:62
int sendData(CommParameters &)
Send object members through the channel being passed as parameter.
Definition: PressureDependMultiYield.cpp:368
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: PressureDependMultiYield.cpp:422
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
??.
Definition: PressureDependMultiYield.h:56