XC Open source finite element analysis program
PressureMultiYieldBase.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 //PressureMultiYieldBase.h
28 
29 #ifndef PressureMultiYieldBase_h
30 #define PressureMultiYieldBase_h
31 
32 #include <material/nD/NDMaterial.h>
33 #include "T2Vector.h"
34 
35 
36 namespace XC {
37 
38 class MultiYieldSurface;
39 
41 //
44  {
45  protected:
46  // user supplied
47  static int matCount;
48  static std::vector<int> ndmx; //num of dimensions (2 or 3)
49  static std::vector<int> loadStagex; //=0 if elastic; =1 or 2 if plastic
50  static std::vector<double> rhox; //mass density
51  static std::vector<double> frictionAnglex;
52  static std::vector<double> peakShearStrainx;
53  static std::vector<double> refPressurex;
54  static std::vector<double> cohesionx;
55  static std::vector<double> pressDependCoeffx;
56  static std::vector<int> numOfSurfacesx;
57 
58  // internal
59  static std::vector<double> residualPressx;
60  static std::vector<double> stressRatioPTx;
61  static Matrix theTangent;
62  static T2Vector subStrainRate;
63 
64  int matN;
65  mutable int e2p;
66  mutable std::vector<MultiYieldSurface> theSurfaces; // NOTE: surfaces[0] is not used
67  mutable std::vector<MultiYieldSurface> committedSurfaces;
68  mutable int activeSurfaceNum;
69  mutable int committedActiveSurf;
70  mutable T2Vector currentStress;
71  mutable T2Vector trialStress;
72  T2Vector currentStrain;
73  T2Vector strainRate;
74 
75  protected:
76  void setup(int nd, double r, double frictionAng,double peakShearStra, double refPress, double pressDependCoe, double cohesi,int numberOfYieldSurf);
77  int sendData(CommParameters &);
78  int recvData(const CommParameters &);
79  public:
80  // Initialization constructor
81  PressureMultiYieldBase (int tag, int classTag, int nd, double rho, double frictionAng, double peakShearStra, double refPress, double pressDependCoe, double cohesi = 0.1,int numberOfYieldSurf = 20),
82 
83  PressureMultiYieldBase(int tag, int classTag);
86  };
87 } // end of XC namespace
88 
89 #endif
Tensor de segundo orden.
Definition: T2Vector.h:67
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
int recvData(const CommParameters &)
Receives object members through the channel being passed as parameter.
Definition: PressureMultiYieldBase.cc:189
Definition: Matrix.h:82
??.
Definition: PressureMultiYieldBase.h:43
int sendData(CommParameters &)
Send object members through the channel being passed as parameter.
Definition: PressureMultiYieldBase.cc:175
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34