xc
PyLiq1.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 ** Module: PyLiq1.h
29 **
30 ** Purpose: Provide a p-y material that gets pore pressure from a
31 ** specified element that contains a PorousFluidSolid.
32 **
33 **
34 ** Developed by Ross W. Boulanger
35 ** (C) Copyright 2002, All Rights Reserved.
36 **
37 ** ****************************************************************** */
38 
39 // $Revision: 1.0
40 // $Date: 2002/5/15
41 // $Source: /OpenSees/SRC/material/uniaxial/PyLiq1.h
42 
43 #ifndef PYLIQ1_H
44 #define PYLIQ1_H
45 
46 // Written: RWB
47 // Created: May 2002
48 //
49 // Description: This file contains the class definition for PyLiq1.
50 //
51 
52 #include "PySimple1.h"
53 
54 namespace XC{
55  class FourNodeQuad;
56 
58 //
60 class PyLiq1 : public PySimple1
61  {
62  private:
63  // other parameters in PySimple1 base class
64  double pRes;
65 
66  // Committed and trial values for p, y, and ru
67  double Ty;
68  double Cy;
69  double Tp;
70  double Cp;
71  double Tangent;
72  double maxTangent;
73  double Tru;
74  double Cru;
75  double Hru;
76 
77  // Solid element from which pore pressures are obtained, domain pointer
78  // and stage information to get the initial vertical effective stress.
79  int solidElem1;
80  int solidElem2;
81  double meanConsolStress;
82  static int loadStage;
83  int lastLoadStage;
84  std::string elemFlag;
85  Domain *theDomain;
86  FourNodeQuad *theQuad1;
87  FourNodeQuad *theQuad2;
88 
89  // Initial tangent
90  double initialTangent;
91 
92  // Function for obtaining effective stresses from adjoining solid soil elements
93  double getEffectiveStress(void);
94  static Vector stressV3;
95  protected:
96  int sendData(CommParameters &);
97  int recvData(const CommParameters &);
98  public:
99  PyLiq1(int tag, int classtag, int soilType, double pult, double y50, double drag,
100  double dashpot, double pRes, int solidElem1, int solidElem2, Domain *theDomain);
101  PyLiq1(int tag, int classtag= MAT_TAG_PyLiq1);
102  PyLiq1(void);
103 
104  int setTrialStrain(double y, double yRate);
105  double getStrain(void) const;
106  double getStress(void) const;
107  double getTangent(void) const;
108  double getStrainRate(void) const;
109  double getDampTangent(void) const;
110  double getInitialTangent(void) const;
111 
112  int commitState(void);
113  int revertToLastCommit(void);
114  int revertToStart(void);
115 
116  UniaxialMaterial *getCopy(void) const;
117 
118  int sendSelf(CommParameters &);
119  int recvSelf(const CommParameters &);
120 
121  // Command for initiating vertConsolStress from TclUpdateMaterialStageCommand
122  int updateParameter(int snum, Information &eleInformation);
123  void Print(std::ostream &s, int flag =0);
124  };
125 }// fin namespace
126 #endif // PYLIQ1_H
Float vector abstraction.
Definition: Vector.h:93
void Print(std::ostream &s, int flag=0)
Print stuff.
Definition: PyLiq1.cpp:484
Information about an element.
Definition: Information.h:80
double getTangent(void) const
Return the current value of the tangent for the trial strain.
Definition: PyLiq1.cpp:199
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:92
double getDampTangent(void) const
default operation for damping tangent is zero
Definition: PyLiq1.cpp:205
Uniaxial p-y material that incorporates liquefaction effects.
Definition: PyLiq1.h:60
int sendData(CommParameters &)
Send object members through the channel being passed as parameter.
Definition: PyLiq1.cpp:428
double getStress(void) const
Return the current value of stress.
Definition: PyLiq1.cpp:185
UniaxialMaterial * getCopy(void) const
Virtual constructor.
Definition: PyLiq1.cpp:423
int recvSelf(const CommParameters &)
Receives object through the channel being passed as parameter.
Definition: PyLiq1.cpp:466
double dashpot
dashpot on the far-field (elastic) component
Definition: PYBase.h:61
int sendSelf(CommParameters &)
Sends object through the channel being passed as parameter.
Definition: PyLiq1.cpp:452
int updateParameter(int snum, Information &eleInformation)
Updates the parameter identified by parameterID with info.
Definition: PyLiq1.cpp:400
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Communication parameters between processes.
Definition: CommParameters.h:65
Four node quad.
Definition: FourNodeQuad.h:73
Simple uniaxial p-y material for use with a zeroLength element.
Definition: PySimple1.h:59
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:116
int setTrialStrain(double y, double yRate)
Sets the value of the trial strain.
Definition: PyLiq1.cpp:93
int recvData(const CommParameters &)
Receives object members through the channel being passed as parameter.
Definition: PyLiq1.cpp:440
double getStrainRate(void) const
default operation for strain rate is zero
Definition: PyLiq1.cpp:217
double drag
ratio of max gap drag force to spring capacity
Definition: PySimple1.h:63
double getInitialTangent(void) const
Get initial stiffness.
Definition: PyLiq1.cpp:202
int soilType
Soil type.
Definition: PYBase.h:56