XC Open source finite element analysis program
FluidSolidPorousMaterial.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 // $Revision: 1.11 $
28 // $Date: 2003/10/07 21:20:48 $
29 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/FluidSolidPorousMaterial.h,v $
30 
31 // Written: ZHY
32 // Created: August 2000
33 // Revision: A
34 //
35 // Description: This file contains the class prototype for FluidSolidPorousMaterial.
36 //
37 // What: "@(#) FluidSolidPorousMaterial.h, revA"
38 
39 #ifndef FluidSolidPorousMaterial_h
40 #define FluidSolidPorousMaterial_h
41 
42 #include <material/nD/NDMaterial.h>
43 
44 namespace XC {
45 class Response;
46 
48 //
50 //
52 //
55  {
56  private:
57  static int matCount;
58  static int* ndmx;
59  static int* loadStagex;
60  static double *combinedBulkModulusx;
61  static double pAtm;
62  int matN;
63  NDMaterial *theSoilMaterial;
64  mutable double trialExcessPressure;
65  double currentExcessPressure;
66  double trialVolumeStrain;
67  double currentVolumeStrain;
68  mutable double initMaxPress;
69  mutable int e2p;
70 
71  static Vector workV3;
72  static Vector workV6;
73  static Matrix workM3;
74  static Matrix workM6;
75 
76  void libera(void);
77  void alloc(const NDMaterial *);
78  protected:
79  int sendData(CommParameters &);
80  int recvData(const CommParameters &);
81  public:
82  // Initialization constructor
83  FluidSolidPorousMaterial(int tag= 0);
84  FluidSolidPorousMaterial(int tag, int nd,const NDMaterial &soilMat, double combinedBulkModul, double atm=101.);
87 
88  // Destructor: clean up memory storage space.
89  virtual ~FluidSolidPorousMaterial();
90 
91  // Sets the values of the trial strain tensor.
92  int setTrialStrain(const Vector &strain);
93 
94  // Sets the values of the trial strain and strain rate tensors.
95  int setTrialStrain(const Vector &v, const Vector &r);
96 
97  int setTrialStrainIncr(const Vector &v);
98  int setTrialStrainIncr(const Vector &v, const Vector &r);
99 
100  // Calculates current tangent stiffness.
101  const Matrix &getTangent(void) const;
102  const Matrix &getInitialTangent(void) const;
103 
104  double getRho(void) const;
105 
106  // Calculates the corresponding stress increment(rate), for a given strain increment.
107  const Vector &getStress(void) const;
108  const Vector &getStrain(void) const;
109  const Vector &getCommittedStress(void);
110  const Vector &getCommittedStrain(void);
111  const Vector &getCommittedPressure(void);
112 
113  // Accepts the current trial strain values as being on the solution path, and updates
114  // all model parameters related to stress/strain states. Return 0 on success.
115  int commitState(void);
116 
117  // Revert the stress/strain states to the last committed states. Return 0 on success.
118  int revertToLastCommit(void);
119 
120  int revertToStart(void);
121 
122  // Return an exact copy of itself.
123  NDMaterial *getCopy(void) const;
124 
125  // Return a copy of itself if "code"="PlainStrain" or "ThreeDimensional", otherwise return null.
126  NDMaterial *getCopy(const std::string &) const;
127 
128  // Return the string "PlaneStrain" or "ThreeDimensional".
129  const std::string &getType(void) const ;
130 
131  // Return 3 or 6.
132  int getOrder(void) const ;
133 
134  int sendSelf(CommParameters &);
135  int recvSelf(const CommParameters &);
136  Response *setResponse(const std::vector<std::string> &argv, Information &matInfo);
137  int getResponse(int responseID, Information &matInformation);
138  void Print(std::ostream &s, int flag =0);
139 
140  int updateParameter(int responseID, Information &eleInformation);
141 
142  // RWB; PyLiq1 & TzLiq1 need to see the excess pore pressure and initial stresses.
143  friend class PyLiq1;
144  friend class TzLiq1;
145  };
146 } // end of XC namespace
147 
148 #endif
int getResponse(int responseID, Information &matInformation)
Returns material response.
Definition: FluidSolidPorousMaterial.cpp:461
int setTrialStrain(const Vector &strain)
Asigna el trial strain value.
Definition: FluidSolidPorousMaterial.cpp:160
??.
Definition: TzLiq1.h:60
const Vector & getCommittedStrain(void)
Returns commited strains.
Definition: FluidSolidPorousMaterial.cpp:315
const Vector & getCommittedStress(void)
Returns commited stresses.
Definition: FluidSolidPorousMaterial.cpp:309
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
Definition: Vector.h:82
const Vector & getStrain(void) const
Returns strain.
Definition: FluidSolidPorousMaterial.cpp:331
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: FluidSolidPorousMaterial.cpp:359
int recvData(const CommParameters &)
Receives object members through the channel being passed as parameter.
Definition: FluidSolidPorousMaterial.cpp:400
Information about an element.
Definition: Information.h:80
int sendSelf(CommParameters &)
Sends object through the channel being passed as parameter.
Definition: FluidSolidPorousMaterial.cpp:411
const Matrix & getTangent(void) const
Return the tangent stiffness matrix.
Definition: FluidSolidPorousMaterial.cpp:232
??.
Definition: FluidSolidPorousMaterial.h:54
const Vector & getStress(void) const
Returns stress.
Definition: FluidSolidPorousMaterial.cpp:265
int sendData(CommParameters &)
Send object members through the channel being passed as parameter.
Definition: FluidSolidPorousMaterial.cpp:389
Definition: Matrix.h:82
FluidSolidPorousMaterial & operator=(const FluidSolidPorousMaterial &tro)
Assignment operator.
Definition: FluidSolidPorousMaterial.cpp:141
??.
Definition: PyLiq1.h:62
int setTrialStrainIncr(const Vector &v)
Asigna el valor del incremento de la trial strain.
Definition: FluidSolidPorousMaterial.cpp:196
int recvSelf(const CommParameters &)
Receives object through the channel being passed as parameter.
Definition: FluidSolidPorousMaterial.cpp:425
Communication parameters between processes.
Definition: CommParameters.h:65
virtual ~FluidSolidPorousMaterial()
Destructor.
Definition: FluidSolidPorousMaterial.cpp:156
================================================================================
Definition: ContinuaReprComponent.h:34
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: FluidSolidPorousMaterial.cpp:485
Definition: Response.h:71