Umat crystal plasticity

35
1 SUBROUTINE UMAT(stress,statev,ddsdde,sse,spd,scd, 2 1 rpl, ddsddt, drplde, drpldt, 3 2 stran,dstran,time,dtime,temp,dtemp,predef,dpred,cmname, 4 3 ndi,nshr,ntens,nstatv,props,nprops,coords,drot,pnewdt, 5 4 celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc) 6 c WRITE (6,*) ' 7 c NOTE: MODIFICATIONS TO *UMAT FOR ABAQUS VERSION 5.3 (14 APR '94) 8 c 9 c (1) The list of variables above defining the *UMAT subroutine, 10 c and the first (standard) block of variables dimensioned below, 11 c have variable names added compared to earlier ABAQUS versions. 12 c 13 c (2) The statement: include 'aba_param.inc' must be added as below. 14 c 15 c (3) As of version 5.3, ABAQUS files use double precision only. 16 c The file aba_param.inc has a line "implicit real*8" and, since 17 c it is included in the main subroutine, it will define the variables 18 c there as double precision. But other subroutines still need the 19 c definition "implicit real*8" since there may be variables that are 20 c not passed to them through the list or common block. 21 c 22 c (4) This is current as of version 5.6 of ABAQUS. 23 c 24 c (5) Note added by J. W. Kysar (4 November 1997). This UMAT has been 25 c modified to keep track of the cumulative shear strain in each 26 c individual slip system. This information is needed to correct an 27 c error in the implementation of the Bassani and Wu hardening law. 28 c Any line of code which has been added or modified is preceded 29 c immediately by a line beginning CFIXA and succeeded by a line 30 c beginning CFIXB. Any comment line added or modified will begin 31 c with CFIX. 32 c 33 c The hardening law by Bassani and Wu was implemented incorrectly. 34 c This law is a function of both hyperbolic secant squared and hyperbolic 35 c tangent. However, the arguments of sech and tanh are related to the *total* 36 c slip on individual slip systems. Formerly, the UMAT implemented this 37 c hardening law by using the *current* slip on each slip system. Therein 38 c lay the problem. The UMAT did not restrict the current slip to be a 39 c positive value. So when a slip with a negative sign was encountered, the 40 c term containing tanh led to a negative hardening rate (since tanh is an 41 c odd function). 42 43 c The UMAT has been fixed by adding state variables to keep track of the 44 c *total* slip on each slip system by integrating up the absolute value 45 c of slip rates for each individual slip system. These "solution dependent 46 c variables" are available for postprocessing. The only required change 47 c in the input file is that the DEPVAR command must be changed. 48 c 49 C----- Use single precision on Cray by 50 C (1) deleting the statement "IMPLICIT*8 (A-H,O-Z)"; 51 C (2) changing "REAL*8 FUNCTION" to "FUNCTION"; 52 C (3) changing double precision functions DSIGN to SIGN. 53 C 54 C----- Subroutines: 55 C 56 C ROTATION -- forming rotation matrix, i.e. the direction 57 C cosines of cubic crystal [100], [010] and [001] 58 C directions in global system at the initial 59 C state 60 C 61 C SLIPSYS -- calculating number of slip systems, unit 62 C vectors in slip directions and unit normals to 63 C slip planes in a cubic crystal at the initial 64 C state 65 C 66 C GSLPINIT -- calculating initial value of current strengths 67 C at initial state 68 C 69 C STRAINRATE -- based on current values of resolved shear 70 C stresses and current strength, calculating 71 C shear strain-rates in slip systems 72 C 73 C LATENTHARDEN -- forming self- and latent-hardening matrix 74 C 75 C ITERATION -- generating arrays for the Newton-Rhapson 76 C iteration 77 C 78 C LUDCMP -- LU decomposition 79 C 80 C LUBKSB -- linear equation solver based on LU 81 C decomposition method (must call LUDCMP first) 82 83 84 C----- Function subprogram:

description

crystal plasticity code

Transcript of Umat crystal plasticity

  • 1 SUBROUTINE UMAT(stress,statev,ddsdde,sse,spd,scd,2 1 rpl, ddsddt, drplde, drpldt,3 2 stran,dstran,time,dtime,temp,dtemp,predef,dpred,cmname,4 3 ndi,nshr,ntens,nstatv,props,nprops,coords,drot,pnewdt,5 4 celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)6 c WRITE (6,*) '7 c NOTE: MODIFICATIONS TO *UMAT FOR ABAQUS VERSION 5.3 (14 APR '94)8 c 9 c (1) The list of variables above defining the *UMAT subroutine, 10 c and the first (standard) block of variables dimensioned below, 11 c have variable names added compared to earlier ABAQUS versions. 12 c13 c (2) The statement: include 'aba_param.inc' must be added as below.14 c15 c (3) As of version 5.3, ABAQUS files use double precision only.16 c The file aba_param.inc has a line "implicit real*8" and, since 17 c it is included in the main subroutine, it will define the variables18 c there as double precision. But other subroutines still need the19 c definition "implicit real*8" since there may be variables that are20 c not passed to them through the list or common block.21 c22 c (4) This is current as of version 5.6 of ABAQUS.23 c24 c (5) Note added by J. W. Kysar (4 November 1997). This UMAT has been25 c modified to keep track of the cumulative shear strain in each 26 c individual slip system. This information is needed to correct an27 c error in the implementation of the Bassani and Wu hardening law.28 c Any line of code which has been added or modified is preceded29 c immediately by a line beginning CFIXA and succeeded by a line 30 c beginning CFIXB. Any comment line added or modified will begin 31 c with CFIX.32 c33 c The hardening law by Bassani and Wu was implemented incorrectly.34 c This law is a function of both hyperbolic secant squared and hyperbolic35 c tangent. However, the arguments of sech and tanh are related to the *total*36 c slip on individual slip systems. Formerly, the UMAT implemented this37 c hardening law by using the *current* slip on each slip system. Therein 38 c lay the problem. The UMAT did not restrict the current slip to be a 39 c positive value. So when a slip with a negative sign was encountered, the 40 c term containing tanh led to a negative hardening rate (since tanh is an 41 c odd function).42 43 c The UMAT has been fixed by adding state variables to keep track of the 44 c *total* slip on each slip system by integrating up the absolute value 45 c of slip rates for each individual slip system. These "solution dependent 46 c variables" are available for postprocessing. The only required change 47 c in the input file is that the DEPVAR command must be changed.48 c 49 C----- Use single precision on Cray by50 C (1) deleting the statement "IMPLICIT*8 (A-H,O-Z)";51 C (2) changing "REAL*8 FUNCTION" to "FUNCTION";52 C (3) changing double precision functions DSIGN to SIGN.53 C54 C----- Subroutines:55 C56 C ROTATION -- forming rotation matrix, i.e. the direction 57 C cosines of cubic crystal [100], [010] and [001]58 C directions in global system at the initial 59 C state60 C61 C SLIPSYS -- calculating number of slip systems, unit 62 C vectors in slip directions and unit normals to 63 C slip planes in a cubic crystal at the initial 64 C state65 C66 C GSLPINIT -- calculating initial value of current strengths 67 C at initial state68 C69 C STRAINRATE -- based on current values of resolved shear 70 C stresses and current strength, calculating 71 C shear strain-rates in slip systems72 C73 C LATENTHARDEN -- forming self- and latent-hardening matrix 74 C75 C ITERATION -- generating arrays for the Newton-Rhapson 76 C iteration77 C78 C LUDCMP -- LU decomposition79 C80 C LUBKSB -- linear equation solver based on LU 81 C decomposition method (must call LUDCMP first)82 83 84 C----- Function subprogram:

  • 85 86 C F -- shear strain-rates in slip systems87 88 89 C----- Variables:90 C91 C STRESS -- stresses (INPUT & OUTPUT)92 C Cauchy stresses for finite deformation93 C STATEV -- solution dependent state variables (INPUT & OUTPUT)94 C DDSDDE -- Jacobian matrix (OUTPUT)95 96 C----- Variables passed in for information:97 C98 C STRAN -- strains99 C logarithmic strain for finite deformation 100 C (actually, integral of the symmetric part of velocity101 C gradient with respect to time)102 C DSTRAN -- increments of strains103 C CMNAME -- name given in the *MATERIAL option104 C NDI -- number of direct stress components105 C NSHR -- number of engineering shear stress components106 C NTENS -- NDI+NSHR107 C NSTATV -- number of solution dependent state variables (as 108 C defined in the *DEPVAR option)109 C PROPS -- material constants entered in the *USER MATERIAL 110 C option111 C NPROPS -- number of material constants112 C113 114 C----- This subroutine provides the plastic constitutive relation of 115 C single crystals for finite element code ABAQUS. The plastic slip116 C of single crystal obeys the Schmid law. The program gives the 117 C choice of small deformation theory and theory of finite rotation 118 C and finite strain.119 C The strain increment is composed of elastic part and plastic 120 C part. The elastic strain increment corresponds to lattice 121 C stretching, the plastic part is the sum over all slip systems of 122 C plastic slip. The shear strain increment for each slip system is123 C assumed a function of the ratio of corresponding resolved shear 124 C stress over current strength, and of the time step. The resolved125 C shear stress is the double product of stress tensor with the slip126 C deformation tensor (Schmid factor), and the increment of current 127 C strength is related to shear strain increments over all slip 128 C systems through self- and latent-hardening functions.129 130 C----- The implicit integration method proposed by Peirce, Shih and 131 C Needleman (1984) is used here. The subroutine provides an option132 C of iteration to solve stresses and solution dependent state 133 C variables within each increment.134 135 C----- The present program is for a single CUBIC crystal. However, 136 C this code can be generalized for other crystals (e.g. HCP, 137 C Tetragonal, Orthotropic, etc.). Only subroutines ROTATION and 138 C SLIPSYS need to be modified to include the effect of crystal 139 C aspect ratio.140 C141 142 C----- Important notice:143 C144 C (1) The number of state variables NSTATV must be larger than (or 145 CFIX equal to) TEN (10) times the total number of slip systems in146 C all sets, NSLPTL, plus FIVE (5)147 CFIX NSTATV >= 10 * NSLPTL + 5148 C Denote s as a slip direction and m as normal to a slip plane.149 C Here (s,-m), (-s,m) and (-s,-m) are NOT considered 150 C independent of (s,m). The number of slip systems in each set151 C could be either 6, 12, 24 or 48 for a cubic crystal, e.g. 12 152 C for {110}.153 C154 C Users who need more parameters to characterize the 155 C constitutive law of single crystal, e.g. the framework 156 C proposed by Zarka, should make NSTATV larger than (or equal 157 C to) the number of those parameters NPARMT plus nine times 158 C the total number of slip systems, NSLPTL, plus five159 CFIX NSTATV >= NPARMT + 10 * NSLPTL + 5160 C161 C (2) The tangent stiffness matrix in general is not symmetric if 162 C latent hardening is considered. Users must declare "UNSYMM" 163 C in the input file, at the *USER MATERIAL card.164 C165 166 PARAMETER (ND=150)167 C----- The parameter ND determines the dimensions of the arrays in 168 C this subroutine. The current choice 150 is a upper bound for a

  • 169 C cubic crystal with up to three sets of slip systems activated. 170 C Users may reduce the parameter ND to any number as long as larger171 C than or equal to the total number of slip systems in all sets. 172 C For example, if {110} is the only set of slip system 173 C potentially activated, ND could be taken as twelve (12). 174 c175 include 'aba_param.inc'176 c177 CHARACTER*8 CMNAME178 EXTERNAL F179 180 dimension stress(ntens),statev(nstatv),181 1 ddsdde(ntens,ntens),ddsddt(ntens),drplde(ntens),182 2 stran(ntens),dstran(ntens),time(2),predef(1),dpred(1),183 3 props(nprops),coords(3),drot(3,3),dfgrd0(3,3),dfgrd1(3,3)184 185 DIMENSION ISPDIR(3), ISPNOR(3), NSLIP(3), 186 2 SLPDIR(3,ND), SLPNOR(3,ND), SLPDEF(6,ND), 187 3 SLPSPN(3,ND), DSPDIR(3,ND), DSPNOR(3,ND), 188 4 DLOCAL(6,6), D(6,6), ROTD(6,6), ROTATE(3,3), 189 5 FSLIP(ND), DFDXSP(ND), DDEMSD(6,ND), 190 6 H(ND,ND), DDGDDE(ND,6), 191 7 DSTRES(6), DELATS(6), DSPIN(3), DVGRAD(3,3),192 8 DGAMMA(ND), DTAUSP(ND), DGSLIP(ND), 193 9 WORKST(ND,ND), INDX(ND), TERM(3,3), TRM0(3,3), ITRM(3)194 195 DIMENSION FSLIP1(ND), STRES1(6), GAMMA1(ND), TAUSP1(ND), 196 2 GSLP1(ND), SPNOR1(3,ND), SPDIR1(3,ND), DDSDE1(6,6),197 3 DSOLD(6), DGAMOD(ND), DTAUOD(ND), DGSPOD(ND), 198 4 DSPNRO(3,ND), DSPDRO(3,ND), 199 5 DHDGDG(ND,ND)200 201 202 C----- NSLIP -- number of slip systems in each set203 C----- SLPDIR -- slip directions (unit vectors in the initial state)204 C----- SLPNOR -- normals to slip planes (unit normals in the initial 205 C state)206 C----- SLPDEF -- slip deformation tensors (Schmid factors)207 C SLPDEF(1,i) -- SLPDIR(1,i)*SLPNOR(1,i)208 C SLPDEF(2,i) -- SLPDIR(2,i)*SLPNOR(2,i)209 C SLPDEF(3,i) -- SLPDIR(3,i)*SLPNOR(3,i)210 C SLPDEF(4,i) -- SLPDIR(1,i)*SLPNOR(2,i)+211 C SLPDIR(2,i)*SLPNOR(1,i)212 C SLPDEF(5,i) -- SLPDIR(1,i)*SLPNOR(3,i)+213 C SLPDIR(3,i)*SLPNOR(1,i)214 C SLPDEF(6,i) -- SLPDIR(2,i)*SLPNOR(3,i)+215 C SLPDIR(3,i)*SLPNOR(2,i)216 C where index i corresponds to the ith slip system217 C----- SLPSPN -- slip spin tensors (only needed for finite rotation)218 C SLPSPN(1,i) -- [SLPDIR(1,i)*SLPNOR(2,i)-219 C SLPDIR(2,i)*SLPNOR(1,i)]/2220 C SLPSPN(2,i) -- [SLPDIR(3,i)*SLPNOR(1,i)-221 C SLPDIR(1,i)*SLPNOR(3,i)]/2222 C SLPSPN(3,i) -- [SLPDIR(2,i)*SLPNOR(3,i)-223 C SLPDIR(3,i)*SLPNOR(2,i)]/2224 C where index i corresponds to the ith slip system225 C----- DSPDIR -- increments of slip directions226 C----- DSPNOR -- increments of normals to slip planes227 C228 C----- DLOCAL -- elastic matrix in local cubic crystal system229 C----- D -- elastic matrix in global system230 C----- ROTD -- rotation matrix transforming DLOCAL to D231 C232 C----- ROTATE -- rotation matrix, direction cosines of [100], [010] 233 C and [001] of cubic crystal in global system234 C235 C----- FSLIP -- shear strain-rates in slip systems236 C----- DFDXSP -- derivatives of FSLIP w.r.t x=TAUSLP/GSLIP, where 237 C TAUSLP is the resolved shear stress and GSLIP is the 238 C current strength239 C240 C----- DDEMSD -- double dot product of the elastic moduli tensor with 241 C the slip deformation tensor plus, only for finite 242 C rotation, the dot product of slip spin tensor with 243 C the stress244 C245 C----- H -- self- and latent-hardening matrix246 C H(i,i) -- self hardening modulus of the ith slip 247 C system (no sum over i)248 C H(i,j) -- latent hardening molulus of the ith slip 249 C system due to a slip in the jth slip system250 C (i not equal j)251 C252 C----- DDGDDE -- derivatice of the shear strain increments in slip

  • 253 C systems w.r.t. the increment of strains254 C255 C----- DSTRES -- Jaumann increments of stresses, i.e. corotational 256 C stress-increments formed on axes spinning with the 257 C material258 C----- DELATS -- strain-increments associated with lattice stretching259 C DELATS(1) - DELATS(3) -- normal strain increments260 C DELATS(4) - DELATS(6) -- engineering shear strain 261 C increments262 C----- DSPIN -- spin-increments associated with the material element263 C DSPIN(1) -- component 12 of the spin tensor264 C DSPIN(2) -- component 31 of the spin tensor265 C DSPIN(3) -- component 23 of the spin tensor266 C267 C----- DVGRAD -- increments of deformation gradient in the current 268 C state, i.e. velocity gradient times the increment of 269 C time270 C271 C----- DGAMMA -- increment of shear strains in slip systems272 C----- DTAUSP -- increment of resolved shear stresses in slip systems 273 C----- DGSLIP -- increment of current strengths in slip systems274 C275 C276 C----- Arrays for iteration:277 C278 C FSLIP1, STRES1, GAMMA1, TAUSP1, GSLP1 , SPNOR1, SPDIR1, 279 C DDSDE1, DSOLD , DGAMOD, DTAUOD, DGSPOD, DSPNRO, DSPDRO,280 C DHDGDG281 C282 C283 C----- Solution dependent state variable STATEV:284 C Denote the number of total slip systems by NSLPTL, which 285 C will be calculated in this code.286 C287 C Array STATEV:288 C 1 - NSLPTL : current strength in slip systems289 C NSLPTL+1 - 2*NSLPTL : shear strain in slip systems290 C 2*NSLPTL+1 - 3*NSLPTL : resolved shear stress in slip systems291 C292 C 3*NSLPTL+1 - 6*NSLPTL : current components of normals to slip293 C slip planes294 C 6*NSLPTL+1 - 9*NSLPTL : current components of slip directions295 C296 CFIX 9*NSLPTL+1 - 10*NSLPTL : total cumulative shear strain on each 297 CFIX slip system (sum of the absolute 298 CFIX values of shear strains in each slip 299 CFIX system individually)300 CFIX301 CFIX 10*NSLPTL+1 : total cumulative shear strain on all 302 C slip systems (sum of the absolute 303 C values of shear strains in all slip 304 C systems)305 C306 CFIX 10*NSLPTL+2 - NSTATV-4 : additional parameters users may need 307 C to characterize the constitutive law 308 C of a single crystal (if there are 309 C any).310 C311 C NSTATV-3 : number of slip systems in the 1st set312 C NSTATV-2 : number of slip systems in the 2nd set313 C NSTATV-1 : number of slip systems in the 3rd set314 C NSTATV : total number of slip systems in all 315 C sets316 C317 C318 C----- Material constants PROPS:319 C320 C PROPS(1) - PROPS(21) -- elastic constants for a general elastic321 C anisotropic material322 C323 C isotropic : PROPS(i)=0 for i>2324 C PROPS(1) -- Young's modulus325 C PROPS(2) -- Poisson's ratio326 C327 C cubic : PROPS(i)=0 for i>3328 C PROPS(1) -- c11329 C PROPS(2) -- c12330 C PROPS(3) -- c44331 C332 C orthotropic : PORPS(i)=0 for i>9333 C PROPS(1) - PROPS(9) are D1111, D1122, D2222,334 C D1133, D2233, D3333, D1212, D1313, D2323, 335 C respectively, which has the same definition 336 C as ABAQUS for orthotropic materials

  • 337 C (see *ELASTIC card)338 C339 C anisotropic : PROPS(1) - PROPS(21) are D1111, D1122, 340 C D2222, D1133, D2233, D3333, D1112, D2212, 341 C D3312, D1212, D1113, D2213, D3313, D1213, 342 C D1313, D1123, D2223, D3323, D1223, D1323, 343 C D2323, respectively, which has the same 344 C definition as ABAQUS for anisotropic 345 C materials (see *ELASTIC card)346 C347 C348 C PROPS(25) - PROPS(56) -- parameters characterizing all slip 349 C systems to be activated in a cubic 350 C crystal351 C352 C PROPS(25) -- number of sets of slip systems (maximum 3), 353 C e.g. (110)[1-11] and (101)[11-1] are in the 354 C same set of slip systems, (110)[1-11] and 355 C (121)[1-11] belong to different sets of slip 356 C systems357 C (It must be a real number, e.g. 3., not 3 !)358 C359 C PROPS(33) - PROPS(35) -- normal to a typical slip plane in360 C the first set of slip systems, 361 C e.g. (1 1 0)362 C (They must be real numbers, e.g. 363 C 1. 1. 0., not 1 1 0 !)364 C PROPS(36) - PROPS(38) -- a typical slip direction in the 365 C first set of slip systems, e.g. 366 C [1 1 1]367 C (They must be real numbers, e.g. 368 C 1. 1. 1., not 1 1 1 !)369 C370 C PROPS(41) - PROPS(43) -- normal to a typical slip plane in371 C the second set of slip systems372 C (real numbers)373 C PROPS(44) - PROPS(46) -- a typical slip direction in the 374 C second set of slip systems375 C (real numbers)376 C377 C PROPS(49) - PROPS(51) -- normal to a typical slip plane in378 C the third set of slip systems379 C (real numbers)380 C PROPS(52) - PROPS(54) -- a typical slip direction in the 381 C third set of slip systems382 C (real numbers)383 C384 C385 C PROPS(57) - PROPS(72) -- parameters characterizing the initial 386 C orientation of a single crystal in 387 C global system388 C The directions in global system and directions in local 389 C cubic crystal system of two nonparallel vectors are needed390 C to determine the crystal orientation.391 C392 C PROPS(57) - PROPS(59) -- [p1 p2 p3], direction of first 393 C vector in local cubic crystal 394 C system, e.g. [1 1 0]395 C (They must be real numbers, e.g. 396 C 1. 1. 0., not 1 1 0 !)397 C PROPS(60) - PROPS(62) -- [P1 P2 P3], direction of first 398 C vector in global system, e.g. 399 C [2. 1. 0.]400 C (It does not have to be a unit 401 C vector)402 C403 C PROPS(65) - PROPS(67) -- direction of second vector in 404 C local cubic crystal system (real 405 C numbers)406 C PROPS(68) - PROPS(70) -- direction of second vector in 407 C global system408 C409 C410 C PROPS(73) - PROPS(96) -- parameters characterizing the visco-411 C plastic constitutive law (shear 412 C strain-rate vs. resolved shear 413 C stress), e.g. a power-law relation414 C415 C PROPS(73) - PROPS(80) -- parameters for the first set of 416 C slip systems417 C PROPS(81) - PROPS(88) -- parameters for the second set of 418 C slip systems419 C PROPS(89) - PROPS(96) -- parameters for the third set of 420 C slip systems

  • 421 C422 C423 C PROPS(97) - PROPS(144)-- parameters characterizing the self-424 C and latent-hardening laws of slip 425 C systems426 C427 C PROPS(97) - PROPS(104)-- self-hardening parameters for the428 C first set of slip systems429 C PROPS(105)- PROPS(112)-- latent-hardening parameters for 430 C the first set of slip systems and431 C interaction with other sets of 432 C slip systems433 C434 C PROPS(113)- PROPS(120)-- self-hardening parameters for the435 C second set of slip systems436 C PROPS(121)- PROPS(128)-- latent-hardening parameters for 437 C the second set of slip systems 438 C and interaction with other sets 439 C of slip systems440 C441 C PROPS(129)- PROPS(136)-- self-hardening parameters for the442 C third set of slip systems443 C PROPS(137)- PROPS(144)-- latent-hardening parameters for 444 C the third set of slip systems and445 C interaction with other sets of446 C slip systems447 C448 C449 C PROPS(145)- PROPS(152)-- parameters characterizing forward time450 C integration scheme and finite 451 C deformation452 C453 C PROPS(145) -- parameter theta controlling the implicit 454 C integration, which is between 0 and 1455 C 0. : explicit integration456 C 0.5 : recommended value457 C 1. : fully implicit integration458 C459 C PROPS(146) -- parameter NLGEOM controlling whether the 460 C effect of finite rotation and finite strain 461 C of crystal is considered,462 C 0. : small deformation theory463 C otherwise : theory of finite rotation and 464 C finite strain465 C466 C467 C PROPS(153)- PROPS(160)-- parameters characterizing iteration 468 C method469 C470 C PROPS(153) -- parameter ITRATN controlling whether the 471 C iteration method is used, 472 C 0. : no iteration473 C otherwise : iteration474 C475 C PROPS(154) -- maximum number of iteration ITRMAX 476 C477 C PROPS(155) -- absolute error of shear strains in slip 478 C systems GAMERR479 C480 481 482 C----- Elastic matrix in local cubic crystal system: DLOCAL483 DO J=1,6484 DO I=1,6485 DLOCAL(I,J)=0.486 END DO487 END DO488 489 CHECK=0.490 DO J=10,21491 CHECK=CHECK+ABS(PROPS(J))492 END DO493 494 IF (CHECK.EQ.0.) THEN495 DO J=4,9496 CHECK=CHECK+ABS(PROPS(J))497 END DO498 499 IF (CHECK.EQ.0.) THEN500 501 IF (PROPS(3).EQ.0.) THEN502 503 C----- Isotropic material504 GSHEAR=PROPS(1)/2./(1.+PROPS(2))

  • 505 E11=2.*GSHEAR*(1.-PROPS(2))/(1.-2.*PROPS(2))506 E12=2.*GSHEAR*PROPS(2)/(1.-2.*PROPS(2))507 508 DO J=1,3509 DLOCAL(J,J)=E11510 511 DO I=1,3512 IF (I.NE.J) DLOCAL(I,J)=E12513 END DO514 515 DLOCAL(J+3,J+3)=GSHEAR516 END DO517 518 ELSE519 520 C----- Cubic material521 DO J=1,3522 DLOCAL(J,J)=PROPS(1)523 524 DO I=1,3525 IF (I.NE.J) DLOCAL(I,J)=PROPS(2)526 END DO527 528 DLOCAL(J+3,J+3)=PROPS(3)529 END DO530 531 END IF532 533 ELSE534 535 C----- Orthotropic metarial536 DLOCAL(1,1)=PROPS(1)537 DLOCAL(1,2)=PROPS(2)538 DLOCAL(2,1)=PROPS(2)539 DLOCAL(2,2)=PROPS(3)540 541 DLOCAL(1,3)=PROPS(4)542 DLOCAL(3,1)=PROPS(4)543 DLOCAL(2,3)=PROPS(5)544 DLOCAL(3,2)=PROPS(5)545 DLOCAL(3,3)=PROPS(6)546 547 DLOCAL(4,4)=PROPS(7)548 DLOCAL(5,5)=PROPS(8)549 DLOCAL(6,6)=PROPS(9)550 551 END IF552 553 ELSE554 555 C----- General anisotropic material556 ID=0557 DO J=1,6558 DO I=1,J559 ID=ID+1560 DLOCAL(I,J)=PROPS(ID)561 DLOCAL(J,I)=DLOCAL(I,J)562 END DO563 END DO564 END IF565 566 C----- Rotation matrix: ROTATE, i.e. direction cosines of [100], [010]567 C and [001] of a cubic crystal in global system568 C569 CALL ROTATION (PROPS(57), ROTATE)570 571 C----- Rotation matrix: ROTD to transform local elastic matrix DLOCAL 572 C to global elastic matrix D573 C574 DO J=1,3575 J1=1+J/3576 J2=2+J/2577 578 DO I=1,3579 I1=1+I/3580 I2=2+I/2581 582 ROTD(I,J)=ROTATE(I,J)**2583 ROTD(I,J+3)=2.*ROTATE(I,J1)*ROTATE(I,J2)584 ROTD(I+3,J)=ROTATE(I1,J)*ROTATE(I2,J)585 ROTD(I+3,J+3)=ROTATE(I1,J1)*ROTATE(I2,J2)+586 2 ROTATE(I1,J2)*ROTATE(I2,J1)587 588 END DO

  • 589 END DO590 591 C----- Elastic matrix in global system: D592 C {D} = {ROTD} * {DLOCAL} * {ROTD}transpose593 C594 DO J=1,6595 DO I=1,6596 D(I,J)=0.597 END DO598 END DO599 600 DO J=1,6601 DO I=1,J602 603 DO K=1,6604 DO L=1,6605 D(I,J)=D(I,J)+DLOCAL(K,L)*ROTD(I,K)*ROTD(J,L)606 END DO607 END DO608 609 D(J,I)=D(I,J)610 611 END DO612 END DO613 614 C----- Total number of sets of slip systems: NSET615 NSET=NINT(PROPS(25))616 IF (NSET.LT.1) THEN617 WRITE (6,*) '***ERROR - zero sets of slip systems'618 STOP619 ELSE IF (NSET.GT.3) THEN620 WRITE (6,*) 621 2 '***ERROR - more than three sets of slip systems'622 STOP623 END IF624 625 C----- Implicit integration parameter: THETA626 THETA=PROPS(145)627 628 C----- Finite deformation ?629 C----- NLGEOM = 0, small deformation theory630 C otherwise, theory of finite rotation and finite strain, Users 631 C must declare "NLGEOM" in the input file, at the *STEP card632 C633 IF (PROPS(146).EQ.0.) THEN634 NLGEOM=0635 ELSE636 NLGEOM=1637 END IF638 639 C----- Iteration?640 C----- ITRATN = 0, no iteration641 C otherwise, iteration (solving increments of stresses and 642 C solution dependent state variables)643 C644 IF (PROPS(153).EQ.0.) THEN645 ITRATN=0646 ELSE647 ITRATN=1648 END IF649 650 ITRMAX=NINT(PROPS(154))651 GAMERR=PROPS(155)652 653 NITRTN=-1654 655 DO I=1,NTENS656 DSOLD(I)=0.657 END DO658 659 DO J=1,ND660 DGAMOD(J)=0.661 DTAUOD(J)=0.662 DGSPOD(J)=0.663 DO I=1,3664 DSPNRO(I,J)=0.665 DSPDRO(I,J)=0.666 END DO667 END DO668 669 C----- Increment of spin associated with the material element: DSPIN670 C (only needed for finite rotation)671 C672 IF (NLGEOM.NE.0) THEN

  • 673 DO J=1,3674 DO I=1,3675 TERM(I,J)=DROT(J,I)676 TRM0(I,J)=DROT(J,I)677 END DO678 679 TERM(J,J)=TERM(J,J)+1.D0680 TRM0(J,J)=TRM0(J,J)-1.D0681 END DO682 683 CALL LUDCMP (TERM, 3, 3, ITRM, DDCMP)684 685 DO J=1,3686 CALL LUBKSB (TERM, 3, 3, ITRM, TRM0(1,J))687 END DO688 689 DSPIN(1)=TRM0(2,1)-TRM0(1,2)690 DSPIN(2)=TRM0(1,3)-TRM0(3,1)691 DSPIN(3)=TRM0(3,2)-TRM0(2,3)692 693 END IF694 695 C----- Increment of dilatational strain: DEV696 DEV=0.D0697 DO I=1,NDI698 DEV=DEV+DSTRAN(I)699 END DO700 701 C----- Iteration starts (only when iteration method is used)702 1000 CONTINUE703 704 C----- Parameter NITRTN: number of iterations705 C NITRTN = 0 --- no-iteration solution706 C707 NITRTN=NITRTN+1708 709 C----- Check whether the current stress state is the initial state710 IF (STATEV(1).EQ.0.) THEN711 712 C----- Initial state713 C714 C----- Generating the following parameters and variables at initial 715 C state:716 C Total number of slip systems in all the sets NSLPTL717 C Number of slip systems in each set NSLIP718 C Unit vectors in initial slip directions SLPDIR719 C Unit normals to initial slip planes SLPNOR720 C721 NSLPTL=0722 DO I=1,NSET723 ISPNOR(1)=NINT(PROPS(25+8*I))724 ISPNOR(2)=NINT(PROPS(26+8*I))725 ISPNOR(3)=NINT(PROPS(27+8*I))726 727 ISPDIR(1)=NINT(PROPS(28+8*I))728 ISPDIR(2)=NINT(PROPS(29+8*I))729 ISPDIR(3)=NINT(PROPS(30+8*I))730 731 CALL SLIPSYS (ISPDIR, ISPNOR, NSLIP(I), SLPDIR(1,NSLPTL+1), 732 2 SLPNOR(1,NSLPTL+1), ROTATE)733 734 NSLPTL=NSLPTL+NSLIP(I)735 END DO736 737 IF (ND.LT.NSLPTL) THEN738 WRITE (6,*) 739 2 '***ERROR - parameter ND chosen by the present user is less than740 3 the total number of slip systems NSLPTL'741 STOP742 END IF743 744 C----- Slip deformation tensor: SLPDEF (Schmid factors)745 DO J=1,NSLPTL746 SLPDEF(1,J)=SLPDIR(1,J)*SLPNOR(1,J)747 SLPDEF(2,J)=SLPDIR(2,J)*SLPNOR(2,J)748 SLPDEF(3,J)=SLPDIR(3,J)*SLPNOR(3,J)749 SLPDEF(4,J)=SLPDIR(1,J)*SLPNOR(2,J)+SLPDIR(2,J)*SLPNOR(1,J)750 SLPDEF(5,J)=SLPDIR(1,J)*SLPNOR(3,J)+SLPDIR(3,J)*SLPNOR(1,J)751 SLPDEF(6,J)=SLPDIR(2,J)*SLPNOR(3,J)+SLPDIR(3,J)*SLPNOR(2,J)752 END DO753 754 C----- Initial value of state variables: unit normal to a slip plane 755 C and unit vector in a slip direction756 C

  • 757 STATEV(NSTATV)=FLOAT(NSLPTL)758 DO I=1,NSET759 STATEV(NSTATV-4+I)=FLOAT(NSLIP(I))760 END DO761 762 IDNOR=3*NSLPTL763 IDDIR=6*NSLPTL764 DO J=1,NSLPTL765 DO I=1,3766 IDNOR=IDNOR+1767 STATEV(IDNOR)=SLPNOR(I,J)768 769 IDDIR=IDDIR+1770 STATEV(IDDIR)=SLPDIR(I,J)771 END DO772 END DO773 774 C----- Initial value of the current strength for all slip systems775 C776 CALL GSLPINIT (STATEV(1), NSLIP, NSLPTL, NSET, PROPS(97))777 778 C----- Initial value of shear strain in slip systems779 CFIX-- Initial value of cumulative shear strain in each slip systems780 781 DO I=1,NSLPTL782 STATEV(NSLPTL+I)=0.783 CFIXA784 STATEV(9*NSLPTL+I)=0.785 CFIXB786 END DO787 788 CFIXA789 STATEV(10*NSLPTL+1)=0.790 CFIXB791 792 C----- Initial value of the resolved shear stress in slip systems793 DO I=1,NSLPTL794 TERM1=0.795 796 DO J=1,NTENS797 IF (J.LE.NDI) THEN798 TERM1=TERM1+SLPDEF(J,I)*STRESS(J)799 ELSE800 TERM1=TERM1+SLPDEF(J-NDI+3,I)*STRESS(J)801 END IF802 END DO803 804 STATEV(2*NSLPTL+I)=TERM1805 END DO806 807 ELSE808 809 C----- Current stress state810 C811 C----- Copying from the array of state variables STATVE the following812 C parameters and variables at current stress state:813 C Total number of slip systems in all the sets NSLPTL814 C Number of slip systems in each set NSLIP815 C Current slip directions SLPDIR816 C Normals to current slip planes SLPNOR817 C818 NSLPTL=NINT(STATEV(NSTATV))819 DO I=1,NSET820 NSLIP(I)=NINT(STATEV(NSTATV-4+I))821 END DO822 823 IDNOR=3*NSLPTL824 IDDIR=6*NSLPTL825 DO J=1,NSLPTL826 DO I=1,3827 IDNOR=IDNOR+1828 SLPNOR(I,J)=STATEV(IDNOR)829 830 IDDIR=IDDIR+1831 SLPDIR(I,J)=STATEV(IDDIR)832 END DO833 END DO834 835 C----- Slip deformation tensor: SLPDEF (Schmid factors)836 DO J=1,NSLPTL837 SLPDEF(1,J)=SLPDIR(1,J)*SLPNOR(1,J)838 SLPDEF(2,J)=SLPDIR(2,J)*SLPNOR(2,J)839 SLPDEF(3,J)=SLPDIR(3,J)*SLPNOR(3,J)840 SLPDEF(4,J)=SLPDIR(1,J)*SLPNOR(2,J)+SLPDIR(2,J)*SLPNOR(1,J)

  • 841 SLPDEF(5,J)=SLPDIR(1,J)*SLPNOR(3,J)+SLPDIR(3,J)*SLPNOR(1,J)842 SLPDEF(6,J)=SLPDIR(2,J)*SLPNOR(3,J)+SLPDIR(3,J)*SLPNOR(2,J)843 END DO844 845 END IF846 847 C----- Slip spin tensor: SLPSPN (only needed for finite rotation)848 IF (NLGEOM.NE.0) THEN849 DO J=1,NSLPTL850 SLPSPN(1,J)=0.5*(SLPDIR(1,J)*SLPNOR(2,J)-851 2 SLPDIR(2,J)*SLPNOR(1,J))852 SLPSPN(2,J)=0.5*(SLPDIR(3,J)*SLPNOR(1,J)-853 2 SLPDIR(1,J)*SLPNOR(3,J))854 SLPSPN(3,J)=0.5*(SLPDIR(2,J)*SLPNOR(3,J)-855 2 SLPDIR(3,J)*SLPNOR(2,J))856 END DO857 END IF858 859 C----- Double dot product of elastic moduli tensor with the slip 860 C deformation tensor (Schmid factors) plus, only for finite 861 C rotation, the dot product of slip spin tensor with the stress: 862 C DDEMSD863 C864 DO J=1,NSLPTL865 DO I=1,6866 DDEMSD(I,J)=0.867 DO K=1,6868 DDEMSD(I,J)=DDEMSD(I,J)+D(K,I)*SLPDEF(K,J)869 END DO870 END DO871 END DO872 873 IF (NLGEOM.NE.0) THEN874 DO J=1,NSLPTL875 876 DDEMSD(4,J)=DDEMSD(4,J)-SLPSPN(1,J)*STRESS(1)877 DDEMSD(5,J)=DDEMSD(5,J)+SLPSPN(2,J)*STRESS(1)878 879 IF (NDI.GT.1) THEN880 DDEMSD(4,J)=DDEMSD(4,J)+SLPSPN(1,J)*STRESS(2)881 DDEMSD(6,J)=DDEMSD(6,J)-SLPSPN(3,J)*STRESS(2)882 END IF883 884 IF (NDI.GT.2) THEN885 DDEMSD(5,J)=DDEMSD(5,J)-SLPSPN(2,J)*STRESS(3)886 DDEMSD(6,J)=DDEMSD(6,J)+SLPSPN(3,J)*STRESS(3)887 END IF888 889 IF (NSHR.GE.1) THEN890 DDEMSD(1,J)=DDEMSD(1,J)+SLPSPN(1,J)*STRESS(NDI+1)891 DDEMSD(2,J)=DDEMSD(2,J)-SLPSPN(1,J)*STRESS(NDI+1)892 DDEMSD(5,J)=DDEMSD(5,J)-SLPSPN(3,J)*STRESS(NDI+1)893 DDEMSD(6,J)=DDEMSD(6,J)+SLPSPN(2,J)*STRESS(NDI+1)894 END IF895 896 IF (NSHR.GE.2) THEN897 DDEMSD(1,J)=DDEMSD(1,J)-SLPSPN(2,J)*STRESS(NDI+2)898 DDEMSD(3,J)=DDEMSD(3,J)+SLPSPN(2,J)*STRESS(NDI+2)899 DDEMSD(4,J)=DDEMSD(4,J)+SLPSPN(3,J)*STRESS(NDI+2)900 DDEMSD(6,J)=DDEMSD(6,J)-SLPSPN(1,J)*STRESS(NDI+2)901 END IF902 903 IF (NSHR.EQ.3) THEN904 DDEMSD(2,J)=DDEMSD(2,J)+SLPSPN(3,J)*STRESS(NDI+3)905 DDEMSD(3,J)=DDEMSD(3,J)-SLPSPN(3,J)*STRESS(NDI+3)906 DDEMSD(4,J)=DDEMSD(4,J)-SLPSPN(2,J)*STRESS(NDI+3)907 DDEMSD(5,J)=DDEMSD(5,J)+SLPSPN(1,J)*STRESS(NDI+3)908 END IF909 910 END DO911 END IF912 913 C----- Shear strain-rate in a slip system at the start of increment: 914 C FSLIP, and its derivative: DFDXSP915 C916 ID=1917 DO I=1,NSET918 IF (I.GT.1) ID=ID+NSLIP(I-1)919 CALL STRAINRATE (STATEV(NSLPTL+ID), STATEV(2*NSLPTL+ID), 920 2 STATEV(ID), NSLIP(I), FSLIP(ID), DFDXSP(ID), 921 3 PROPS(65+8*I))922 END DO923 924 C----- Self- and latent-hardening laws

  • 925 CFIXA 926 CALL LATENTHARDEN (STATEV(NSLPTL+1), STATEV(2*NSLPTL+1), 927 2 STATEV(1), STATEV(9*NSLPTL+1),928 3 STATEV(10*NSLPTL+1), NSLIP, NSLPTL, 929 4 NSET, H(1,1), PROPS(97), ND)930 CFIXB931 932 C----- LU decomposition to solve the increment of shear strain in a 933 C slip system934 C935 TERM1=THETA*DTIME936 DO I=1,NSLPTL937 TAUSLP=STATEV(2*NSLPTL+I)938 GSLIP=STATEV(I)939 X=TAUSLP/GSLIP940 TERM2=TERM1*DFDXSP(I)/GSLIP941 TERM3=TERM1*X*DFDXSP(I)/GSLIP942 943 DO J=1,NSLPTL944 TERM4=0.945 DO K=1,6946 TERM4=TERM4+DDEMSD(K,I)*SLPDEF(K,J)947 END DO948 949 WORKST(I,J)=TERM2*TERM4+H(I,J)*TERM3*DSIGN(1.D0,FSLIP(J))950 951 IF (NITRTN.GT.0) WORKST(I,J)=WORKST(I,J)+TERM3*DHDGDG(I,J)952 953 END DO954 955 WORKST(I,I)=WORKST(I,I)+1.956 END DO957 958 CALL LUDCMP (WORKST, NSLPTL, ND, INDX, DDCMP)959 960 C----- Increment of shear strain in a slip system: DGAMMA961 TERM1=THETA*DTIME962 DO I=1,NSLPTL963 964 IF (NITRTN.EQ.0) THEN965 TAUSLP=STATEV(2*NSLPTL+I)966 GSLIP=STATEV(I)967 X=TAUSLP/GSLIP968 TERM2=TERM1*DFDXSP(I)/GSLIP969 970 DGAMMA(I)=0.971 DO J=1,NDI972 DGAMMA(I)=DGAMMA(I)+DDEMSD(J,I)*DSTRAN(J)973 END DO974 975 IF (NSHR.GT.0) THEN976 DO J=1,NSHR977 DGAMMA(I)=DGAMMA(I)+DDEMSD(J+3,I)*DSTRAN(J+NDI)978 END DO979 END IF980 981 DGAMMA(I)=DGAMMA(I)*TERM2+FSLIP(I)*DTIME982 983 ELSE984 DGAMMA(I)=TERM1*(FSLIP(I)-FSLIP1(I))+FSLIP1(I)*DTIME985 2 -DGAMOD(I)986 987 END IF988 989 END DO990 991 CALL LUBKSB (WORKST, NSLPTL, ND, INDX, DGAMMA)992 993 DO I=1,NSLPTL994 DGAMMA(I)=DGAMMA(I)+DGAMOD(I)995 END DO996 997 C----- Update the shear strain in a slip system: STATEV(NSLPTL+1) - 998 C STATEV(2*NSLPTL)999 C

    1000 DO I=1,NSLPTL1001 STATEV(NSLPTL+I)=STATEV(NSLPTL+I)+DGAMMA(I)-DGAMOD(I)1002 END DO1003 1004 C----- Increment of current strength in a slip system: DGSLIP1005 DO I=1,NSLPTL1006 DGSLIP(I)=0.1007 DO J=1,NSLPTL1008 DGSLIP(I)=DGSLIP(I)+H(I,J)*ABS(DGAMMA(J))

  • 1009 END DO1010 END DO1011 1012 C----- Update the current strength in a slip system: STATEV(1) - 1013 C STATEV(NSLPTL)1014 C1015 DO I=1,NSLPTL1016 STATEV(I)=STATEV(I)+DGSLIP(I)-DGSPOD(I)1017 END DO1018 1019 C----- Increment of strain associated with lattice stretching: DELATS1020 DO J=1,61021 DELATS(J)=0.1022 END DO1023 1024 DO J=1,31025 IF (J.LE.NDI) DELATS(J)=DSTRAN(J)1026 DO I=1,NSLPTL1027 DELATS(J)=DELATS(J)-SLPDEF(J,I)*DGAMMA(I)1028 END DO1029 END DO1030 1031 DO J=1,31032 IF (J.LE.NSHR) DELATS(J+3)=DSTRAN(J+NDI)1033 DO I=1,NSLPTL1034 DELATS(J+3)=DELATS(J+3)-SLPDEF(J+3,I)*DGAMMA(I)1035 END DO1036 END DO1037 1038 C----- Increment of deformation gradient associated with lattice 1039 C stretching in the current state, i.e. the velocity gradient 1040 C (associated with lattice stretching) times the increment of time:1041 C DVGRAD (only needed for finite rotation)1042 C1043 IF (NLGEOM.NE.0) THEN1044 DO J=1,31045 DO I=1,31046 IF (I.EQ.J) THEN1047 DVGRAD(I,J)=DELATS(I)1048 ELSE1049 DVGRAD(I,J)=DELATS(I+J+1)1050 END IF1051 END DO1052 END DO1053 1054 DO J=1,31055 DO I=1,J1056 IF (J.GT.I) THEN1057 IJ2=I+J-21058 IF (MOD(IJ2,2).EQ.1) THEN1059 TERM1=1.1060 ELSE1061 TERM1=-1.1062 END IF1063 1064 DVGRAD(I,J)=DVGRAD(I,J)+TERM1*DSPIN(IJ2)1065 DVGRAD(J,I)=DVGRAD(J,I)-TERM1*DSPIN(IJ2)1066 1067 DO K=1,NSLPTL1068 DVGRAD(I,J)=DVGRAD(I,J)-TERM1*DGAMMA(K)*1069 2 SLPSPN(IJ2,K)1070 DVGRAD(J,I)=DVGRAD(J,I)+TERM1*DGAMMA(K)*1071 2 SLPSPN(IJ2,K)1072 END DO1073 END IF1074 1075 END DO1076 END DO1077 1078 END IF1079 1080 C----- Increment of resolved shear stress in a slip system: DTAUSP1081 DO I=1,NSLPTL1082 DTAUSP(I)=0.1083 DO J=1,61084 DTAUSP(I)=DTAUSP(I)+DDEMSD(J,I)*DELATS(J)1085 END DO1086 END DO1087 1088 C----- Update the resolved shear stress in a slip system: 1089 C STATEV(2*NSLPTL+1) - STATEV(3*NSLPTL)1090 C1091 DO I=1,NSLPTL1092 STATEV(2*NSLPTL+I)=STATEV(2*NSLPTL+I)+DTAUSP(I)-DTAUOD(I)

  • 1093 END DO1094 1095 C----- Increment of stress: DSTRES1096 IF (NLGEOM.EQ.0) THEN1097 DO I=1,NTENS1098 DSTRES(I)=0.1099 END DO1100 ELSE1101 DO I=1,NTENS1102 DSTRES(I)=-STRESS(I)*DEV1103 END DO1104 END IF1105 1106 DO I=1,NDI1107 DO J=1,NDI1108 DSTRES(I)=DSTRES(I)+D(I,J)*DSTRAN(J)1109 END DO1110 1111 IF (NSHR.GT.0) THEN1112 DO J=1,NSHR1113 DSTRES(I)=DSTRES(I)+D(I,J+3)*DSTRAN(J+NDI)1114 END DO1115 END IF1116 1117 DO J=1,NSLPTL1118 DSTRES(I)=DSTRES(I)-DDEMSD(I,J)*DGAMMA(J)1119 END DO1120 END DO1121 1122 IF (NSHR.GT.0) THEN1123 DO I=1,NSHR1124 1125 DO J=1,NDI1126 DSTRES(I+NDI)=DSTRES(I+NDI)+D(I+3,J)*DSTRAN(J)1127 END DO1128 1129 DO J=1,NSHR1130 DSTRES(I+NDI)=DSTRES(I+NDI)+D(I+3,J+3)*DSTRAN(J+NDI)1131 END DO1132 1133 DO J=1,NSLPTL1134 DSTRES(I+NDI)=DSTRES(I+NDI)-DDEMSD(I+3,J)*DGAMMA(J)1135 END DO1136 1137 END DO1138 END IF1139 1140 C----- Update the stress: STRESS1141 DO I=1,NTENS1142 STRESS(I)=STRESS(I)+DSTRES(I)-DSOLD(I)1143 END DO1144 1145 C----- Increment of normal to a slip plane and a slip direction (only 1146 C needed for finite rotation)1147 C1148 IF (NLGEOM.NE.0) THEN1149 DO J=1,NSLPTL1150 DO I=1,31151 DSPNOR(I,J)=0.1152 DSPDIR(I,J)=0.1153 1154 DO K=1,31155 DSPNOR(I,J)=DSPNOR(I,J)-SLPNOR(K,J)*DVGRAD(K,I)1156 DSPDIR(I,J)=DSPDIR(I,J)+SLPDIR(K,J)*DVGRAD(I,K)1157 END DO1158 1159 END DO1160 END DO1161 1162 C----- Update the normal to a slip plane and a slip direction (only 1163 C needed for finite rotation)1164 C1165 IDNOR=3*NSLPTL1166 IDDIR=6*NSLPTL1167 DO J=1,NSLPTL1168 DO I=1,31169 IDNOR=IDNOR+11170 STATEV(IDNOR)=STATEV(IDNOR)+DSPNOR(I,J)-DSPNRO(I,J)1171 1172 IDDIR=IDDIR+11173 STATEV(IDDIR)=STATEV(IDDIR)+DSPDIR(I,J)-DSPDRO(I,J)1174 END DO1175 END DO1176

  • 1177 END IF1178 1179 C----- Derivative of shear strain increment in a slip system w.r.t. 1180 C strain increment: DDGDDE1181 C1182 TERM1=THETA*DTIME1183 DO I=1,NTENS1184 DO J=1,NSLPTL1185 TAUSLP=STATEV(2*NSLPTL+J)1186 GSLIP=STATEV(J)1187 X=TAUSLP/GSLIP1188 TERM2=TERM1*DFDXSP(J)/GSLIP1189 IF (I.LE.NDI) THEN1190 DDGDDE(J,I)=TERM2*DDEMSD(I,J)1191 ELSE1192 DDGDDE(J,I)=TERM2*DDEMSD(I-NDI+3,J)1193 END IF1194 END DO1195 1196 CALL LUBKSB (WORKST, NSLPTL, ND, INDX, DDGDDE(1,I))1197 1198 END DO1199 1200 C----- Derivative of stress increment w.r.t. strain increment, i.e. 1201 C Jacobian matrix1202 C1203 C----- Jacobian matrix: elastic part1204 DO J=1,NTENS1205 DO I=1,NTENS1206 DDSDDE(I,J)=0.1207 END DO1208 END DO1209 1210 DO J=1,NDI1211 DO I=1,NDI1212 DDSDDE(I,J)=D(I,J)1213 IF (NLGEOM.NE.0) DDSDDE(I,J)=DDSDDE(I,J)-STRESS(I)1214 END DO1215 END DO1216 1217 IF (NSHR.GT.0) THEN1218 DO J=1,NSHR1219 DO I=1,NSHR1220 DDSDDE(I+NDI,J+NDI)=D(I+3,J+3)1221 END DO1222 1223 DO I=1,NDI1224 DDSDDE(I,J+NDI)=D(I,J+3)1225 DDSDDE(J+NDI,I)=D(J+3,I)1226 IF (NLGEOM.NE.0)1227 2 DDSDDE(J+NDI,I)=DDSDDE(J+NDI,I)-STRESS(J+NDI)1228 END DO1229 END DO1230 END IF1231 1232 C----- Jacobian matrix: plastic part (slip)1233 DO J=1,NDI1234 DO I=1,NDI1235 DO K=1,NSLPTL1236 DDSDDE(I,J)=DDSDDE(I,J)-DDEMSD(I,K)*DDGDDE(K,J)1237 END DO1238 END DO1239 END DO1240 1241 IF (NSHR.GT.0) THEN1242 DO J=1,NSHR1243 1244 DO I=1,NSHR1245 DO K=1,NSLPTL1246 DDSDDE(I+NDI,J+NDI)=DDSDDE(I+NDI,J+NDI)-1247 2 DDEMSD(I+3,K)*DDGDDE(K,J+NDI)1248 END DO1249 END DO1250 1251 DO I=1,NDI1252 DO K=1,NSLPTL1253 DDSDDE(I,J+NDI)=DDSDDE(I,J+NDI)-1254 2 DDEMSD(I,K)*DDGDDE(K,J+NDI)1255 DDSDDE(J+NDI,I)=DDSDDE(J+NDI,I)-1256 2 DDEMSD(J+3,K)*DDGDDE(K,I)1257 END DO1258 END DO1259 1260 END DO

  • 1261 END IF1262 1263 IF (ITRATN.NE.0) THEN1264 DO J=1,NTENS1265 DO I=1,NTENS1266 DDSDDE(I,J)=DDSDDE(I,J)/(1.+DEV)1267 END DO1268 END DO1269 END IF1270 1271 C----- Iteration ?1272 IF (ITRATN.NE.0) THEN1273 1274 C----- Save solutions (without iteration):1275 C Shear strain-rate in a slip system FSLIP11276 C Current strength in a slip system GSLP11277 C Shear strain in a slip system GAMMA11278 C Resolved shear stress in a slip system TAUSP11279 C Normal to a slip plane SPNOR11280 C Slip direction SPDIR11281 C Stress STRES11282 C Jacobian matrix DDSDE11283 C1284 IF (NITRTN.EQ.0) THEN1285 1286 IDNOR=3*NSLPTL1287 IDDIR=6*NSLPTL1288 DO J=1,NSLPTL1289 FSLIP1(J)=FSLIP(J)1290 GSLP1(J)=STATEV(J)1291 GAMMA1(J)=STATEV(NSLPTL+J)1292 TAUSP1(J)=STATEV(2*NSLPTL+J)1293 DO I=1,31294 IDNOR=IDNOR+11295 SPNOR1(I,J)=STATEV(IDNOR)1296 1297 IDDIR=IDDIR+11298 SPDIR1(I,J)=STATEV(IDDIR)1299 END DO1300 END DO1301 1302 DO J=1,NTENS1303 STRES1(J)=STRESS(J)1304 DO I=1,NTENS1305 DDSDE1(I,J)=DDSDDE(I,J)1306 END DO1307 END DO1308 1309 END IF1310 1311 C----- Increments of stress DSOLD, and solution dependent state 1312 C variables DGAMOD, DTAUOD, DGSPOD, DSPNRO, DSPDRO (for the next 1313 C iteration)1314 C1315 DO I=1,NTENS1316 DSOLD(I)=DSTRES(I)1317 END DO1318 1319 DO J=1,NSLPTL1320 DGAMOD(J)=DGAMMA(J)1321 DTAUOD(J)=DTAUSP(J)1322 DGSPOD(J)=DGSLIP(J)1323 DO I=1,31324 DSPNRO(I,J)=DSPNOR(I,J)1325 DSPDRO(I,J)=DSPDIR(I,J)1326 END DO1327 END DO1328 1329 C----- Check if the iteration solution converges1330 IDBACK=01331 ID=01332 DO I=1,NSET1333 DO J=1,NSLIP(I)1334 ID=ID+11335 X=STATEV(2*NSLPTL+ID)/STATEV(ID)1336 RESIDU=THETA*DTIME*F(X,PROPS(65+8*I))+DTIME*(1.0-THETA)*1337 2 FSLIP1(ID)-DGAMMA(ID)1338 IF (ABS(RESIDU).GT.GAMERR) IDBACK=11339 END DO1340 END DO1341 1342 IF (IDBACK.NE.0.AND.NITRTN.LT.ITRMAX) THEN1343 C----- Iteration: arrays for iteration1344 CFIXA

  • 1345 CALL ITERATION (STATEV(NSLPTL+1), STATEV(2*NSLPTL+1), 1346 2 STATEV(1), STATEV(9*NSLPTL+1), 1347 3 STATEV(10*NSLPTL+1), NSLPTL, 1348 4 NSET, NSLIP, ND, PROPS(97), DGAMOD,1349 5 DHDGDG)1350 CFIXB1351 1352 GO TO 10001353 1354 ELSE IF (NITRTN.GE.ITRMAX) THEN1355 C----- Solution not converge within maximum number of iteration (the 1356 C solution without iteration will be used)1357 C1358 DO J=1,NTENS1359 STRESS(J)=STRES1(J)1360 DO I=1,NTENS1361 DDSDDE(I,J)=DDSDE1(I,J)1362 END DO1363 END DO1364 1365 IDNOR=3*NSLPTL1366 IDDIR=6*NSLPTL1367 DO J=1,NSLPTL1368 STATEV(J)=GSLP1(J)1369 STATEV(NSLPTL+J)=GAMMA1(J)1370 STATEV(2*NSLPTL+J)=TAUSP1(J)1371 1372 DO I=1,31373 IDNOR=IDNOR+11374 STATEV(IDNOR)=SPNOR1(I,J)1375 1376 IDDIR=IDDIR+11377 STATEV(IDDIR)=SPDIR1(I,J)1378 END DO1379 END DO1380 1381 END IF1382 1383 END IF1384 1385 C----- Total cumulative shear strains on all slip systems (sum of the 1386 C absolute values of shear strains in all slip systems)1387 CFIX-- Total cumulative shear strains on each slip system (sum of the 1388 CFIX absolute values of shear strains in each individual slip system)1389 C1390 DO I=1,NSLPTL1391 CFIXA1392 STATEV(10*NSLPTL+1)=STATEV(10*NSLPTL+1)+ABS(DGAMMA(I))1393 STATEV(9*NSLPTL+I)=STATEV(9*NSLPTL+I)+ABS(DGAMMA(I))1394 CFIXB1395 END DO1396 1397 RETURN1398 END1399 1400 1401 C----------------------------------------------------------------------1402 1403 1404 SUBROUTINE ROTATION (PROP, ROTATE)1405 1406 C----- This subroutine calculates the rotation matrix, i.e. the 1407 C direction cosines of cubic crystal [100], [010] and [001] 1408 C directions in global system1409 1410 C----- The rotation matrix is stored in the array ROTATE.1411 1412 C----- Use single precision on cray1413 C1414 IMPLICIT REAL*8 (A-H,O-Z)1415 DIMENSION PROP(16), ROTATE(3,3), TERM1(3,3), TERM2(3,3), INDX(3) 1416 1417 C----- Subroutines:1418 C1419 C CROSS -- cross product of two vectors1420 C1421 C LUDCMP -- LU decomposition1422 C1423 C LUBKSB -- linear equation solver based on LU decomposition 1424 C method (must call LUDCMP first)1425 1426 1427 C----- PROP -- constants characterizing the crystal orientation 1428 C (INPUT)

  • 1429 C1430 C PROP(1) - PROP(3) -- direction of the first vector in 1431 C local cubic crystal system1432 C PROP(4) - PROP(6) -- direction of the first vector in 1433 C global system1434 C1435 C PROP(9) - PROP(11)-- direction of the second vector in 1436 C local cubic crystal system1437 C PROP(12)- PROP(14)-- direction of the second vector in 1438 C global system1439 C1440 C----- ROTATE -- rotation matrix (OUTPUT):1441 C1442 C ROTATE(i,1) -- direction cosines of direction [1 0 0] in 1443 C local cubic crystal system1444 C ROTATE(i,2) -- direction cosines of direction [0 1 0] in 1445 C local cubic crystal system1446 C ROTATE(i,3) -- direction cosines of direction [0 0 1] in 1447 C local cubic crystal system1448 1449 C----- local matrix: TERM11450 CALL CROSS (PROP(1), PROP(9), TERM1, ANGLE1)1451 1452 C----- LU decomposition of TERM11453 CALL LUDCMP (TERM1, 3, 3, INDX, DCMP)1454 1455 C----- inverse matrix of TERM1: TERM21456 DO J=1,31457 DO I=1,31458 IF (I.EQ.J) THEN1459 TERM2(I,J)=1.1460 ELSE1461 TERM2(I,J)=0.1462 END IF1463 END DO1464 END DO1465 1466 DO J=1,31467 CALL LUBKSB (TERM1, 3, 3, INDX, TERM2(1,J))1468 END DO1469 1470 C----- global matrix: TERM11471 CALL CROSS (PROP(4), PROP(12), TERM1, ANGLE2)1472 1473 C----- Check: the angle between first and second vector in local and 1474 C global systems must be the same. The relative difference must be1475 C less than 0.1%.1476 C1477 IF (ABS(ANGLE1/ANGLE2-1.).GT.0.001) THEN 1478 WRITE (6,*) 1479 2 '***ERROR - angles between two vectors are not the same'1480 STOP1481 END IF1482 1483 C----- rotation matrix: ROTATE1484 DO J=1,31485 DO I=1,31486 ROTATE(I,J)=0.1487 DO K=1,31488 ROTATE(I,J)=ROTATE(I,J)+TERM1(I,K)*TERM2(K,J)1489 END DO1490 END DO1491 END DO1492 1493 RETURN1494 END1495 1496 1497 C-----------------------------------1498 1499 1500 SUBROUTINE CROSS (A, B, C, ANGLE)1501 1502 C----- (1) normalize vectors A and B to unit vectors1503 C (2) store A, B and A*B (cross product) in C1504 1505 C----- Use single precision on cray1506 C1507 IMPLICIT REAL*8 (A-H,O-Z)1508 DIMENSION A(3), B(3), C(3,3)1509 1510 SUM1=SQRT(A(1)**2+A(2)**2+A(3)**2)1511 SUM2=SQRT(B(1)**2+B(2)**2+B(3)**2)1512

  • 1513 IF (SUM1.EQ.0.) THEN1514 WRITE (6,*) '***ERROR - first vector is zero'1515 STOP1516 ELSE1517 DO I=1,31518 C(I,1)=A(I)/SUM11519 END DO1520 END IF1521 1522 IF (SUM2.EQ.0.) THEN1523 WRITE (6,*) '***ERROR - second vector is zero'1524 STOP1525 ELSE1526 DO I=1,31527 C(I,2)=B(I)/SUM21528 END DO1529 END IF1530 1531 ANGLE=0.1532 DO I=1,31533 ANGLE=ANGLE+C(I,1)*C(I,2)1534 END DO1535 ANGLE=ACOS(ANGLE)1536 1537 C(1,3)=C(2,1)*C(3,2)-C(3,1)*C(2,2)1538 C(2,3)=C(3,1)*C(1,2)-C(1,1)*C(3,2)1539 C(3,3)=C(1,1)*C(2,2)-C(2,1)*C(1,2)1540 SUM3=SQRT(C(1,3)**2+C(2,3)**2+C(3,3)**2)1541 IF (SUM3.LT.1.E-8) THEN1542 WRITE (6,*) 1543 2 '***ERROR - first and second vectors are parallel'1544 STOP1545 END IF1546 1547 RETURN1548 END1549 1550 1551 C----------------------------------------------------------------------1552 1553 1554 SUBROUTINE SLIPSYS (ISPDIR, ISPNOR, NSLIP, SLPDIR, SLPNOR, 1555 2 ROTATE)1556 1557 C----- This subroutine generates all slip systems in the same set for 1558 C a CUBIC crystal. For other crystals (e.g., HCP, Tetragonal, 1559 C Orthotropic, ...), it has to be modified to include the effect of1560 C crystal aspect ratio.1561 1562 C----- Denote s as a slip direction and m as normal to a slip plane. 1563 C In a cubic crystal, (s,-m), (-s,m) and (-s,-m) are NOT considered1564 C independent of (s,m).1565 1566 C----- Subroutines: LINE1 and LINE1567 1568 C----- Variables:1569 C1570 C ISPDIR -- a typical slip direction in this set of slip systems 1571 C (integer) (INPUT)1572 C ISPNOR -- a typical normal to slip plane in this set of slip 1573 C systems (integer) (INPUT)1574 C NSLIP -- number of independent slip systems in this set 1575 C (OUTPUT)1576 C SLPDIR -- unit vectors of all slip directions (OUTPUT)1577 C SLPNOR -- unit normals to all slip planes (OUTPUT)1578 C ROTATE -- rotation matrix (INPUT)1579 C ROTATE(i,1) -- direction cosines of [100] in global system1580 C ROTATE(i,2) -- direction cosines of [010] in global system1581 C ROTATE(i,3) -- direction cosines of [001] in global system1582 C1583 C NSPDIR -- number of all possible slip directions in this set1584 C NSPNOR -- number of all possible slip planes in this set1585 C IWKDIR -- all possible slip directions (integer)1586 C IWKNOR -- all possible slip planes (integer)1587 1588 1589 C----- Use single precision on cray1590 C1591 IMPLICIT REAL*8 (A-H,O-Z)1592 DIMENSION ISPDIR(3), ISPNOR(3), SLPDIR(3,50), SLPNOR(3,50), 1593 * ROTATE(3,3), IWKDIR(3,24), IWKNOR(3,24), TERM(3)1594 1595 NSLIP=01596 NSPDIR=0

  • 1597 NSPNOR=01598 1599 C----- Generating all possible slip directions in this set1600 C1601 C Denote the slip direction by [lmn]. I1 is the minimum of the 1602 C absolute value of l, m and n, I3 is the maximum and I2 is the 1603 C mode, e.g. (1 -3 2), I1=1, I2=2 and I3=3. I1=I2>01627 ELSE IF (I1.EQ.0) THEN1628 1629 C I1=0, I3=I2>0 --- [011] type1630 IF (I2.EQ.I3) THEN1631 NSPDIR=61632 DO J=1,61633 DO I=1,31634 IWKDIR(I,J)=I21635 IF (I.EQ.J.OR.J-I.EQ.3) IWKDIR(I,J)=01636 IWKDIR(1,6)=-I21637 IWKDIR(2,4)=-I21638 IWKDIR(3,5)=-I21639 END DO1640 END DO1641 1642 C I1=0, I3>I2>0 --- [012] type1643 ELSE1644 NSPDIR=121645 CALL LINE1 (I2, I3, IWKDIR(1,1), 1)1646 CALL LINE1 (I3, I2, IWKDIR(1,3), 1)1647 CALL LINE1 (I2, I3, IWKDIR(1,5), 2)1648 CALL LINE1 (I3, I2, IWKDIR(1,7), 2)1649 CALL LINE1 (I2, I3, IWKDIR(1,9), 3)1650 CALL LINE1 (I3, I2, IWKDIR(1,11), 3)1651 1652 END IF1653 1654 C I1=I2=I3>0 --- [111] type1655 ELSE IF (I1.EQ.I3) THEN1656 NSPDIR=41657 CALL LINE (I1, I1, I1, IWKDIR)1658 1659 C I3>I2=I1>0 --- [112] type1660 ELSE IF (I1.EQ.I2) THEN1661 NSPDIR=121662 CALL LINE (I1, I1, I3, IWKDIR(1,1))1663 CALL LINE (I1, I3, I1, IWKDIR(1,5))1664 CALL LINE (I3, I1, I1, IWKDIR(1,9))1665 1666 C I3=I2>I1>0 --- [122] type1667 ELSE IF (I2.EQ.I3) THEN1668 NSPDIR=121669 CALL LINE (I1, I2, I2, IWKDIR(1,1))1670 CALL LINE (I2, I1, I2, IWKDIR(1,5))1671 CALL LINE (I2, I2, I1, IWKDIR(1,9))1672 1673 C I3>I2>I1>0 --- [123] type1674 ELSE1675 NSPDIR=241676 CALL LINE (I1, I2, I3, IWKDIR(1,1))1677 CALL LINE (I3, I1, I2, IWKDIR(1,5))1678 CALL LINE (I2, I3, I1, IWKDIR(1,9))1679 CALL LINE (I1, I3, I2, IWKDIR(1,13))1680 CALL LINE (I2, I1, I3, IWKDIR(1,17))

  • 1681 CALL LINE (I3, I2, I1, IWKDIR(1,21))1682 1683 END IF1684 1685 C----- Generating all possible slip planes in this set1686 C1687 C Denote the normal to slip plane by (pqr). J1 is the minimum of1688 C the absolute value of p, q and r, J3 is the maximum and J2 is the1689 C mode, e.g. (1 -2 1), J1=1, J2=1 and J3=2. J1

  • 1765 CALL LINE (J3, J2, J1, IWKNOR(1,21))1766 1767 END IF1768 1769 C----- Generating all slip systems in this set1770 C1771 C----- Unit vectors in slip directions: SLPDIR, and unit normals to 1772 C slip planes: SLPNOR in local cubic crystal system1773 C1774 WRITE (6,*) ' '1775 WRITE (6,*) ' # Slip plane Slip direction'1776 1777 DO J=1,NSPNOR1778 DO I=1,NSPDIR1779 1780 IDOT=01781 DO K=1,31782 IDOT=IDOT+IWKDIR(K,I)*IWKNOR(K,J)1783 END DO1784 1785 IF (IDOT.EQ.0) THEN1786 NSLIP=NSLIP+11787 DO K=1,31788 SLPDIR(K,NSLIP)=IWKDIR(K,I)/RMODIR1789 SLPNOR(K,NSLIP)=IWKNOR(K,J)/RMONOR1790 END DO1791 1792 WRITE (6,10) NSLIP, 1793 2 (IWKNOR(K,J),K=1,3), (IWKDIR(K,I),K=1,3)1794 1795 END IF1796 1797 END DO1798 END DO1799 10 FORMAT(1X,I2,9X,'(',3(1X,I2),1X,')',10X,'[',3(1X,I2),1X,']')1800 1801 WRITE (6,*) 'Number of slip systems in this set = ',NSLIP1802 WRITE (6,*) ' '1803 1804 IF (NSLIP.EQ.0) THEN1805 WRITE (6,*) 1806 * 'There is no slip direction normal to the slip planes!'1807 STOP1808 1809 ELSE1810 1811 C----- Unit vectors in slip directions: SLPDIR, and unit normals to 1812 C slip planes: SLPNOR in global system1813 C1814 DO J=1,NSLIP1815 DO I=1,31816 TERM(I)=0.1817 DO K=1,31818 TERM(I)=TERM(I)+ROTATE(I,K)*SLPDIR(K,J)1819 END DO1820 END DO1821 DO I=1,31822 SLPDIR(I,J)=TERM(I)1823 END DO1824 1825 DO I=1,31826 TERM(I)=0.1827 DO K=1,31828 TERM(I)=TERM(I)+ROTATE(I,K)*SLPNOR(K,J)1829 END DO1830 END DO1831 DO I=1,31832 SLPNOR(I,J)=TERM(I)1833 END DO1834 END DO1835 1836 END IF1837 1838 RETURN1839 END1840 1841 1842 C----------------------------------1843 1844 1845 SUBROUTINE LINE (I1, I2, I3, IARRAY)1846 1847 C----- Generating all possible slip directions (or slip planes 1848 C {lmn}) for a cubic crystal, where l,m,n are not zeros.

  • 1849 1850 C----- Use single precision on cray1851 C1852 IMPLICIT REAL*8 (A-H,O-Z)1853 DIMENSION IARRAY(3,4)1854 1855 DO J=1,41856 IARRAY(1,J)=I11857 IARRAY(2,J)=I21858 IARRAY(3,J)=I31859 END DO1860 1861 DO I=1,31862 DO J=1,41863 IF (J.EQ.I+1) IARRAY(I,J)=-IARRAY(I,J)1864 END DO1865 END DO1866 1867 RETURN1868 END1869 1870 1871 C-----------------------------------1872 1873 1874 SUBROUTINE LINE1 (J1, J2, IARRAY, ID)1875 1876 C----- Generating all possible slip directions (or slip planes 1877 C {0mn}) for a cubic crystal, where m,n are not zeros and m does 1878 C not equal n.1879 1880 C----- Use single precision on cray1881 C1882 IMPLICIT REAL*8 (A-H,O-Z)1883 DIMENSION IARRAY(3,2)1884 1885 IARRAY(ID,1)=01886 IARRAY(ID,2)=01887 1888 ID1=ID+11889 IF (ID1.GT.3) ID1=ID1-31890 IARRAY(ID1,1)=J11891 IARRAY(ID1,2)=J11892 1893 ID2=ID+21894 IF (ID2.GT.3) ID2=ID2-31895 IARRAY(ID2,1)=J21896 IARRAY(ID2,2)=-J21897 1898 RETURN1899 END1900 1901 1902 C----------------------------------------------------------------------1903 1904 1905 SUBROUTINE GSLPINIT (GSLIP0, NSLIP, NSLPTL, NSET, PROP)1906 1907 C----- This subroutine calculates the initial value of current 1908 C strength for each slip system in a rate-dependent single crystal.1909 C Two sets of initial values, proposed by Asaro, Pierce et al, and 1910 C by Bassani, respectively, are used here. Both sets assume that 1911 C the initial values for all slip systems are the same (initially 1912 C isotropic).1913 1914 C----- These initial values are assumed the same for all slip systems 1915 C in each set, though they could be different from set to set, e.g.1916 C {111} and {100}.1917 1918 C----- Users who want to use their own initial values may change the 1919 C function subprogram GSLP0. The parameters characterizing these 1920 C initial values are passed into GSLP0 through array PROP.1921 1922 C----- Use single precision on cray1923 C1924 IMPLICIT REAL*8 (A-H,O-Z)1925 EXTERNAL GSLP01926 DIMENSION GSLIP0(NSLPTL), NSLIP(NSET), PROP(16,NSET)1927 1928 C----- Function subprograms:1929 C1930 C GSLP0 -- User-supplied function subprogram given the initial 1931 C value of current strength at initial state1932

  • 1933 C----- Variables:1934 C1935 C GSLIP0 -- initial value of current strength (OUTPUT)1936 C1937 C NSLIP -- number of slip systems in each set (INPUT)1938 C NSLPTL -- total number of slip systems in all the sets (INPUT)1939 C NSET -- number of sets of slip systems (INPUT)1940 C1941 C PROP -- material constants characterizing the initial value of 1942 C current strength (INPUT)1943 C1944 C For Asaro, Pierce et al's law 1945 C PROP(1,i) -- initial hardening modulus H0 in the ith 1946 C set of slip systems1947 C PROP(2,i) -- saturation stress TAUs in the ith set of 1948 C slip systems1949 C PROP(3,i) -- initial critical resolved shear stress 1950 C TAU0 in the ith set of slip systems1951 C1952 C For Bassani's law 1953 C PROP(1,i) -- initial hardening modulus H0 in the ith 1954 C set of slip systems1955 C PROP(2,i) -- stage I stress TAUI in the ith set of 1956 C slip systems (or the breakthrough stress 1957 C where large plastic flow initiates)1958 C PROP(3,i) -- initial critical resolved shear stress 1959 C TAU0 in the ith set of slip systems1960 C1961 1962 ID=01963 DO I=1,NSET1964 ISET=I1965 DO J=1,NSLIP(I)1966 ID=ID+11967 GSLIP0(ID)=GSLP0(NSLPTL,NSET,NSLIP,PROP(1,I),ID,ISET)1968 END DO1969 END DO1970 1971 RETURN1972 END1973 1974 1975 C----------------------------------1976 1977 1978 C----- Use single precision on cray1979 C1980 REAL*8 FUNCTION GSLP0(NSLPTL,NSET,NSLIP,PROP,ISLIP,ISET)1981 1982 C----- User-supplied function subprogram given the initial value of1983 C current strength at initial state1984 1985 C----- Use single precision on cray1986 C1987 IMPLICIT REAL*8 (A-H,O-Z)1988 DIMENSION NSLIP(NSET), PROP(16)1989 1990 GSLP0=PROP(3)1991 1992 RETURN1993 END1994 1995 1996 C----------------------------------------------------------------------1997 1998 1999 SUBROUTINE STRAINRATE (GAMMA, TAUSLP, GSLIP, NSLIP, FSLIP, 2000 2 DFDXSP, PROP)2001 2002 C----- This subroutine calculates the shear strain-rate in each slip 2003 C system for a rate-dependent single crystal. The POWER LAW 2004 C relation between shear strain-rate and resolved shear stress 2005 C proposed by Hutchinson, Pan and Rice, is used here.2006 2007 C----- The power law exponents are assumed the same for all slip 2008 C systems in each set, though they could be different from set to 2009 C set, e.g. {111} and {100}. The strain-rate coefficient2010 C in front of the power law form are also assumed the same for all 2011 C slip systems in each set. 2012 2013 C----- Users who want to use their own constitutive relation may 2014 C change the function subprograms F and its derivative DFDX, 2015 C where F is the strain hardening law, dGAMMA/dt = F(X), 2016 C X=TAUSLP/GSLIP. The parameters characterizing F are passed into

  • 2017 C F and DFDX through array PROP.2018 2019 C----- Function subprograms:2020 C2021 C F -- User-supplied function subprogram which gives shear 2022 C strain-rate for each slip system based on current 2023 C values of resolved shear stress and current strength2024 C2025 C DFDX -- User-supplied function subprogram dF/dX, where x is the2026 C ratio of resolved shear stress over current strength2027 2028 C----- Variables:2029 C2030 C GAMMA -- shear strain in each slip system at the start of time 2031 C step (INPUT)2032 C TAUSLP -- resolved shear stress in each slip system (INPUT)2033 C GSLIP -- current strength (INPUT)2034 C NSLIP -- number of slip systems in this set (INPUT)2035 C2036 C FSLIP -- current value of F for each slip system (OUTPUT)2037 C DFDXSP -- current value of DFDX for each slip system (OUTPUT)2038 C2039 C PROP -- material constants characterizing the strain hardening 2040 C law (INPUT)2041 C2042 C For the current power law strain hardening law 2043 C PROP(1) -- power law hardening exponent2044 C PROP(1) = infinity corresponds to a rate-independent 2045 C material2046 C PROP(2) -- coefficient in front of power law hardening2047 2048 2049 C----- Use single precision on cray2050 C2051 IMPLICIT REAL*8 (A-H,O-Z)2052 EXTERNAL F, DFDX2053 DIMENSION GAMMA(NSLIP), TAUSLP(NSLIP), GSLIP(NSLIP), 2054 2 FSLIP(NSLIP), DFDXSP(NSLIP), PROP(8)2055 2056 DO I=1,NSLIP2057 X=TAUSLP(I)/GSLIP(I)2058 FSLIP(I)=F(X,PROP)2059 DFDXSP(I)=DFDX(X,PROP)2060 END DO2061 2062 RETURN2063 END2064 2065 2066 C-----------------------------------2067 2068 2069 C----- Use single precision on cray2070 C2071 REAL*8 FUNCTION F(X,PROP)2072 2073 C----- User-supplied function subprogram which gives shear 2074 C strain-rate for each slip system based on current values of 2075 C resolved shear stress and current strength2076 C2077 C----- Use single precision on cray2078 C2079 IMPLICIT REAL*8 (A-H,O-Z)2080 DIMENSION PROP(8)2081 2082 F=PROP(2)*(ABS(X))**PROP(1)*DSIGN(1.D0,X)2083 2084 RETURN2085 END2086 2087 2088 C-----------------------------------2089 2090 2091 C----- Use single precision on cray2092 C2093 REAL*8 FUNCTION DFDX(X,PROP)2094 2095 C----- User-supplied function subprogram dF/dX, where x is the 2096 C ratio of resolved shear stress over current strength2097 2098 C----- Use single precision on cray2099 C2100 IMPLICIT REAL*8 (A-H,O-Z)

  • 2101 DIMENSION PROP(8)2102 2103 DFDX=PROP(1)*PROP(2)*(ABS(X))**(PROP(1)-1.)2104 2105 RETURN2106 END2107 2108 2109 C----------------------------------------------------------------------2110 2111 CFIXA2112 SUBROUTINE LATENTHARDEN (GAMMA, TAUSLP, GSLIP, GMSLTL, GAMTOL, 2113 2 NSLIP, NSLPTL, NSET, H, PROP, ND)2114 CFIXB2115 2116 C----- This subroutine calculates the current self- and latent-2117 C hardening moduli for all slip systems in a rate-dependent single 2118 C crystal. Two kinds of hardening law are used here. The first 2119 C law, proposed by Asaro, and Pierce et al, assumes a HYPER SECANT 2120 C relation between self- and latent-hardening moduli and overall 2121 C shear strain. The Bauschinger effect has been neglected. The 2122 C second is Bassani's hardening law, which gives an explicit 2123 C expression of slip interactions between slip systems. The 2124 C classical three stage hardening for FCC single crystal could be 2125 C simulated.2126 2127 C----- The hardening coefficients are assumed the same for all slip 2128 C systems in each set, though they could be different from set to 2129 C set, e.g. {111} and {100}.2130 2131 C----- Users who want to use their own self- and latent-hardening law 2132 C may change the function subprograms HSELF (self hardening) and 2133 C HLATNT (latent hardening). The parameters characterizing these 2134 C hardening laws are passed into HSELF and HLATNT through array 2135 C PROP.2136 2137 2138 C----- Function subprograms:2139 C2140 C HSELF -- User-supplied self-hardening function in a slip 2141 C system2142 C2143 C HLATNT -- User-supplied latent-hardening function2144 2145 C----- Variables:2146 C2147 C GAMMA -- shear strain in all slip systems at the start of time 2148 C step (INPUT)2149 C TAUSLP -- resolved shear stress in all slip systems (INPUT)2150 C GSLIP -- current strength (INPUT)2151 CFIX GMSLTL -- total cumulative shear strains on each individual slip system 2152 CFIX (INPUT)2153 C GAMTOL -- total cumulative shear strains over all slip systems 2154 C (INPUT)2155 C NSLIP -- number of slip systems in each set (INPUT)2156 C NSLPTL -- total number of slip systems in all the sets (INPUT)2157 C NSET -- number of sets of slip systems (INPUT)2158 C2159 C H -- current value of self- and latent-hardening moduli 2160 C (OUTPUT)2161 C H(i,i) -- self-hardening modulus of the ith slip system2162 C (no sum over i)2163 C H(i,j) -- latent-hardening molulus of the ith slip 2164 C system due to a slip in the jth slip system 2165 C (i not equal j)2166 C2167 C PROP -- material constants characterizing the self- and latent-2168 C hardening law (INPUT)2169 C2170 C For the HYPER SECANT hardening law 2171 C PROP(1,i) -- initial hardening modulus H0 in the ith 2172 C set of slip systems2173 C PROP(2,i) -- saturation stress TAUs in the ith set of 2174 C slip systems2175 C PROP(3,i) -- initial critical resolved shear stress 2176 C TAU0 in the ith set of slip systems2177 C PROP(9,i) -- ratio of latent to self-hardening Q in the2178 C ith set of slip systems2179 C PROP(10,i)-- ratio of latent-hardening from other sets 2180 C of slip systems to self-hardening in the 2181 C ith set of slip systems Q12182 C2183 C For Bassani's hardening law 2184 C PROP(1,i) -- initial hardening modulus H0 in the ith

  • 2185 C set of slip systems2186 C PROP(2,i) -- stage I stress TAUI in the ith set of 2187 C slip systems (or the breakthrough stress 2188 C where large plastic flow initiates)2189 C PROP(3,i) -- initial critical resolved shear stress 2190 C TAU0 in the ith set of slip systems2191 C PROP(4,i) -- hardening modulus during easy glide Hs in 2192 C the ith set of slip systems2193 C PROP(5,i) -- amount of slip Gamma0 after which a given 2194 C interaction between slip systems in the 2195 C ith set reaches peak strength2196 C PROP(6,i) -- amount of slip Gamma0 after which a given 2197 C interaction between slip systems in the 2198 C ith set and jth set (i not equal j) 2199 C reaches peak strength2200 C PROP(7,i) -- representing the magnitude of the strength2201 C of interaction in the ith set of slip 2202 C system2203 C PROP(8,i) -- representing the magnitude of the strength2204 C of interaction between the ith set and jth2205 C set of system2206 C PROP(9,i) -- ratio of latent to self-hardening Q in the2207 C ith set of slip systems2208 C PROP(10,i)-- ratio of latent-hardening from other sets 2209 C of slip systems to self-hardening in the 2210 C ith set of slip systems Q12211 C2212 C ND -- leading dimension of arrays defined in subroutine UMAT 2213 C (INPUT) 2214 2215 2216 C----- Use single precision on cray2217 C2218 IMPLICIT REAL*8 (A-H,O-Z)2219 EXTERNAL HSELF, HLATNT2220 CFIXA2221 DIMENSION GAMMA(NSLPTL), TAUSLP(NSLPTL), GMSLTL(NSLPTL),2222 2 GSLIP(NSLPTL), NSLIP(NSET), PROP(16,NSET), 2223 3 H(ND,NSLPTL)2224 CFIXB2225 2226 CHECK=0.2227 DO I=1,NSET2228 DO J=4,82229 CHECK=CHECK+ABS(PROP(J,I))2230 END DO2231 END DO2232 2233 C----- CHECK=0 -- HYPER SECANT hardening law2234 C otherwise -- Bassani's hardening law2235 2236 ISELF=02237 DO I=1,NSET2238 ISET=I2239 DO J=1,NSLIP(I)2240 ISELF=ISELF+12241 2242 DO LATENT=1,NSLPTL2243 IF (LATENT.EQ.ISELF) THEN2244 CFIXA2245 H(LATENT,ISELF)=HSELF(GAMMA,GMSLTL,GAMTOL,NSLPTL,2246 2 NSET,NSLIP,PROP(1,I),CHECK,2247 3 ISELF,ISET)2248 CFIXB2249 ELSE2250 CFIXA2251 H(LATENT,ISELF)=HLATNT(GAMMA,GMSLTL,GAMTOL,NSLPTL,2252 2 NSET,NSLIP,PROP(1,I),CHECK,2253 3 ISELF,ISET,LATENT)2254 CFIXB2255 2256 END IF2257 END DO2258 2259 END DO2260 END DO2261 2262 RETURN2263 END2264 2265 2266 C-----------------------------------2267 2268

  • 2269 C----- Use single precision on cray2270 CFIXA2271 REAL*8 FUNCTION HSELF(GAMMA,GMSLTL,GAMTOL,NSLPTL,NSET,2272 2 NSLIP,PROP,CHECK,ISELF,ISET)2273 CFIXB2274 2275 C----- User-supplied self-hardening function in a slip system2276 2277 C----- Use single precision on cray2278 C2279 IMPLICIT REAL*8 (A-H,O-Z)2280 CFIXA2281 DIMENSION GAMMA(NSLPTL), NSLIP(NSET), PROP(16),2282 2 GMSLTL(NSLPTL)2283 CFIXB2284 2285 IF (CHECK.EQ.0.) THEN2286 2287 C----- HYPER SECANT hardening law by Asaro, Pierce et al2288 TERM1=PROP(1)*GAMTOL/(PROP(2)-PROP(3))2289 TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1))2290 HSELF=PROP(1)*TERM2**22291 2292 ELSE2293 2294 C----- Bassani's hardening law2295 CFIXA2296 TERM1=(PROP(1)-PROP(4))*GMSLTL(ISELF)/(PROP(2)-PROP(3))2297 CFIXB2298 TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1))2299 F=(PROP(1)-PROP(4))*TERM2**2+PROP(4)2300 2301 ID=02302 G=1.2303 DO I=1,NSET2304 IF (I.EQ.ISET) THEN2305 GAMMA0=PROP(5)2306 FAB=PROP(7)2307 ELSE2308 GAMMA0=PROP(6)2309 FAB=PROP(8)2310 END IF2311 2312 DO J=1,NSLIP(I)2313 ID=ID+12314 IF (ID.NE.ISELF) THEN2315 CFIXA2316 G=G+FAB*TANH(GMSLTL(ID)/GAMMA0)2317 CFIXB2318 END IF2319 2320 END DO2321 END DO2322 2323 HSELF=F*G2324 2325 END IF2326 2327 RETURN2328 END2329 2330 2331 C-----------------------------------2332 2333 2334 C----- Use single precision on cray2335 CFIXA2336 REAL*8 FUNCTION HLATNT(GAMMA,GMSLTL,GAMTOL,NSLPTL,NSET,2337 2 NSLIP,PROP,CHECK,ISELF,ISET,LATENT)2338 CFIXB2339 2340 C----- User-supplied latent-hardening function2341 2342 C----- Use single precision on cray2343 C2344 IMPLICIT REAL*8 (A-H,O-Z)2345 CFIXA2346 DIMENSION GAMMA(NSLPTL), NSLIP(NSET), PROP(16),2347 2 GMSLTL(NSLPTL)2348 CFIXB2349 2350 ILOWER=02351 IUPPER=NSLIP(1)2352 IF (ISET.GT.1) THEN

  • 2353 DO K=2,ISET2354 ILOWER=ILOWER+NSLIP(K-1)2355 IUPPER=IUPPER+NSLIP(K)2356 END DO2357 END IF2358 2359 IF (LATENT.GT.ILOWER.AND.LATENT.LE.IUPPER) THEN2360 Q=PROP(9)2361 ELSE2362 Q=PROP(10)2363 END IF2364 2365 IF (CHECK.EQ.0.) THEN2366 2367 C----- HYPER SECANT hardening law by Asaro, Pierce et al2368 TERM1=PROP(1)*GAMTOL/(PROP(2)-PROP(3))2369 TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1))2370 HLATNT=PROP(1)*TERM2**2*Q2371 2372 ELSE2373 2374 C----- Bassani's hardening law2375 CFIXA2376 TERM1=(PROP(1)-PROP(4))*GMSLTL(ISELF)/(PROP(2)-PROP(3))2377 CFIXB2378 TERM2=2.*EXP(-TERM1)/(1.+EXP(-2.*TERM1))2379 F=(PROP(1)-PROP(4))*TERM2**2+PROP(4)2380 2381 ID=02382 G=1.2383 DO I=1,NSET2384 IF (I.EQ.ISET) THEN2385 GAMMA0=PROP(5)2386 FAB=PROP(7)2387 ELSE2388 GAMMA0=PROP(6)2389 FAB=PROP(8)2390 END IF2391 2392 DO J=1,NSLIP(I)2393 ID=ID+12394 IF (ID.NE.ISELF) THEN2395 CFIXA2396 G=G+FAB*TANH(GMSLTL(ID)/GAMMA0)2397 CFIXB2398 END IF2399 2400 END DO2401 END DO2402 2403 HLATNT=F*G*Q2404 2405 END IF2406 2407 RETURN2408 END2409 2410 2411 C----------------------------------------------------------------------2412 2413 CFIXA2414 SUBROUTINE ITERATION (GAMMA, TAUSLP, GSLIP, GMSLTL, GAMTOL, 2415 2 NSLPTL, NSET, NSLIP, ND, PROP, DGAMOD, 2416 3 DHDGDG)2417 CFIXB2418 2419 C----- This subroutine generates arrays for the Newton-Rhapson 2420 C iteration method.2421 2422 C----- Users who want to use their own self- and latent-hardening law 2423 C may change the function subprograms DHSELF (self hardening) and 2424 C DHLATN (latent hardening). The parameters characterizing these 2425 C hardening laws are passed into DHSELF and DHLATN through array 2426 C PROP.2427 2428 2429 C----- Function subprograms:2430 C2431 C DHSELF -- User-supplied function of the derivative of self-2432 C hardening moduli2433 C2434 C DHLATN -- User-supplied function of the derivative of latent-2435 C