31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "mvsiz_p.inc"
39
40
41
42#include "com08_c.inc"
43#include "units_c.inc"
44#include "param_c.inc"
45
46
47
48 INTEGER NGL(MVSIZ),IMAT
49 INTEGER JFT, JLT,ILAYER,ICHA,IFLAG,NEL
50
52 . pm(npropm,*),damt(nel,2),
53 . sigr(nel,6),sig(mvsiz,5)
54
55
56
57 INTEGER I,J
58 INTEGER, DIMENSION(MVSIZ) :: FAILURE
60 . ef2,efc2,em22,emc2
62 . sigt1(mvsiz),sigt2(mvsiz),sigc1(mvsiz),sigc2(mvsiz),
63 . sigr12(mvsiz),beta(mvsiz),sch1(mvsiz,5),taux,s1,s2,s3,
64 . s4,s5, tmax(mvsiz)
65
66 DO i=jft,jlt
67 iflag = nint(pm(147,imat))
68 IF (iflag == 1) THEN
69 sigt1(i) = pm(141,imat)
70 sigt2(i) = pm(142,imat)
71 sigc1(i) = pm(143,imat)
72 sigc2(i) = pm(144,imat)
73 sigr12(i) = pm(145,imat)
74 ELSE
75 sigt1(i) = pm(148,imat)
76 sigt2(i) = pm(149,imat)
77 sigc1(i) = pm(150,imat)
78 sigc2(i) = pm(151,imat)
79 sigr12(i) = pm(152,imat)
80 ENDIF
81
82 beta(i) = pm(60,imat)
83 tmax(i) = pm(61,imat)
84
85 sch1(i,1) = zero
86 sch1(i,2) = zero
87 sch1(i,3) = zero
88 sch1(i,4) = zero
89 sch1(i,5) = zero
90 ENDDO
91
92
93
94
95 failure(1:mvsiz) = 0
96 DO i=jft,jlt
97 ef2 =zero
98 efc2 =zero
99 em22 =zero
100 emc2 =zero
101
102 IF (damt(i,1) < one) THEN
103
104 damt(i,1)=exp(-(tt-sigr(i,6))/tmax(i))
105 IF (damt(i,1) < em02) damt(i,1)=zero
106
107 ELSEIF (damt(i,2) < one) THEN
108
109 damt(i,2)=exp(-(tt-sigr(i,6))/tmax(i))
110 IF (damt(i,2) < em02) damt(i,2)=zero
111 sig(i,2) = sigr(i,2)*damt(i,2)
112 sig(i,3) = sigr(i,3)*damt(i,2)
113 sig(i,4) = sigr(i,4)*damt(i,2)
114 sig(i,5) = sigr(i,5)*damt(i,2)
115 IF (sig(i,1)> zero) THEN
116 ef2=(sig(i,1)/sigt1(i))**2 + beta(i)*(sig(i,3)/sigr12(i))**2
117 damt(i,1)=one
118 ELSE
119 efc2 = (sig(i,1)/sigc1(i))**2
120 damt(i,1)=one
121 ENDIF
122 IF (ef2 >= one .OR. efc2 >= one) THEN
123 sigr(i,6) = tt
124 damt(i,1) = zep9
125 sch1(i,1) = sig(i,1)
126 sch1(i,2) = sigr(i,2)*damt(i,2)
127 sch1(i,3) = sigr(i,3)*damt(i,2)
128 sch1(i,4) = sigr(i,4)*damt(i,2)
129 sch1(i,5) = sigr(i,5)*damt(i,2)
130 ENDIF
131
132 ELSE
133
134
135
136
137 IF (sig(i,1) > zero) THEN
138
139 ef2=(sig(i,1)/sigt1(i))**2 + beta(i)*(sig(i,3)/sigr12(i))**2
140 damt(i,1)=one
141 ELSE
142
143 efc2 = (sig(i,1)/sigc1(i))**2
144 damt(i,1)=one
145 ENDIF
146 IF (ef2 >= one .OR. efc2 >= one) THEN
147 damt(i,1) = zep9
148 sigr(i,6) = tt
149 sch1(i,1) = sig(i,1)
150 sch1(i,2) = sig(i,2)
151 sch1(i,3) = sig(i,3)
152 sch1(i,4) = sig(i,4)
153 sch1(i,5) = sig(i,5)
154 failure(i) = 1
155
156
157
158
159
160
161
162 ELSE
163 IF (sig(i,2) >= zero) THEN
164
165 em22=(sig(i,2)/sigc2(i))**2 + (sig(i,3)/sigr12(i))**2
166 damt(i,2)=one
167 ELSE
168
169 emc2=(sig(i,2)/(two*sigr12(i)))**2
170 + +(sig(i,3)/sigr12(i))**2
171 + +sig(i,2)*((sigc2(i)/(two*sigr12(i)))**2-one)/sigc2(i)
172 damt(i,2)=one
173 ENDIF
174 IF (em22 >= one .OR. emc2 >= one) THEN
175 damt(i,2) = zep9
176 sigr(i,6) = tt
177 sigr(i,1) = sig(i,1)
178 sigr(i,2) = sig(i,2)
179 sigr(i,3) = sig(i,3)
180 sigr(i,4) = sig(i,4)
181 sigr(i,5) = sig(i,5)
182 failure(i) = 2
183
184
185
186 ENDIF
187 ENDIF
188 ENDIF
189 ENDDO
190
191 DO i=jft,jlt
192 sigr(i,1) = sch1(i,1)
193 sigr(i,2) = sch1(i,2)
194 sigr(i,3) = sch1(i,3)
195 sigr(i,4) = sch1(i,4)
196 sigr(i,5) = sch1(i,5)
197 ENDDO
198
199 DO i=jft,jlt
200 IF(failure(i) == 1 ) THEN
201 WRITE(iout, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
202 + ' FAILURE-',1,' ELEMENT #',ngl(i),
203 + ' LAYER #',ilayer,' TIME=',tt
204 ELSEIF(failure(i) == 2 ) THEN
205 WRITE(iout, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
206 + ' FAILURE-',2,' ELEMENT #',ngl(i),
207 + ' LAYER #',ilayer,' TIME=',tt
208 ENDIF
209 ENDDO
210
211 RETURN