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