34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "mvsiz_p.inc"
42
43
44
45#include "vect01_c.inc"
46#include "com04_c.inc"
47#include "com08_c.inc"
48#include "param_c.inc"
49
50
51
52 INTEGER IMS(NUMNOD,*)
54 . v(3,*), fill(numnod,*), dfill(numnod,*),
55 . x(3,*),
56 . dalph1(*), dalph2(*)
57
58
59
60 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ), I, N1, N2, N3, N4,
61 . NP
63
64 . fi1(mvsiz), fi2(mvsiz), fi3(mvsiz), fi4(mvsiz),
65 . fa(mvsiz), vdy1(mvsiz), vdy2(mvsiz), vdy3(mvsiz), vdy4(mvsiz),
66 . vdz1(mvsiz), vdz2(mvsiz), vdz3(mvsiz), vdz4(mvsiz), vdy(mvsiz), vdz(mvsiz),
67 . abf, dn, p1, p2, p3, p4, pt, psy, psz, pty,
68 . ptz, ps, pst, pts, ds0, dt0, ds, dt,
69 . df1(mvsiz), df2(mvsiz), df3(mvsiz), df4(mvsiz)
70
71 DO i=lft,llt
72 fi1(i)=fill(nc1(i),1)
73 fi2(i)=fill(nc2(i),1)
74 fi3(i)=fill(nc3(i),1)
75 fi4(i)=fill(nc4(i),1)
76 abf=abs(fi1(i))+abs(fi2(i))+abs(fi3(i))+abs(fi4(i))
77 n1=nint(sign(one,fi1(i)))
78 n2=nint(sign(one,fi2(i)))
79 n3=nint(sign(one,fi3(i)))
80 n4=nint(sign(one,fi4(i)))
82 dn=dt1*np
83 IF(dn/=zero)THEN
84 fa(i)=-dalph1(i)*abf/dn
85 ELSE
86 fa(i)=zero
87 ENDIF
88 ENDDO
89
90
91
92 DO i=lft,llt
93 vdy1(i)=v(2,nc1(i))
94 vdz1(i)=v(3,nc1(i))
95
96 vdy2(i)=v(2,nc2(i))
97 vdz2(i)=v(3,nc2(i))
98
99 vdy3(i)=v(2,nc3(i))
100 vdz3(i)=v(3,nc3(i))
101
102 vdy4(i)=v(2,nc4(i))
103 vdz4(i)=v(3,nc4(i))
104 ENDDO
105
106
107
108 DO i=lft,llt
109 p1=fi1(i)+one
110 p2=fi2(i)+one
111 p3=fi3(i)+one
112 p4=fi4(i)+one
113 pt=(p1+p2+p3+p4)
115 vdy(i)=(vdy1(i)*p1+vdy2(i)*p2+vdy3(i)*p3+vdy4
116 vdz(i)=(vdz1(i)*p1+vdz2(i)*p2+vdz3(i)*p3+vdz4(i)*p4)/pt
117 ENDDO
118
119 DO i=lft,llt
120 psy=-x(2,nc1(i))+x(2,nc2(i))+x(2,nc3(i))-x(2,nc4(i))
121 psz=-x(3,nc1(i))+x(3,nc2(i))+x(3,nc3(i))-x(3,nc4(i))
122 pty=-x(2,nc1(i))-x(2,nc2(i))+x(2,nc3(i))+x(2,nc4(i))
123 ptz=-x(3,nc1(i))-x(3,nc2(i))+x(3,nc3(i))+x(3,nc4(i))
124 ps=sqrt(psy**2+psz**2)
125 pt=sqrt(pty**2+ptz**2)
126 pst=psy*ptz-psz*pty
127 pts=-pst
128 ds0=-four*(pty*vdz(i)-ptz*vdy(i))/pts
129 dt0=-four*(psy*vdz(i)-psz*vdy(i))/pst
130 IF(fi1(i)>=zero)THEN
131 ds=-four*(pty*vdz1(i)-ptz*vdy1(i))/pts
132 dt=-four*(psy*vdz1(i)-psz*vdy1(i))/pst
133 ELSE
134 ds=ds0
135 dt=dt0
136 ENDIF
139
140 df1(i)=fourth*((-two*ds-two*dt+ds*dt*dt1)*fi1(i)
141 . +( two*ds -ds*dt*dt1)*fi2(i)
142 . +( ds*dt*dt1)*fi3(i)
143 . +( two*dt-ds*dt*dt1)*fi4(i) )
144 IF(fi2(i)>=zero)THEN
145 ds=-four*(pty*vdz2(i)-ptz*vdy2(i))/pts
146 dt=-four*(psy*vdz2(i)-psz*vdy2(i))/pst
147 ELSE
148 ds=ds0
149 dt=dt0
150 ENDIF
153 df2(i)=fourth*((-two*ds +ds*dt*dt1)*fi1(i)
154 . +( two*ds-two*dt-ds*dt*dt1)*fi2(i)
155 . +( +two*dt+ds*dt*dt1)*fi3(i)
156 . +( -ds*dt*dt1)*fi4(i) )
157 IF(fi3(i)>=zero)THEN
158 ds=-four*(pty*vdz3(i)-ptz*vdy3(i))/pts
159 dt=-four*(psy*vdz3(i)-psz*vdy3(i))/pst
160 ELSE
161 ds=ds0
162 dt=dt0
163 ENDIF
166 df3(i)=fourth*(( +ds*dt*dt1)*fi1(i)
167 . +( -two*dt-ds*dt*dt1)*fi2(i)
168 . +(+two*ds+two*dt+ds*dt*dt1)*fi3(i)
169 . +(-two*ds -ds*dt*dt1)*fi4(i) )
170 IF(fi4(i)>=zero)THEN
171 ds=-four*(pty*vdz4(i)-ptz*vdy4(i))/pts
172 dt=-four*(psy*vdz4(i)-psz*vdy4(i))/pst
173 ELSE
174 ds=ds0
175 dt=dt0
176 ENDIF
179 df4(i)=fourth*(( -two*dt+ds*dt*dt1)*fi1(i)
180 . +( -ds*dt*dt1)*fi2(i)
181 . +(+two*ds +ds*dt*dt1)*fi3(i)
182 . +(-two*ds+two*dt-ds*dt*dt1)*fi4(i) )
183 ENDDO
184
186
187 DO i=lft,llt
188 dfill(nc1(i),1)=dfill(nc1(i),1)+df1(i)-fa(i)
189 dfill(nc2(i),1)=dfill(nc2(i),1)+df2(i)-fa(i)
190 dfill(nc3(i),1)=dfill(nc3(i),1)+df3(i)-fa(i)
191 dfill(nc4(i),1)=dfill(nc4(i),1)+df4(i)-fa(i)
192 ims(nc1(i),1)=ims(nc1(i),1)+1
193 ims(nc2(i),1)=ims(nc2(i),1)+1
194 ims(nc3(i),1)=ims(nc3(i),1)+1
195 ims(nc4(i),1)=ims(nc4(i),1)+1
196 ENDDO
197
199
200
201 IF(jmult>1)THEN
202
203 DO i=lft,llt
204 fi1(i)=fill(nc1(i),2)
205 fi2(i)=fill(nc2(i),2)
206 fi3(i)=fill(nc3(i),2)
207 fi4(i)=fill(nc4(i),2)
208 abf=abs(fi1(i))+abs(fi2(i))+abs(fi3(i))+abs(fi4(i))
209 n1=nint(sign(one,fi1(i)))
210 n2=nint(sign(one,fi2(i)))
211 n3=nint(sign(one,fi3(i)))
212 n4=nint(sign(one,fi4(i)))
214 dn=dt1*np
215 IF(dn/=zero)THEN
216 fa(i)=-dalph2(i)*abf/dn
217 ELSE
218 fa(i)=zero
219 ENDIF
220 ENDDO
221
222
223
224 DO i=lft,llt
225 p1=fi1(i)+one
226 p2=fi2(i)+one
227 p3=fi3(i)+one
228 p4=fi4(i)+one
229 pt=(p1+p2+p3+p4)
231 vdy(i)=(vdy1(i)*p1+vdy2(i)*p2+vdy3(i)*p3+vdy4(i)*p4)/pt
232 vdz(i)=(vdz1(i)*p1+vdz2(i)*p2+vdz3(i)*p3+vdz4(i)*p4)/pt
233 ENDDO
234
235 DO i=lft,llt
236 psy=-x(2,nc1(i))+x(2,nc2(i))+x(2,nc3(i))-x(2,nc4(i))
237 psz=-x(3,nc1(i))+x(3,nc2(i))+x(3,nc3(i))-x(3,nc4(i))
238 pty=-x(2,nc1(i))-x(2,nc2(i))+x(2,nc3(i))+x(2,nc4(i))
239 ptz=-x(3,nc1(i))-x(3,nc2(i))+x(3,nc3(i))+x(3,nc4(i))
240 ps=sqrt(psy**2+psz**2)
241 pt=sqrt(pty**2+ptz**2)
242 pst=psy*ptz-psz*pty
243 pts=-pst
244 ds0=-four*(pty*vdz(i)-ptz*vdy(i))/pts
245 dt0=-four*(psy*vdz(i)-psz*vdy(i))/pst
246 IF(fi1(i)>=zero)THEN
247 ds=-four*(pty*vdz1(i)-ptz*vdy1(i))/pts
248 dt=-four*(psy*vdz1(i)-psz*vdy1(i))/pst
249 ELSE
250 ds=ds0
251 dt=dt0
252 ENDIF
255
256 df1(i)=fourth*((-two*ds-two*dt+ds*dt*dt1)*fi1(i)
257 . + ( two*ds -ds*dt*dt1)*fi2(i)
258 . + ( ds*dt*dt1)*fi3(i)
259 . + ( two*dt-ds*dt*dt1)*fi4(i) )
260 IF(fi2(i)>=zero)THEN
261 ds=-four*(pty*vdz2(i)-ptz*vdy2(i))/pts
262 dt=-four*(psy*vdz2(i)-psz*vdy2(i))/pst
263 ELSE
264 ds=ds0
265 dt=dt0
266 ENDIF
269 df2(i)=four*((-two*ds +ds*dt*dt1)*fi1(i)
270 . +( two*ds-two*dt-ds*dt*dt1)*fi2(i)
271 . +( +two*dt+ds*dt*dt1)*fi3(i)
272 . +( -ds*dt*dt1)*fi4(i) )
273 IF(fi3(i)>=zero)THEN
274 ds=-four*(pty*vdz3(i)-ptz*vdy3(i))/pts
275 dt=-four*(psy*vdz3(i)-psz*vdy3(i))/pst
276 ELSE
277 ds=ds0
278 dt=dt0
279 ENDIF
282 df3(i)=fourth*(( +ds*dt*dt1)*fi1(i)
283 . +( -two*dt-ds*dt*dt1)*fi2(i)
284 . +(+two*ds+two*dt+ds*dt*dt1)*fi3(i)
285 . +(-two*ds -ds*dt*dt1)*fi4(i) )
286 IF(fi4(i)>=zero)THEN
287 ds=-four*(pty*vdz4(i)-ptz*vdy4(i))/pts
288 dt=-four*(psy*vdz4(i)-psz*vdy4(i))/pst
289 ELSE
290 ds=ds0
291 dt=dt0
292 ENDIF
295 df4(i)=fourth*(( -two*dt+ds*dt*dt1)*fi1(i)
296 . +( -ds*dt*dt1)*fi2(i)
297 . +(+two*ds +ds*dt*dt1)*fi3(i)
298 . +(-two*ds+two*dt-ds*dt*dt1)*fi4(i) )
299 ENDDO
300
301
303
304 DO i=lft,llt
305 dfill(nc1(i),2)=dfill(nc1(i),2)+df1(i)-fa(i)
306 dfill(nc2(i),2)=dfill(nc2(i),2)+df2(i)-fa(i)
307 dfill(nc3(i),2)=dfill(nc3(i),2)+df3(i)-fa(i)
308 dfill(nc4(i),2)=dfill(nc4(i),2)+df4(i)-fa(i)
309 ims(nc1(i),2)=ims(nc1(i),2)+1
310 ims(nc2(i),2)=ims(nc2(i),2)+1
311 ims(nc3(i),2)=ims(nc3(i),2)+1
312 ims(nc4(i),2)=ims(nc4(i),2)+1
313 ENDDO
314
316
317 ENDIF
318
319
320 RETURN