36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "param_c.inc"
44#include "units_c.inc"
45
46
47
48 INTEGER NEL,NINDX
49 INTEGER INDX(NINDX),NGL(NEL)
50 my_real,
DIMENSION(NPROPM) :: pm
51 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: s01,s02,s03,s04,s05,s06,
52 . deps1,deps2,deps3,deps4,deps5,deps6,de1,de2,de3,
53 . scal1,scal2,scal3,scle2
54 my_real ,
DIMENSION(NEL,3,3) ,
INTENT(OUT) :: cdam
55 my_real,
DIMENSION(NEL,6) ,
INTENT(INOUT) :: sig,ang
56 my_real,
DIMENSION(NEL,3) ,
INTENT(INOUT) :: eps_f,dam,crak
57
58
59
60 INTEGER I,J,K,IDEB,IDIR
61 my_real eps(6), epstot(6), de(3), scal(3), sigo(6), dir(6),ang0(6)
62 my_real young, nu, g, dsup, vmax, qq, aa, ac, epst, sftry, den, depsf
63
64 ideb = 0
65
66 young = pm(20)
67 nu = pm(21)
68 g = pm(22)
69 dsup = pm(26)
70 vmax = pm(27)
71 qq = pm(28)
72 aa = pm(38)
73 ac = pm(41)
74 epst = pm(42)
75
76 DO j = 1,nindx
77 i = indx(j)
78 eps(1) = deps1(i)
79 eps(2) = deps2(i)
80 eps(3) = deps3(i)
81 eps(4) = deps4(i)
82 eps(5) = deps5(i)
83 eps(6) = deps6(i)
84 de(1) = de1(i)
85 de(2) = de2(i)
86 de(3) = de3(i)
87 scal(1) = scal1(i
88 scal(2) = scal2(i)
89 scal(3) = scal3(i)
90 epstot(1)= crak(i,1)
91 epstot(2)= crak(i,2)
92 epstot(3)= crak(i,3)
93 epstot(4)= s04(i)/g
94 epstot(5)= s05(i)/g
95 epstot(6)= s06(i)/g
96 ang0(1) = ang(i,1)
97 ang0(2) = ang(i,2)
98 ang0(3) = ang(i,3)
99 ang0(4) = ang(i,4)
100 ang0(5) = ang(i,5)
101 ang0(6) = ang(i,6)
102
103 sigo(1) = s01(i)
104 sigo(2) = s02(i)
105 sigo(3) = s03(i)
106 sigo(4) = s04(i)
107 sigo(5) = s05(i)
108 sigo(6) = s06(i)
109
110 IF (dam(i,1) > zero) THEN
111 idir = 3
112 IF (dam(i,2) == zero) THEN
113 idir = 2
114 CALL pri224(sigo,epstot,eps,dir(4),ang0)
115 ENDIF
116 ELSE
117 idir = 1
118 CALL pri324(sigo,epstot,eps,dir)
119 ENDIF
120
121
122
123 sftry =
min(epstot(idir),epstot(idir)-scle2(i)*eps(idir),epst)
124 sftry =
max(sftry,fourth*epst)
125
126 IF (epstotTHEN
127 IF (ideb==1) THEN
128 WRITE(iout, '(A,I1,A,I10,A,5X,A,E10.3,A,E10.3,A,E10.3)')
129 . ' FAILURE-',idir,' ELEMENT #',ngl(i),' FUNNY!',
130 . ' EPS_F ',sftry,'EPSTOT',epstot(idir),' EPST ',epst
131 WRITE(istdo,'(A,I1,A,I10,A,5X,A,E10.3,A,E10.3,A,E10.3)')
132 . ' FAILURE-',idir,' ELEMENT #',ngl(i),' FUNNY!',
133 . ' EPS_F ',sftry,'EPSTOT',epstot(idir),' EPST ',epst
134 ENDIF
135 sig(i,1) = s01(i)
136 sig(i,2) = s02(i)
137 sig(i,3) = s03(i)
138 sig(i,4) = s04(i)
139 sig(i,5) = s05(i)
140 sig(i,6) = s06(i)
141
142 cycle
143 ENDIF
144
145
146
147 IF (idir == 1) THEN
148 ang(i,1:6) = dir(1:6)
149 ELSEIF (idir == 2) THEN
150 ang(i,4:6) = dir(4:6)
151 ENDIF
152
153
154
155 DO k=1,3
156 crak(i,k) = epstot(k)
157 depsf = epstot(k) - sftry
158 IF (depsf >= zero .AND. eps_f(i,k) < zero) THEN
159 IF (k >= 2) THEN
160 IF (dam(i,k-1) == zero) cycle
161 ENDIF
162 IF (ideb==1) THEN
163 WRITE(iout, '(A,I1,A,I10,A,3F6.3,A,3F6.3,A,E10.3,A,E10.3)')
164 . ' FAILURE-',k,' ELEMENT #',ngl(i),
165 . ' VEC-1 ',ang(i,1),ang(i,2),ang(i,3),
166 . ' VEC-2 ',ang(i,4),ang(i,5),ang(i,6),
167 . ' EPS_F ',sftry,' EPSTOT ',epstot(k)
168 WRITE(istdo,'(A,I1,A,I10,A,3F6.3,A,3F6.3,A,E10.3,A,E10.3)')
169 . ' FAILURE-',k,' ELEMENT #',ngl(i),
170 . ' VEC-1 ',ang(i,1),ang(i,2),ang(i,3),
171 . ' VEC-2 ',ang(i,4),ang(i,5),ang(i,6),
172 . ' EPS_F ',sftry,' EPSTOT ',epstot(k)
173 ENDIF
174
175 eps_f(i,k) = sftry
176 dam(i,k) = qq * (one - eps_f(i,k) /
max(epstot(k),em20) )
177 dam(i,k) =
max(dam(i,k),em20)
178 dam(i,k) =
min(dam(i,k),dsup)
179 de(k) = one - dam(i,k)
180 scal(k) = zero
181
182
183
184
185
186
187
188 ENDIF
189 ENDDO
190
191
192
193 den = one - nu**2
194 . * (scal(1)*scal(2) + scal(2)*scal(3) + scal(3)*scal(1)
195 . + two*nu*scal(1)*scal(2)*scal(3))
196
197 cdam(i,1,1) = young*de(1)*(one-nu**2*scal(2)*scal(3))/den
198 cdam(i,2,2) = young*de(2)*(one-nu**2*scal(1)*scal(3))/den
199 cdam(i,3,3) = young*de(3)*(one-nu**2*scal(2)*scal(1))/den
200 cdam(i,1,2) = nu*young*scal(1)*scal(2)*(one+nu*scal(3))/den
201 cdam(i,2,3) = nu*young*scal(2)*scal(3)*(one+nu*scal(1))/den
202 cdam(i,1,3) = nu*young*scal(1)*scal(3)*(one+nu*scal(2))/den
203 cdam(i,2,1) = cdam(i,1,2)
204 cdam(i,3,1) = cdam(i,1,3)
205 cdam(i,3,2) = cdam(i,2,3)
206
207 sig(i,1) = cdam(i,1,1)*epstot(1)
208 . + cdam(i,1,2)*epstot(2)
209 . + cdam(i,1,3)*epstot(3)
210 sig(i,2) = cdam(i,2,1)*epstot(1)
211 . + cdam(i,2,2)*epstot(2)
212 . + cdam(i,2,3)*epstot(3)
213 sig(i,3) = cdam(i,3,1)*epstot(1)
214 . + cdam(i,3,2)*epstot(2)
215 . + cdam(i,3,3)*epstot(3)
216 sig(i,4) = scal(1)*scal(2)*sigo(4)
217 sig(i,5) = scal(2)*scal(3)*sigo(5)
218 sig(i,6) = scal(3)*scal(1)*sigo(6)
219
220 ENDDO
221
222 RETURN
subroutine pri224(sig3d, epstot, eps, dir3d, ang)
subroutine pri324(sig, epstot, eps, vec)