33
34
35
36
37
38
39
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "com08_c.inc"
48
49
50
51 INTEGER,INTENT(IN) :: NEL
52 my_real,
INTENT(IN) :: pfrac,deps(6,nel),vol(nel),uparam(*),volume(nel),pext,de(nel)
53 my_real,
INTENT(INOUT) :: sigd(6,nel),pold(nel),eint(nel),epseq(nel),plas(nel)
54
55
56
57 INTEGER :: I,KK
58 my_real :: gg,a0,a1,a2,amax,tmelt,thetl,amumx,sigmx
61 my_real,
intent(in) :: vfrac(nel)
63 my_real :: t1(nel), t2(nel), t3(nel), t4(nel), t5(nel), t6(nel)
65 my_real :: bulk(nel), bulk2(nel), g(nel), g43(nel), g0(nel), g2(nel)
70
71
72
73 a0 = uparam(16)
74 a1 = uparam(17)
75 a2 = uparam(18)
76 amax = uparam(19)
77 young = uparam(02)
78 nu = uparam(22)
79 pstar = uparam(23)
80 tmelt = uparam(08)
81 thetl = uparam(09)
82 amumx = uparam(20)
83 sigmx = uparam(11)
84 t0 = uparam(13)
85 gg = uparam(01)
86 bulk(1:nel) = uparam(21)
87 bulk2(1:nel) = uparam(21)
88
89 DO i=1,nel
90 g(i) = gg
91 g2(i) = two * g(i)
92 g43(i) = onep333*gg
93
94 t1(i)=sigd(1,i)
95 t2(i)=sigd(2,i)
96 t3(i)=sigd(3,i)
97 t4(i)=sigd(4,i)
98 t5(i)=sigd(5,i)
99 t6(i)=sigd(6,i)
100
101 sigdo(1:6,i) = sigd(1:6,i)
102 fact = vfrac(i)
103 IF(vfrac(i) > two*em02)THEN
104 t1(i) = t1(i) + g2(i)* (deps(1,i)-de(i))*fact
105 t2(i) = t2(i) + g2(i)* (deps(2,i)-de(i))*fact
106 t3(i) = t3(i) + g2(i)* (deps(3,i)-de(i))*fact
107 t4(i) = t4(i) + g(i) * deps(4,i)*fact
108 t5(i) = t5(i) + g(i) * deps(5,i)*fact
109 t6(i) = t6(i) + g(i) * deps(6,i)*fact
110 ENDIF
111
112 j2(i)=half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
113 vm=sqrt(three*j2(i))
114 ptot = pold(i)+pext
115 g0(i) =a0+a1*ptot+a2*ptot*ptot
116 g0(i)=
min(amax,g0(i))
117 g0(i)=
max(zero,g0(i))
118 IF(ptot <= pstar)g0(i)=zero
119 IF(pold(i) < pfrac)g0(i)=zero
120 yield2(i)=j2(i)-g0(i)
121
122
123 if(vfrac(i) > two*em02) then
124
125 r = zero
126 IF(g0(i) > zero)THEN
127 IF(yield2(i) > zero)THEN
128 r = sqrt(three*g0(i))/(vm+ em14)
129 dpla = (one - r)*vm /
max(three*g(i),em15)
130 plas(i) = plas(i) + dpla
131 epseq(i) = epseq(i)+ dpla
132 ELSE
133 r = one-em02
134 ENDIF
135 ENDIF
136
137
138 sigd(1,i) = t1(i) * r
139 sigd(2,i) = t2(i) * r
140 sigd(3,i) = t3(i) * r
141 sigd(4,i) = t4(i) * r
142 sigd(5,i) = t5(i) * r
143 sigd(6,i) = t6(i) * r
144
145 vol_avg = half*(vfrac(i)*volume(i)+vol(i))
146 einc = half*vol_avg*
147 . ( (sigdo(1,i)+sigd(1,i)) * deps(1,i)
148 . + (sigdo(2,i)+sigd(2,i)) * deps(2,i)
149 . + (sigdo(3,i)+sigd(3,i)) * deps(3,i)
150 . + (sigdo(4,i)+sigd(4,i)) * deps(4,i)
151 . + (sigdo(5,i)+sigd(5,i)) * deps(5,i)
152 . + (sigdo(6,i)+sigd(6,i)) * deps(6,i))
153 eint(i) = eint(i) + einc
154 elseif(vfrac(i) < em02)then
155 plas(i) = zero
156 sigd(1,i) = zero
157 sigd(2,i) = zero
158 sigd(3,i) = zero
159 sigd(4,i) = zero
160 sigd(5,i) = zero
161 sigd(6,i) = zero
162 else
163
164 r = (vfrac(i)-em02)*hundred
165 plas(i) = r * plas(i)
166 if(yield2(i) > zero)then
167 r = r * sqrt(three*g0(i))/(vm+ em14)
168 end if
169 if(g0(i) == zero) r = zero
170
171
172
173 sigd(1,i) = sigd(1,i) * r
174 sigd(2,i) = sigd(2,i) * r
175 sigd(3,i) = sigd(3,i) * r
176 sigd(4,i) = sigd(4,i) * r
177 sigd(5,i) = sigd(5,i) * r
178 sigd(6,i) = sigd(6,i) * r
179 end if
180
181 ENDDO
182
183
184 RETURN