XC Open source finite element analysis program
MultiaxialCyclicPlasticityPlaneStrain.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  | MultiaxialCyclicPlasticity NDMaterial |
45  + +
46  |--------------------------------------------------------------------------|
47  | |
48  + Authors: Gang Wang AND Professor Nicholas Sitar +
49  | |
50  | Department of Civil and Environmental Engineering |
51  + Univeristy of California, Berkeley, CA 94720, USA +
52  | |
53  | Email: wang@ce.berkeley.edu (G.W.) |
54  | |
55  +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----*/
56 #ifndef MultiaxialCyclicPlasticityPlaneStrain_h
57 #define MultiaxialCyclicPlasticityPlaneStrain_h
58 
59 #include <utility/matrix/Vector.h>
60 #include <utility/matrix/Matrix.h>
61 
62 #include "material/nD/soil/cyclicSoil/MultiaxialCyclicPlasticity.h"
63 
64 namespace XC{
66 //
69  {
70 
71 //-------------------Declarations-------------------------------
72 
73  private :
74 
75  //static vectors and matrices
76  static Vector strain_vec ; //strain in vector notation
77  static Vector stress_vec ; //stress in vector notation
78  static Matrix tangent_matrix ; //material tangent in matrix notation
79  public :
80 
82  //null constructor
84 
85  //full constructor
87  double rho,
88  double K,
89  double G,
90  double Su,
91  double Ho_kin,
92  double Parameter_h,
93  double Parameter_m,
94  double Parameter_beta,
95  double Kcoeff,
96  double viscosity=0 );
97 
98  //elastic constructor // add density by Gang Wang
99  MultiaxialCyclicPlasticityPlaneStrain( int tag, double rho, double K, double G );
100 
101  //make a clone of this material
102  NDMaterial* getCopy(void) const;
103 
104  //send back type of material
105  const std::string &getType( ) const ;
106 
107  //send back order of strain in vector form
108  int getOrder( ) const ;
109 
110 
111  //get the strain and integrate plasticity equations
112  int setTrialStrain( const Vector &strain_from_element);
113 
114  //unused trial strain functions
115  int setTrialStrain( const Vector &v, const Vector &r );
116  int setTrialStrainIncr( const Vector &v );
117  int setTrialStrainIncr( const Vector &v, const Vector &r );
118 
119  //send back the strain
120  const Vector& getStrain(void) const;
121 
122  //send back the stress
123  const Vector& getStress(void) const;
124 
125  //send back the tangent
126  const Matrix& getTangent(void) const;
127  const Matrix& getInitialTangent(void) const;
128 
129  //this is mike's problem
130  int setTrialStrain(const Tensor &v);
131  int setTrialStrain(const Tensor &v, const Tensor &r);
132  int setTrialStrainIncr(const Tensor &v);
133  int setTrialStrainIncr(const Tensor &v, const Tensor &r);
134  const Tensor& getTangentTensor( );
135 
136  //swap history variables
137  //int commitState( );
138  //int revertToLastCommit( );
139  //int revertToStart( );
140  };
141 
142 //end of MultiaxialCyclicPlasticityPlaneStrain declarations
143 
144 } //fin de namespace XC
145 #endif
146 
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: MultiaxialCyclicPlasticityPlaneStrain.cpp:123
const Matrix & getTangent(void) const
Return the tangent stiffness matrix.
Definition: MultiaxialCyclicPlasticityPlaneStrain.cpp:195
int setTrialStrainIncr(const Vector &v)
Asigna el valor del incremento de la trial strain.
Definition: MultiaxialCyclicPlasticityPlaneStrain.cpp:147
??.
Definition: MultiaxialCyclicPlasticityPlaneStrain.h:68
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: MultiaxialCyclicPlasticityPlaneStrain.cpp:105
Definition: Matrix.h:82
const Vector & getStress(void) const
Returns stress.
Definition: MultiaxialCyclicPlasticityPlaneStrain.cpp:185
const Vector & getStrain(void) const
Returns strain.
Definition: MultiaxialCyclicPlasticityPlaneStrain.cpp:174
================================================================================
Definition: ContinuaReprComponent.h:34