00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #include <J2AxiSymm.h>
00054
00055
00056 Vector J2AxiSymm :: strain_vec(4) ;
00057 Vector J2AxiSymm :: stress_vec(4) ;
00058 Matrix J2AxiSymm :: tangent_matrix(4,4) ;
00059
00060
00061
00062 J2AxiSymm :: J2AxiSymm( ) :
00063 J2Plasticity( )
00064 { }
00065
00066
00067
00068
00069 J2AxiSymm :: J2AxiSymm( int tag,
00070 double K,
00071 double G,
00072 double yield0,
00073 double yield_infty,
00074 double d,
00075 double H,
00076 double viscosity ) :
00077 J2Plasticity( tag, ND_TAG_J2AxiSymm,
00078 K, G, yield0, yield_infty, d, H, viscosity )
00079 { }
00080
00081
00082
00083
00084 J2AxiSymm :: J2AxiSymm( int tag,
00085 double K,
00086 double G ) :
00087 J2Plasticity( tag, ND_TAG_J2AxiSymm, K, G )
00088 { }
00089
00090
00091
00092
00093 J2AxiSymm :: ~J2AxiSymm( )
00094 { }
00095
00096
00097
00098 NDMaterial* J2AxiSymm :: getCopy( )
00099 {
00100 J2AxiSymm *clone;
00101 clone = new J2AxiSymm() ;
00102 *clone = *this ;
00103 return clone ;
00104 }
00105
00106
00107
00108 const char* J2AxiSymm :: getType( ) const
00109 {
00110 return "AxiSymmetric2D" ;
00111 }
00112
00113
00114
00115 int J2AxiSymm :: getOrder( ) const
00116 {
00117 return 4 ;
00118 }
00119
00120
00121
00122 int J2AxiSymm :: setTrialStrain( const Vector &strain_from_element)
00123 {
00124 strain.Zero( ) ;
00125
00126 strain(0,0) = strain_from_element(0) ;
00127 strain(1,1) = strain_from_element(1) ;
00128 strain(2,2) = strain_from_element(2) ;
00129
00130 strain(0,1) = 0.50 * strain_from_element(3) ;
00131 strain(1,0) = strain(0,1) ;
00132
00133 this->plastic_integrator( ) ;
00134
00135 return 0 ;
00136 }
00137
00138
00139
00140 int J2AxiSymm :: setTrialStrain( const Vector &v, const Vector &r )
00141 {
00142 return this->setTrialStrain( v ) ;
00143 }
00144
00145 int J2AxiSymm :: setTrialStrainIncr( const Vector &v )
00146 {
00147 return -1 ;
00148 }
00149
00150 int J2AxiSymm :: setTrialStrainIncr( const Vector &v, const Vector &r )
00151 {
00152 return -1 ;
00153 }
00154
00155
00156
00157
00158 const Vector& J2AxiSymm :: getStrain( )
00159 {
00160 strain_vec(0) = strain(0,0) ;
00161 strain_vec(1) = strain(1,1) ;
00162 strain_vec(2) = strain(2,2) ;
00163
00164 strain_vec(3) = 2.0 * strain(0,1) ;
00165
00166 return strain_vec ;
00167 }
00168
00169
00170
00171 const Vector& J2AxiSymm :: getStress( )
00172 {
00173 stress_vec(0) = stress(0,0) ;
00174 stress_vec(1) = stress(1,1) ;
00175 stress_vec(2) = stress(2,2) ;
00176
00177 stress_vec(3) = stress(0,1) ;
00178
00179 return stress_vec ;
00180 }
00181
00182
00183 const Matrix& J2AxiSymm :: getTangent( )
00184 {
00185
00186
00187
00188
00189
00190
00191
00192
00193 int ii, jj ;
00194 int i, j, k, l ;
00195
00196 for ( ii = 0; ii < 4; ii++ ) {
00197 for ( jj = 0; jj < 4; jj++ ) {
00198
00199 index_map( ii, i, j ) ;
00200 index_map( jj, k, l ) ;
00201
00202 tangent_matrix(ii,jj) = tangent[i][j][k][l] ;
00203
00204 }
00205 }
00206
00207 return tangent_matrix ;
00208 }
00209
00210
00211 int J2AxiSymm :: setTrialStrain(const Tensor &v)
00212 {
00213 return -1 ;
00214 }
00215
00216 int J2AxiSymm :: setTrialStrain(const Tensor &v, const Tensor &r)
00217 {
00218 return -1 ;
00219 }
00220
00221 int J2AxiSymm :: setTrialStrainIncr(const Tensor &v)
00222 {
00223 return -1 ;
00224 }
00225
00226 int J2AxiSymm :: setTrialStrainIncr(const Tensor &v, const Tensor &r)
00227 {
00228 return -1 ;
00229 }
00230
00231 const Tensor& J2AxiSymm :: getTangentTensor( )
00232 {
00233 return rank4 ;
00234 }
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248 int J2AxiSymm :: sendSelf(int commitTag, Channel &theChannel)
00249 {
00250 return -1 ;
00251 }
00252
00253 int J2AxiSymm :: recvSelf(int commitTag, Channel &theChannel,
00254 FEM_ObjectBroker &theBroker)
00255 {
00256 return -1 ;
00257 }
00258
00259
00260
00261