34
35
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "units_c.inc"
44#include "comlock.inc"
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 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT
75 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
77 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: dpla,
78 . signxx,signyy,signxy,signyz,signzx
79 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
80
81
82
83 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
84 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
85 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel
86 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
87
88
89
90 INTEGER :: I,J,NINDX
91 INTEGER ,DIMENSION(NEL) :: INDX
92 my_real :: al,be,pc,dc,p,w1,w2,ss,s1,s2,s3,ss0,ss1,ss2,sig1,sig2,
93 . a,a1,a2
94
95 al = uparam(1)
96 be = uparam(2)
97 pc = uparam(3)
98 dc = uparam(4)
99 nindx = 0
100
101 DO i=1,nel
102 IF (foff(i) == 1) THEN
103 ss1 = half*(signxx(i) + signyy(i))
104 ss2 = half*(signxx(i) - signyy(i))
105 ss0 = sqrt(ss2**2 + signxy(i)**2)
106 sig1 = ss1 + ss0
107 sig2 = ss1 - ss0
108 ss = sig1
109 IF (sig2 > sig1) THEN
110 sig1 = sig2
111 sig2 = ss
112 ENDIF
113 p = third*(signxx(i) + signyy(i))
114 ss1 = ss1 - p
115 s1 = ss1 + ss0
116 s2 = ss1 - ss0
117 s3 = -p
118 IF (sig2 > zero) THEN
119 a1 = s2 / s1
120 a2 = s2 / s3
121 ELSEIF (sig1 < zero) THEN
122 a1 = s1 / s3
123 a2 = s1 / s2
124 ELSEIF (sig1 /= zero) THEN
125 a1 = s3 / s1
126 a2 = s3 / s2
127 ELSE
128 a1 = one
129 a2 = one
130 ENDIF
132 w1 =
max(em20,(two - a))**be
133 w2 = one - p/pc
134 w2 = (
max(em20,one/w2))**al
135 uvar(i,1) = uvar(i,1) + w1*w2*dpla(i)
136 IF (uvar(i,1) >= dc) THEN
137 nindx = nindx + 1
138 indx(nindx) = i
139 foff(i) = 0
140 tdel(i) = time
141 ENDIF
142 ENDIF
143 ENDDO
144
145
146 DO i=1,nel
147 dfmax(i) =
min(one,
max(dfmax(i),uvar(i,1)/dc))
148 ENDDO
149
150 IF (nindx > 0) THEN
151 DO j=1,nindx
152 i = indx(j)
153#include "lockon.inc"
154 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
155 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
156#include "lockoff.inc"
157 END DO
158 END IF
159
160 2000 FORMAT(1x,'FAILURE (WILKINS) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
161 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3)
162 2100 FORMAT(1x,'FAILURE (WILKINS) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
163 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3,1x,'AT TIME :',1pe12.4)
164
165 RETURN