-
Notifications
You must be signed in to change notification settings - Fork 5
/
kslip5ET.f
83 lines (63 loc) · 2.7 KB
/
kslip5ET.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
!Slip Rule Re-development
subroutine kslip5ET(xNorm,xDir,tau,signtau,tauc,burgerv,rhossd,gndtot,
+ gndall,gndcut,gndmob,dtime,ne,ns,iphase,Lp,tmat)
implicit none
integer,intent(in):: ne,ns,iphase
real*8, intent(in) :: rhossd,gndtot,dtime, gndall(ne+ns), gndcut(ne), gndmob(ne), signtau(ne)
real*8, intent(in) :: xNorm(ne,3),xDir(ne,3),tau(ne),tauc(ne),burgerv(ne)
real*8, intent(out) :: Lp(3,3),tmat(6,6)
integer :: i
real*8 :: alpha,beta,result1,
+ xlambdap,xvol,rhom,rhom0,psi,K,T,dF,f,
+ SNij(3,3),sni(6),nsi(6),SNNS(6,6),NSij(3,3),result4(6,6),
+ tempNorm(3), tempDir(3),gammaDot(ne), gamm0, rhognd
C
C *** CALCULATE THE DERIVATIVE OF PLASTIC STRAIN INCREMENT WITH
C RESPECT TO THE STRESS DEFINED AS tmat***
C
if (iphase == 0) then
!Slava Be
psi = 1.0
rhom0 = 0.003 !Slava Be
dF = 3.4559E-20 *1E12 ! microN.microns = pJ
f = 1e11
gamm0 = 5e-2
elseif (iphase == 2) then
psi = 1E-7 !1.457e-4
rhom0 = 5.0
dF = 0.0 ! !3.4559E-20 *1E12 ! microN.microns = pJ
f = 50E+11 !1e11
gamm0 = 6e-4 !8.33E-6
endif
K = 1.381E-23 *1E12 ! pJ / K
T = 293.0
!ne = microns, stress = MPa, F = microN, therefore E = pJ
C
tmat=0.; Lp = 0.;result4=0.
!rhogndold=sum(gndold)
Do I=1,ne
if (tau(I) >= tauc(I)) THEN
rhom = psi*(rhom0 + gndmob(I))
rhognd = gndtot !gndcut(I)
xlambdap = 1.0/sqrt((rhognd+rhossd)) !overall
xvol = xlambdap*burgerv(I)*burgerv(I)
beta = gamm0*xvol/(K*T)
alpha = rhom*burgerv(I)*burgerv(I)*f*exp(-dF/(K*T))
gammaDot(I)=alpha*sinh(beta*signtau(I)*(tau(I) - tauc(I)) )
tempNorm = xNorm(I,:); tempDir = xDir(I,:)
SNij = spread(tempDir,2,3)*spread(tempNorm,1,3)
NSij = spread(tempNorm,2,3)*spread(tempDir,1,3)
CALL KGMATVEC6(SNij,sni)
CALL KGMATVEC6(NSij,nsi)
SNNS = spread(sni,2,6)*spread(nsi,1,6)
result1 = cosh(beta*signtau(I)*(tau(I) - tauc(I)))
result4 = result4 + alpha*beta*dtime*result1*SNNS
Lp = Lp + gammaDot(I)*SNij
else
gammaDot(I)=0.0
end if
C
END DO
tmat = 0.5*(result4+transpose(result4))
return
end subroutine kslip5ET