37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48 INTEGER JFT, JLT, NFT, IEPSDOT, ISTRAIN, NPG,II,NEL
49 INTEGER ISMSTR ,MTN ,NPLAT,IPLAT(*),ISROT
51 . vdef(mvsiz,8),gstr(nel,8),gstrpg(nel,8),dt1c(*),epsdot(6,*),
52 . exx(*),eyy(*),exy(*),exz(*),eyz(*),kxx(*),kyy(*),kxy(*),
53 . ux1(*),ux2(*),ux3(*),ux4(*),uy1(*),uy2(*),uy3(*),uy4(*),
54 . x13(*), x24(*), y13(*), y24(*), bm(mvsiz,36),f_def(mvsiz,8),
55 . wxy(*),gstrwpg(*)
56
57
58
59 INTEGER I, J,EP
61 . ux13,ux24,uy13,uy24,uxhi,uyhi,quatre1,
62 . exxt(mvsiz),eyyt(mvsiz),exyt(mvsiz)
63
64
65 quatre1 = one/npg
66 IF (iepsdot /= 0) THEN
67 DO i=jft,jlt
68 j = i + nft
69 epsdot(1,j) = vdef(i,1)
70 epsdot(2,j) = vdef(i,2)
71 epsdot(3,j) = vdef(i,3)
72 epsdot(4,j) = vdef(i,6)
73 epsdot(5,j) = vdef(i,7)
74 epsdot(6,j) = vdef(i,8)
75 ENDDO
76 ENDIF
77
78 DO i=jft,jlt
79 exx(i) = vdef(i,1) * dt1c(i)
80 eyy(i) = vdef(i,2) * dt1c(i)
81 exy(i) = vdef(i,3) * dt1c(i)
82 eyz(i) = vdef(i,5) * dt1c(i)
83 exz(i) = vdef(i,4) * dt1c(i)
84 kxx(i) = vdef(i,6) * dt1c(i)
85 kyy(i) = vdef(i,7) * dt1c(i)
86 kxy(i) = vdef(i,8) * dt1c(i)
87 ENDDO
88
89 IF (istrain /= 0.OR.ismstr == 10) THEN
90 IF(ismstr == 10)THEN
91 DO i=jft,jlt
92 gstr(i,1)=gstr(i,1)+exx(i)*quatre1
93 gstr(i,2)=gstr(i,2)+eyy(i)*quatre1
94 gstr(i,3)=gstr(i,3)+exy(i)*quatre1
95 gstr(i,4)=gstr(i,4)+eyz(i)*quatre1
96 gstr(i,5)=gstr(i,5)+exz(i)*quatre1
97 gstr(i,6)=gstr(i,6)+kxx(i)*quatre1
98 gstr(i,7)=gstr(i,7)+kyy(i)*quatre1
99 gstr(i,8)=gstr(i,8)+kxy(i)*quatre1
100
101 gstrpg(i,1)=gstrpg(i,1)+exx(i)
102 gstrpg(i,2)=gstrpg(i,2)+eyy(i)
103 gstrpg(i,3)=gstrpg(i,3)+exy(i)
104 gstrpg(i,4)=gstrpg(i,4)+eyz(i)
105 gstrpg(i,5)=gstrpg(i,5)+exz(i)
106 gstrpg(i,6)=gstrpg(i,6)+kxx(i)
107 gstrpg(i,7)=gstrpg(i,7)+kyy(i)
108 gstrpg(i,8)=gstrpg(i,8)+kxy(i)
109
110 gstrwpg(i)=gstrwpg(i)+wxy(i)* dt1c(i)
111 ENDDO
112
113 DO i=jft,jlt
114 f_def(i,6) = gstrpg(i,6)
115 f_def(i,7) = gstrpg(i,7)
116 f_def(i,8) = (gstrpg(i,8)+gstrwpg(i))*half
117 f_def(i,5) = (gstrpg(i,8)-gstrwpg(i))*half
118 ENDDO
119 ELSEIF(ismstr /= 11)THEN
120 DO i=jft,jlt
121 gstr(i,1)=gstr(i,1)+exx(i)*quatre1
122 gstr(i,2)=gstr(i,2)+eyy(i)*quatre1
123 gstr(i,3)=gstr(i,3)+exy(i)*quatre1
124 gstr(i,4)=gstr(i,4)+eyz(i)*quatre1
125 gstr(i,5)=gstr(i,5)+exz(i)*quatre1
126 gstr(i,6)=gstr(i,6)+kxx(i)*quatre1
127 gstr(i,7)=gstr(i,7)+kyy(i)*quatre1
128 gstr(i,8)=gstr(i,8)+kxy(i)*quatre1
129
130 gstrpg(i,1)=gstrpg(i,1)+exx(i)
131 gstrpg(i,2)=gstrpg(i,2)+eyy(i)
132 gstrpg(i,3)=gstrpg(i,3)+exy(i)
133 gstrpg(i,4)=gstrpg(i,4)+eyz(i)
134 gstrpg(i,5)=gstrpg(i,5)+exz(i)
135 gstrpg(i,6)=gstrpg(i,6)+kxx(i)
136 gstrpg(i,7)=gstrpg(i,7)+kyy(i)
137 gstrpg(i,8)=gstrpg(i,8)+kxy(i)
138 ENDDO
139 ELSE
140 IF (isrot > 0) THEN
141#include "vectorize.inc"
142 DO ep=jft,nplat
143 i=iplat(ep)
144 ux13=ux1(i)-ux3(i)
145 ux24=ux2(i)-ux4(i)
146 uy13=uy1(i)-uy3(i)
147 uy24=uy2(i)-uy4(i)
148 uxhi=ux1(i)-ux2(i)+ux3(i)-ux4(i)
149 uyhi=uy1(i)-uy2(i)+uy3(i)-uy4(i)
150 exxt(i)=bm(i,1)*ux13+bm(i,2)*ux24+bm(i,3)*uxhi
151 eyyt(i)=bm(i,5)*uy13+bm(i,6)*uy24+bm(i,7)*uyhi
152 exyt(i)=bm(i,1)*uy13+bm(i,2)*uy24+bm(i,3)*uyhi
153 . +bm(i,5)*ux13+bm(i,6)*ux24+bm(i,7)*uxhi
154 END DO
155#include "vectorize.inc"
156 DO ep=nplat+1,jlt
157 i=iplat(ep)
158 exxt(i)=bm(i,1)*ux1(i)+bm(i,4)*uy1(i)
159 . +bm(i,10)*ux2(i)+bm(i,13)*uy2(i)
160 . +bm(i,19)*ux3(i)+bm(i,22)*uy3(i)
161 . +bm(i,28)*ux4(i)+bm(i,31)*uy4(i)
162 eyyt(i)=bm(i,2)*ux1(i)+bm(i,5)*uy1(i)
163 . +bm(i,11)*ux2(i)+bm(i,14)*uy2(i)
164 . +bm(i,20)*ux3(i)+bm(i,23)*uy3(i)
165 . +bm(i,29)*ux4(i)+bm(i,32)*uy4(i)
166 exyt(i)=bm(i,3)*ux1(i)+bm(i,6)*uy1(i)
167 . +bm(i,12)*ux2(i)+bm(i,15)*uy2(i)
168 . +bm(i,21)*ux3(i)+bm(i,24)*uy3(i)
169 . +bm(i,30)*ux4(i)+bm(i,33)*uy4(i)
170 END DO
171 ELSE
172#include "vectorize.inc"
173 DO ep=jft,nplat
174 i=iplat(ep)
175 ux13=ux1(i)-ux3(i)
176 ux24=ux2(i)-ux4(i)
177 uy13=uy1(i)-uy3(i)
178 uy24=uy2(i)-uy4(i)
179 uxhi=ux1(i)-ux2(i)+ux3(i)-ux4(i)
180 uyhi=uy1(i)-uy2(i)+uy3(i)-uy4(i)
181 exxt(i)=bm(i,1)*ux13+bm(i,2)*ux24+bm(i,3)*uxhi
182 eyyt(i)=bm(i,5)*uy13+bm(i,6)*uy24+bm(i,7)*uyhi
183 exyt(i)=y24(i)*uy13-y13(i)*uy24
184 . -x24(i)*ux13+x13(i)*ux24
185 END DO
186#include "vectorize.inc"
187 DO ep=nplat+1,jlt
188 i=iplat(ep)
189 ux13=ux1(i)-ux3(i)
190 ux24=ux2(i)-ux4(i)
191 uy13=uy1(i)-uy3(i)
192 uy24=uy2(i)-uy4(i)
193 exxt(i)=bm(i,1)*ux1(i)+bm(i,4)*uy1(i)
194 . +bm(i,10)*ux2(i)+bm(i,13)*uy2(i)
195 . +bm(i,19)*ux3(i)+bm(i,22)*uy3(i)
196 . +bm(i,28)*ux4(i)+bm
197 eyyt(i)=bm(i,2)*ux1(i)+bm(i,5)*uy1(i)
198 . +bm(i,11)*ux2(i)+bm(i,14)*uy2(i)
199 . +bm(i,20)*ux3(i)+bm(i,23)*uy3(i)
200 . +bm(i,29)*ux4(i)+bm(i,32)*uy4(i)
201 exyt(i)=y24(i)*uy13-y13(i)*uy24
202 . -x24(i)*ux13+x13(i)*ux24
203 END DO
204 END IF
205 DO i=jft,jlt
206 gstr(i,1)=gstr(i,1)+exxt(i)*quatre1
207 gstr(i,2)=gstr(i,2)+eyyt(i)*quatre1
208 gstr(i,3)=gstr(i,3)+exyt(i)*quatre1
209 gstr(i,4)=gstr(i,4)+eyz(i)*quatre1
210 gstr(i,5)=gstr(i,5)+exz(i)*quatre1
211 gstr(i,6)=gstr(i,6)+kxx(i)*quatre1
212 gstr(i,7)=gstr(i,7)+kyy(i)*quatre1
213 gstr(i,8)=gstr(i,8)+kxy(i)*quatre1
214
215 gstrpg(i,1)=exxt(i)
216 gstrpg(i,2)=eyyt(i)
217 gstrpg(i,3)=exyt(i)
218 gstrpg(i,4)=gstrpg(i,4)+eyz(i)
219 gstrpg(i,5)=gstrpg(i,5)+exz(i)
220 gstrpg(i,6)=gstrpg(i,6)+kxx(i)
221 gstrpg(i,7)=gstrpg(i,7)+kyy(i)
222 gstrpg(i,8)=gstrpg(i,8)+kxy(i)
223 ENDDO
224 ENDIF
225 ENDIF
226
227 RETURN