XC Open source finite element analysis program
MultiaxialCyclicPlasticity3D.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 ** OpenSees - Open System for Earthquake Engineering Simulation **
29 ** Pacific Earthquake Engineering Research Center **
30 ** **
31 ** **
32 ** (C) Copyright 1999, The Regents of the University of California **
33 ** All Rights Reserved. **
34 ** **
35 ** Commercial use of this program without express permission of the **
36 ** University of California, Berkeley, is strictly prohibited. See **
37 ** file 'COPYRIGHT' in main directory for information on usage and **
38 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
39 ** **
40 ** ****************************************************************** */
41 
42 
43 /*----+----+----+----+----+----+----+----+----+----+----+----+----+----+----*
44  | |
45  | MultiaxialCyclicPlasticity NDMaterial |
46  + +
47  |--------------------------------------------------------------------------|
48  | |
49  + Authors: Gang Wang AND Professor Nicholas Sitar +
50  | |
51  | Department of Civil and Environmental Engineering |
52  + Univeristy of California, Berkeley, CA 94720, USA +
53  | |
54  | Email: wang@ce.berkeley.edu (G.W.) |
55  | |
56  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----*/
57 
58 
59 #ifndef MultiaxialCyclicPlasticity3D_h
60 #define MultiaxialCyclicPlasticity3D_h
61 
62 #include <utility/matrix/Vector.h>
63 #include <utility/matrix/Matrix.h>
64 
65 #include <material/nD/soil/cyclicSoil/MultiaxialCyclicPlasticity.h>
66 
67 namespace XC{
69 //
72  {
73 
74 //-------------------Declarations-------------------------------
75 
76  public :
77 
79  //null constructor
81 
82  //full constructor
84  double rho,
85  double K,
86  double G,
87  double Su,
88  double Ho_kin,
89  double Parameter_h,
90  double Parameter_m,
91  double Parameter_beta,
92  double Kcoeff,
93  double viscosity = 0
94  ) ;
95 
96 
97  //elastic constructor
98  MultiaxialCyclicPlasticity3D( int tag, double rho, double K, double G ) ;
99 
100  //make a clone of this material
101  NDMaterial* getCopy(void) const;
102 
103  //send back type of material
104  const std::string &getType( ) const ;
105 
106  //send back order of strain in vector form
107  int getOrder( ) const ;
108 
109  //get the strain and integrate plasticity equations
110  int setTrialStrain( const Vector &strain_from_element) ;
111 
112  //unused trial strain functions
113  int setTrialStrain( const Vector &v, const Vector &r ) ;
114  int setTrialStrainIncr( const Vector &v ) ;
115  int setTrialStrainIncr( const Vector &v, const Vector &r ) ;
116 
117  //send back the strain
118  const Vector& getStrain(void) const;
119 
120  //send back the stress
121  const Vector& getStress(void) const;
122 
123  //send back the tangent
124  const Matrix& getTangent(void) const;
125  const Matrix& getInitialTangent(void) const;
126 
127  //this is mike's problem
128  int setTrialStrain(const Tensor &v) ;
129  int setTrialStrain(const Tensor &v, const Tensor &r) ;
130  int setTrialStrainIncr(const Tensor &v) ;
131  int setTrialStrainIncr(const Tensor &v, const Tensor &r) ;
132  const Tensor& getTangentTensor( ) ;
133 
134  private :
135 
136  //static vectors and matrices
137  static Vector strain_vec ; //strain in vector notation
138  static Vector stress_vec ; //stress in vector notation
139  static Matrix tangent_matrix ; //material tangent in matrix notation
140 
141 } ; //end of MultiaxialCyclicPlasticity3D declarations
142 
143 } //end of XC namespace
144 #endif
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
Definition: Vector.h:82
??.
Definition: MultiaxialCyclicPlasticity.h:117
int setTrialStrain(const Vector &strain_from_element)
Asigna el trial strain value.
Definition: MultiaxialCyclicPlasticity3D.cpp:127
const Vector & getStrain(void) const
Returns strain.
Definition: MultiaxialCyclicPlasticity3D.cpp:190
Definition: Matrix.h:82
const Vector & getStress(void) const
Returns stress.
Definition: MultiaxialCyclicPlasticity3D.cpp:207
const Matrix & getTangent(void) const
Return the tangent stiffness matrix.
Definition: MultiaxialCyclicPlasticity3D.cpp:223
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: MultiaxialCyclicPlasticity3D.cpp:110
??.
Definition: MultiaxialCyclicPlasticity3D.h:71
================================================================================
Definition: ContinuaReprComponent.h:34
int setTrialStrainIncr(const Vector &v)
Asigna el valor del incremento de la trial strain.
Definition: MultiaxialCyclicPlasticity3D.cpp:169