XC Open source finite element analysis program
J2ThreeDimensional.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 // $Revision: 1.5 $
43 // $Date: 2003/02/14 23:01:25 $
44 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/J2ThreeDimensional.h,v $
45 
46 // Written: Ed "C++" Love
47 
48 //
49 // J2ThreeDimensional isotropic hardening material class
50 //
51 // Elastic Model
52 // sigma = K*trace(epsilion_elastic) + (2*G)*dev(epsilon_elastic)
53 //
54 // Yield Function
55 // phi(sigma,q) = || dev(sigma) || - sqrt(2/3)*q(xi)
56 //
57 // Saturation Isotropic Hardening with linear term
58 // q(xi) = simga_0 + (sigma_infty - sigma_0)*exp(-delta*xi) + H*xi
59 //
60 // Flow Rules
61 // \dot{epsilon_p} = gamma * d_phi/d_sigma
62 // \dot{xi} = -gamma * d_phi/d_q
63 //
64 // Linear Viscosity
65 // gamma = phi / eta ( if phi > 0 )
66 //
67 // Backward Euler Integration Routine
68 // Yield condition enforced at time n+1
69 //
70 // Send strains in following format :
71 //
72 // strain_vec = { eps_00
73 // eps_11
74 // eps_22
75 // 2 eps_01
76 // 2 eps_12
77 // 2 eps_20 } <--- note the 2
78 //
79 // set eta := 0 for rate independent case
80 //
81 
82 #ifndef J2THREEDIMENSIONAL_H
83 #define J2THREEDIMENSIONAL_H
84 
85 #include "material/nD/J2Plasticity.h"
86 
87 namespace XC{
89 //
93 
94 //-------------------Declarations-------------------------------
95 
96  public :
97 
98  J2ThreeDimensional(int tag);
99 
100  //null constructor
102 
103  //full constructor
104  J2ThreeDimensional( int tag,
105  double K,
106  double G,
107  double yield0,
108  double yield_infty,
109  double d,
110  double H,
111  double viscosity = 0 );
112 
113 
114  //elastic constructor
115  J2ThreeDimensional( int tag, double K, double G );
116 
117  //make a clone of this material
118  NDMaterial* getCopy(void) const;
119 
120  //send back type of material
121  const std::string &getType( ) const ;
122 
123  //send back order of strain in vector form
124  int getOrder( ) const ;
125 
126  //get the strain and integrate plasticity equations
127  int setTrialStrain( const Vector &strain_from_element);
128 
129  //unused trial strain functions
130  int setTrialStrain( const Vector &v, const Vector &r );
131  int setTrialStrainIncr( const Vector &v );
132  int setTrialStrainIncr( const Vector &v, const Vector &r );
133 
134  //send back the strain
135  const Vector& getStrain(void) const;
136 
137  //send back the stress
138  const Vector& getStress(void) const;
139 
140  //send back the tangent
141  const Matrix& getTangent(void) const;
142  const Matrix& getInitialTangent(void) const;
143 
144  //this is mike's problem
145  int setTrialStrain(const Tensor &v);
146  int setTrialStrain(const Tensor &v, const Tensor &r);
147  int setTrialStrainIncr(const Tensor &v);
148  int setTrialStrainIncr(const Tensor &v, const Tensor &r);
149  const Tensor& getTangentTensor(void) const;
150 //jeremic@ucdavis.edu 22jan2001 const Tensor& getStressTensor( );
151 //jeremic@ucdavis.edu 22jan2001 const Tensor& getStrainTensor( );
152 
153  private :
154 
155  //static vectors and matrices
156  static Vector strain_vec ; //strain in vector notation
157  static Vector stress_vec ; //stress in vector notation
158  static Matrix tangent_matrix ; //material tangent in matrix notation
159 
160 } ; //end of J2ThreeDimensional declarations
161 
162 
163 } //end of XC namespace
164 
165 #endif
int setTrialStrain(const Vector &strain_from_element)
Asigna el trial strain value.
Definition: J2ThreeDimensional.cpp:150
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
Definition: Vector.h:82
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: J2ThreeDimensional.cpp:135
J2 Isotropic hardening material class.
Definition: J2Plasticity.h:90
const Vector & getStrain(void) const
Returns strain.
Definition: J2ThreeDimensional.cpp:200
const Matrix & getTangent(void) const
Return the tangent stiffness matrix.
Definition: J2ThreeDimensional.cpp:233
Definition: Matrix.h:82
int setTrialStrainIncr(const Vector &v)
Asigna el valor del incremento de la trial strain.
Definition: J2ThreeDimensional.cpp:179
J2 Isotropic hardening material class for 3D problems.
Definition: J2ThreeDimensional.h:92
const Vector & getStress(void) const
Returns stress.
Definition: J2ThreeDimensional.cpp:217
================================================================================
Definition: ContinuaReprComponent.h:34