56 use element_mod , only : nixs
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "mvsiz_p.inc"
65
66
67
68 INTEGER, INTENT(IN) :: ISMSTR
69 INTEGER NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*),
70 . NC8(*),IXS(NIXS,*),NEL
71 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
73 . sig(nel,6),sigd(nel,6),x(3,*),dr(3,*),
74 . px1(*), px2(*), px3(*), px4(*),
75 . py1(*), py2(*), py3(*), py4(*),
76 . pz1(*), pz2(*), pz3(*), pz4(*),
77 . px5(*), px6(*), px7(*), px8(*),
78 . py5(*), py6(*), py7(*), py8(*),
79 . pz5(*), pz6(*), pz7(*), pz8(*),
80 . f11(*),f21(*),f31(*),f12(*),f22(*),f32(*),
81 . f13(*),f23(*),f33(*),f14(*),f24(*),f34(*),
82 . f15(*),f25(*),f35(*),f16(*),f26(*),f36(*),
83 . f17(*),f27(*),f37(*),f18(*),f28(*),f38(*),
84 . vol(*),qvis(*),rho(*),cxx(*),
85 . mx1(*),my1(*),mz1(*),mx2(*),my2(*),mz2(*),
86 . mx3(*),my3(*),mz3(*),mx4(*),my4(*),mz4(*),
87 . mx5(*),my5(*),mz5(*),mx6(*),my6(*),mz6(*),
88 . mx7(*),my7(*),mz7(*),mx8(*),my8(*),mz8(*)
89
90
91
92 INTEGER
94 . s1, s2, s3,
95 . s4, s5, s6,
96 . sxy, syz, szx,
97 . syx, szy, sxz,
98 . mx(mvsiz), my(mvsiz), mz(mvsiz),
99 . fint,aaa,dxr,dyr,dzr
100
101 DO i=1,nel
102 s1=(sig(i,1)+svis(i,1)-qvis(i))*vol(i)
103 s2=(sig(i,2)+svis(i,2)-qvis(i))*vol(i)
104 s3=(sig(i,3)+svis(i,3)-qvis(i))*vol(i)
105 s4 = (sig(i,4)+svis(i,4))*vol(i)
106 s5 = (sig(i,5)+svis(i,5))*vol(i)
107 s6 = (sig(i,6)+svis(i,6))*vol(i)
108 mz(i) = (sigd(i,1))*vol(i)
109 mx(i) = (sigd(i,2))*vol(i)
110 my(i) = (sigd(i,3))*vol(i)
111 sxy = s4 + mz(i)
112 syz = s5 + mx(i)
113 szx = s6 + my(i)
114 syx = s4 - mz(i)
115 szy = s5 - mx(i)
116 sxz = s6 - my(i)
117 mz(i) = -mz(i)*0.25
118 mx(i) = -mx(i)*0.25
119 my(i) = -my(i)*0.25
120
121 fint=s1*px1(i)+sxy*py1(i)+sxz*pz1(i)
122 f11(i)=f11(i)-fint
123 f17(i)=f17(i)+fint
124 fint=s2*py1(i)+syx*px1(i)+syz*pz1(i)
125 f21(i)=f21(i)-fint
126 f27(i)=f27(i)+fint
127 fint=s3*pz1(i)+szx*px1(i)+szy*py1(i)
128 f31(i)=f31(i)-fint
129 f37(i)=f37(i)+fint
130
131 fint=s1*px2(i)+sxy*py2(i)+sxz*pz2(i)
132 f12(i)=f12(i)-fint
133 f18(i)=f18(i)+fint
134 fint=s2*py2(i)+syx*px2(i)+syz*pz2(i)
135 f22(i)=f22(i)-fint
136 f28(i)=f28(i)+fint
137 fint=s3*pz2(i)+szx*px2(i)+szy*py2(i)
138 f32(i)=f32(i)-fint
139 f38(i)=f38(i)+fint
140
141 fint=s1*px3(i)+sxy*py3(i)+sxz*pz3(i)
142 f13(i)=f13(i)-fint
143 f15(i)=f15(i)+fint
144 fint=s2*py3(i)+syx*px3(i)+syz*pz3(i)
145 f23(i)=f23(i)-fint
146 f25(i)=f25(i)+fint
147 fint=s3*pz3(i)+szx*px3(i)+szy*py3(i)
148 f33(i)=f33(i)-fint
149 f35(i)=f35(i)+fint
150
151 fint=s1*px4(i)+sxy*py4(i)+sxz*pz4(i)
152 f14(i)=f14(i)-fint
153 f16(i)=f16(i)+fint
154 fint=s2*py4(i)+syx*px4(i)+syz*pz4(i)
155 f24(i)=f24(i)-fint
156 f26(i)=f26(i)+fint
157 fint=s3*pz4(i)+szx*px4(i)+szy*py4(i)
158 f34(i)=f34(i)-fint
159 f36(i)=f36(i)+fint
160 ENDDO
161
162 goto 111
163
164 IF(ismstr==1.OR.ismstr==2.OR.ismstr==3)THEN
165 DO i=1,nel
166 mx(i) = x(2,nc1(i))*f31(i) - x(3,nc1(i))*f21(i)
167 . + x(2,nc2(i))*f32(i) - x(3,nc2(i))*f22(i)
168 . + x(2,nc3(i))*f33(i) - x(3,nc3(i))*f23(i)
169 . + x(2,nc4(i))*f34(i) - x(3,nc4(i))*f24(i)
170 . + x(2,nc5(i))*f35(i) - x(3,nc5(i))*f25(i)
171 . + x(2,nc6(i))*f36(i) - x(3,nc6(i))*f26(i)
172 . + x(2,nc7(i))*f37(i) - x(3,nc7(i))*f27(i)
173 . + x(2,nc8(i))*f38(i) - x(3,nc8(i))*f28(i)
174
175 my(i) = x(3,nc1(i))*f11(i) - x(1,nc1(i))*f31(i)
176 . + x(3,nc2(i))*f12(i) - x(1,nc2(i))*f32(i)
177 . + x(3,nc3(i))*f13(i) - x(1,nc3(i))*f33(i)
178 . + x(3,nc4(i))*f14(i) - x(1,nc4(i))*f34(i)
179 . + x(3,nc5(i))*f15(i) - x(1,nc5(i))*f35(i)
180 . + x(3,nc6(i))*f16(i) - x(1,nc6(i))*f36(i)
181 . + x(3,nc7(i))*f17(i) - x(1,nc7(i))*f37(i)
182 . + x(3,nc8(i))*f18(i) - x(1,nc8(i))*f38(i)
183
184 mz(i) = x(1,nc1(i))*f21(i) - x(2,nc1(i))*f11(i)
185 . + x(1,nc2(i))*f22(i) - x(2,nc2(i))*f12(i)
186 . + x(1,nc3(i))*f23(i) - x(2,nc3(i))*f13(i)
187 . + x(1,nc4(i))*f24(i) - x(2,nc4(i))*f14(i)
188 . + x(1,nc5(i))*f25(i) - x(2,nc5(i))*f15(i)
189 . + x(1,nc6(i))*f26(i) - x(2,nc6(i))*f16(i)
190 . + x(1,nc7(i))*f27(i) - x(2,nc7(i))*f17(i)
191 . + x(1,nc8(i))*f28(i) - x(2,nc8(i))*f18(i)
192
193 mx(i) = -mx(i)*0.125
194 my(i) = -my(i)*0.125
195 mz(i) = -mz(i)*0.125
196 ENDDO
197 ENDIF
198 111 continue
199
200 DO i=1,nel
201
202 aaa = 0.0125 * rho(i) * cxx(i)**2 * vol(i)
203
204 dxr = 0.125 *
205 . (dr(1,nc1(i))+dr(1,nc2(i))+dr(1,nc3(i))+dr(1,nc4(i))
206 . +dr(1,nc5(i))+dr(1,nc6(i))+dr(1,nc7(i))+dr(1,nc8(i)))
207 dyr = 0.125 *
208 . (dr(2,nc1(i))+dr(2,nc2(i))+dr(2,nc3(i))+dr(2,nc4(i))
209 . +dr(2,nc5(i))+dr(2,nc6(i))+dr(2,nc7(i))+dr(2,nc8(i)))
210 dzr = 0.125 *
211 . (dr(3,nc1(i))+dr(3,nc2(i))+dr(3,nc3(i))+dr(3,nc4(i))
212 . +dr(3,nc5(i))+dr(3,nc6(i))+dr(3,nc7(i))+dr(3,nc8(i)))
213
214 mx1(i) = mx(i) - aaa * (dr(1,nc1(i))-dxr)
215 my1(i) = my(i) - aaa * (dr(2,nc1(i))-dyr)
216 mz1(i) = mz(i) - aaa * (dr(3,nc1(i))-dzr)
217
218 mx2(i) = mx(i) - aaa * (dr(1,nc2(i))-dxr)
219 my2(i) = my(i) - aaa * (dr(2,nc2(i))-dyr)
220 mz2(i) = mz(i) - aaa * (dr(3,nc2(i))-dzr)
221
222 mx3(i) = mx(i) - aaa * (dr(1,nc3(i))-dxr)
223 my3(i) = my(i) - aaa * (dr(2,nc3(i))-dyr)
224 mz3(i) = mz(i) - aaa * (dr(3,nc3(i))-dzr)
225
226 mx4(i) = mx(i) - aaa * (dr(1,nc4(i))-dxr)
227 my4(i) = my(i) - aaa * (dr(2,nc4(i))-dyr)
228 mz4(i) = mz(i) - aaa * (dr(3,nc4(i))-dzr)
229
230 mx5(i) = mx(i) - aaa * (dr(1,nc5(i))-dxr)
231 my5(i) = my(i) - aaa * (dr(2,nc5(i))-dyr)
232 mz5(i) = mz(i) - aaa * (dr(3,nc5(i))-dzr)
233
234 mx6(i) = mx(i) - aaa * (dr(1,nc6(i))-dxr)
235 my6(i) = my(i) - aaa * (dr(2,nc6(i))-dyr)
236 mz6(i) = mz(i) - aaa * (dr(3,nc6(i))-dzr)
237
238 mx7(i) = mx(i) - aaa * (dr(1,nc7(i))-dxr)
239 my7(i) = my(i) - aaa * (dr(2,nc7(i))-dyr)
240 mz7(i) = mz(i) - aaa * (dr(3,nc7(i))-dzr)
241
242 mx8(i) = mx(i) - aaa * (dr(1,nc8(i))-dxr)
243 my8(i) = my(i) - aaa * (dr(2,nc8(i))-dyr)
244 mz8(i) = mz(i) - aaa * (dr(3,nc8(i))-dzr)
245 ENDDO
246
247 RETURN