36 . MS ,STIFN ,STIFR ,WEIGHT ,IRECT ,
37 . NSV ,IRTL ,DR ,DL ,FINI ,
38 . FSAV ,FNCONT ,NSN ,I0 ,I2SIZE ,
39 . IADI2 ,FSKYI2 ,STFN ,STFR ,VISC ,
40 . NOINT ,NODNX_SMS,DMINT2 ,IN ,DT2T ,
41 . NELTST ,ITYPTST ,H3D_DATA,FNCONTP ,FTCONTP )
49#include "implicit_f.inc"
58 INTEGER , NOINT, I2SIZE,I0, NELTST,ITYPTST
59 INTEGER IRECT(4,*),NSV(*),IRTL(*),WEIGHT(*),NODNX_SMS(*),
65 . x(3,*),vr(3,*),v(3,*),a(3,*),ar(3,*),ms(*),in(*),fini(6,4,*),
66 . dl(3,4,*),dr(3,4,*),stifn(*),stifr(*),stfn(*),stfr(*),
67 . fsav(*),fncont(3,*),fskyi2(i2size,*),dmint2(4,*),fncontp(3,*),
69 TYPE (H3D_DATABASE) :: H3D_DATA
83 INTEGER NIR,I,J,IR,II,JJ,L,W,KK,K,LLT,NM,
84 . IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),NSVG(MVSIZ)
87 . ECONTT,ECONVT,E1X,E1Y,E1Z,E2X,E2Y,E2Z,E3X,E3Y,E3Z,XSM,YSM,ZSM,DTI,
88 . X1,X2,X3,X4,Y1,Y2,Y3,Y4,Z1,Z2,Z3,Z4,MLX,MLY,MLZ,
89 . drx,dry,drz,vrx,vry,vrz,dlx,dly,dlz,len2,dkm,din,stifms, dxt,
90 . dvx,dvy,dvz,vxx,vyy,vzz,vlx,vly,vlz,wx,wy,wz,dwx,dwy,dwz,ms_harm
92 . stif(mvsiz),vis(4,mvsiz),visr(4,mvsiz),stf(4,mvsiz),str(4,mvsiz),
93 . fx(4),fy(4),fz(4),mx(4),my(4),mz(4),mrx(4),mry(4),mrz(4),
94 . flocx(4),flocy(4),flocz(4),flocxv(4),flocyv(4),floczv(4),
95 . mlocx(4),mlocy(4),mlocz(4),mlocxv(4),mlocyv(4),mloczv(4),
96 . fnorm,fn(3),ft(3),stbrk,va(3),vb(3),vc(3),vd(3),rx(4),ry(4),rz(4),
97 . vx1,vy1,vz1,vx2,vy2,vz2,vx3,vy3,vz3,vx4,vy4,vz4,rs(3),
98 . x0,y0,z0,xs,ys,zs,dwdu,h(4),stifm(mvsiz),stmax,wlx,wly,wlz
107 llt =
min(nsn-kk+1,mvsiz)
122 IF (ix3(k) == ix4(k))
THEN
167 CALL i2rep(x1 ,x2 ,x3 ,x4 ,
172 . e3x ,e3y ,e3z ,nir )
175 x0 = (x1 + x2 + x3 + x4)/nir
176 y0 = (y1 + y2 + y3 + y4)/nir
177 z0 = (z1 + z2 + z3 + z4)/nir
179 x0 = (x1 + x2 + x3)/nir
180 y0 = (y1 + y2 + y3)/nir
181 z0 = (z1 + z2 + z3)/nir
202 rs(1) = xs*e1x + ys*e1y + zs*e1z
203 rs(2) = xs*e2x + ys*e2y + zs*e2z
204 rs(3) = xs*e3x + ys*e3y + zs*e3z
206 rx(1) = e1x*x1 + e1y*y1 + e1z*z1
207 ry(1) = e2x*x1 + e2y*y1 + e2z*z1
208 rz(1) = e3x*x1 + e3y*y1 + e3z*z1
209 rx(2) = e1x*x2 + e1y*y2 + e1z*z2
210 ry(2) = e2x*x2 + e2y*y2 + e2z*z2
211 rz(2) = e3x*x2 + e3y*y2 + e3z*z2
212 rx(3) = e1x*x3 + e1y*y3 + e1z*z3
213 ry(3) = e2x*x3 + e2y*y3 + e2z*z3
214 rz(3) = e3x*x3 + e3y*y3 + e3z*z3
215 rx(4) = e1x*x4 + e1y*y4 + e1z*z4
216 ry(4) = e2x*x4 + e2y*y4 + e2z*z4
217 rz(4) = e3x*x4 + e3y*y4 + e3z*z4
231 IF (iroddl == 0 .OR. in(i) == zero)
THEN
233 va(1) = vx1*e1x + vy1*e1y + vz1*e1z
234 va(2) = vx1*e2x + vy1*e2y + vz1*e2z
235 va(3) = vx1*e3x + vy1*e3y + vz1*e3z
236 vb(1) = vx2*e1x + vy2*e1y + vz2*e1z
237 vb(2) = vx2*e2x + vy2*e2y + vz2*e2z
238 vb(3) = vx2*e3x + vy2*e3y + vz2*e3z
239 vc(1) = vx3*e1x + vy3*e1y + vz3*e1z
240 vc(2) = vx3*e2x + vy3*e2y + vz3*e2z
241 vc(3) = vx3*e3x + vy3*e3y + vz3*e3z
242 vd(1) = vx4*e1x + vy4*e1y + vz4*e1z
243 vd(2) = vx4*e2x + vy4*e2y + vz4*e2z
244 vd(3) = vx4*e3x + vy4*e3y + vz4*e3z
248 . rx ,ry ,rz ,va ,vb ,
259 IF (iroddl == 1 .and. in(i) > zero)
THEN
260 wx = (vr(1,i) + vr(1,nm)) * half
261 wy = (vr(2,i) + vr(2,nm)) * half
262 wz = (vr(3,i) + vr(3,nm)) * half
263 wlx = wx*e1x + wy*e1y + wz*e1z
264 wly = wx*e2x + wy*e2y + wz*e2z
265 wlz = wx*e3x + wy*e3y + wz*e3z
266 dwx = vr(1,i) - vr(1,nm)
267 dwy = vr(2,i) - vr(2,nm)
268 dwz = vr(3,i) - vr(3,nm)
274 stbrk = sqrt(xsm*xsm+ysm*ysm+zsm*zsm)*dwdu
277 dvx = v(1,i) - v(1,nm)
278 dvy = v(2,i) - v(2,nm)
279 dvz = v(3,i) - v(3,nm)
284 len2 = xsm*xsm + ysm*ysm + zsm*zsm
292 vlx = vxx*e1x + vyy*e1y + vzz*e1z + ysm*wlz - zsm*wly
293 vly = vxx*e2x + vyy*e2y + vzz*e2z + zsm*wlx - xsm*wlz
294 vlz = vxx*e3x + vyy*e3y + vzz*e3z + xsm*wly - ysm*wlx
296 vrx = dwx*e1x + dwy*e1y + dwz*e1z
297 vry = dwx*e2x + dwy*e2y + dwz*e2z
298 vrz = dwx*e3x + dwy*e3y + dwz*e3z
308 dl(1,ir,ii) = dl(1,ir,ii) + dlx
309 dl(2,ir,ii) = dl(2,ir,ii) + dly
310 dl(3,ir,ii) = dl(3,ir,ii) + dlz
312 dr(1,ir,ii) = dr(1,ir,ii) + drx
313 dr(2,ir,ii) = dr(2,ir,ii) + dry
314 dr(3,ir,ii) = dr(3,ir,ii) + drz
318 IF (visc /= zero)
THEN
319 ms_harm = (ms(i)*ms(nm))/(ms(i)+ms(nm))
320 dkm = two*stfn(ii)*ms_harm
321 vis(ir,k) = visc*sqrt(dkm)
322 stf(ir,k) = (vis(ir,k) + sqrt(vis(ir,k)**2 + (one+stbrk)*dkm))**2/(two*ms_harm)
324 stf(ir,k) = (one+stbrk)*stfn(ii)
326 IF (iroddl == 1 .and. in(i) > zero)
THEN
327 in_harm = (in(i)*in(nm))/(in(i)+in(nm))
328 stfr(ii) = stfn(ii)*len2
329 dkm = two*stfr(ii)*in_harm
330 visr(ir,k)= visc*sqrt(dkm)
331 str(ir,k) = (visr(ir,k) + sqrt(visr(ir,k)**2 + dkm))**2/(two*in_harm)
340 flocx(ir) = stfn(ii) * dl(1,ir,ii)
341 flocy(ir) = stfn(ii) * dl(2,ir,ii)
342 flocz(ir) = stfn(ii) * dl(3,ir,ii)
344 flocxv(ir) = vis(ir,k) * vlx
345 flocyv(ir) = vis(ir,k) * vly
346 floczv(ir) = vis(ir,k) * vlz
348 dxt = dl(1,ir,ii)**2 + dl(2,ir,ii)**2+ dl(3,ir,ii)**2
349 econtt = econtt + half*stfn(ii)*dxt
351 econvt = econvt + (flocxv(ir)*vlx
353 . + floczv(ir)*vlz)*dt1
355 flocx(ir) = flocx(ir) + flocxv(ir)
356 flocy(ir) = flocy(ir) + flocyv(ir)
357 flocz(ir) = flocz(ir) + floczv(ir)
359 mlocx(ir) = stfr(ii) * dr(1,ir,ii)
360 mlocy(ir) = stfr(ii) * dr(2,ir,ii)
361 mlocz(ir) = stfr(ii) * dr(3,ir,ii)
363 mlocxv(ir) = visr(ir,k) * vrx
364 mlocyv(ir) = visr(ir,k) * vry
365 mloczv(ir) = visr(ir,k) * vrz
367 IF (iroddl == 1 .and. in(i) > zero)
THEN
368 dxt = dr(1,ir,ii)**2 + dr(2,ir,ii)**2 + dr(3,ir,ii)**2
369 econtt = econtt + half*stfr(ii)*dxt
371 econvt = econvt + (mlocxv(ir)*vrx
373 . + mloczv(ir)*vrz)*dt1
376 mlocx(ir) = mlocx(ir) + mlocxv(ir)
377 mlocy(ir) = mlocy(ir) + mlocyv(ir)
378 mlocz(ir) = mlocz(ir) + mloczv(ir)
382 stmax =
max(stf(1,k),stf(2,k),stf(3,k),stf(4,k))
383 IF (iroddl == 1 .and. in(i) > zero)
THEN
389 CALL i2loceq( nir ,rs ,rx ,ry ,rz ,
390 . flocx ,flocy ,flocz ,h ,stifm(k))
396 xsm = x(1,i) - x(1,nm)
397 ysm = x(2,i) - x(2,nm)
398 zsm = x(3,i) - x(3,nm)
403 fx(ir) = e1x*flocx(ir) + e2x*flocy(ir) + e3x*flocz(ir)
404 fy(ir) = e1y*flocx(ir) + e2y*flocy(ir) + e3y*flocz(ir)
405 fz(ir) = e1z*flocx(ir) + e2z*flocy(ir) + e3z*flocz(ir)
407 mx(ir) = e1x*mlocx(ir) + e2x*mlocy(ir) + e3x*mlocz(ir)
408 my(ir) = e1y*mlocx(ir) + e2y*mlocy(ir) + e3y*mlocz(ir)
409 mz(ir) = e1z*mlocx(ir) + e2z*mlocy(ir) + e3z*mlocz(ir)
411 mrx(ir) = half*(ysm*fz(ir) - zsm*fy(ir))
412 mry(ir) = half*(zsm*fx(ir) - xsm*fz(ir))
413 mrz(ir) = half*(xsm*fy(ir) - ysm*fx(ir))
417 a(1,i) = a(1,i) - fx(ir)
418 a(2,i) = a(2,i) - fy(ir)
419 a(3,i) = a(3,i) - fz(ir)
420 stifn(i) = stifn(i) + stf(ir,k)
422 IF (iroddl == 1 .and. in(i) > zero)
THEN
423 ar(1,i) = ar(1,i) - mx(ir) + mrx(ir)
424 ar(2,i) = ar(2,i) - my(ir) + mry(ir)
425 ar(3,i) = ar(3,i) - mz(ir) + mrz(ir)
426 stifr(i) = stifr(i) + str(ir,k)
434 fini(1,ir,ii) = flocx(ir)
435 fini(2,ir,ii) = flocy(ir)
436 fini(3,ir,ii) = flocz(ir)
437 IF (iroddl == 1 .and. in(i) > zero)
THEN
438 fini(4,ir,ii) = mlocx(ir)
439 fini(5,ir,ii) = mlocy(ir)
440 fini(6,ir,ii) = mlocz(ir)
446 fnorm = e3x*flocx(ir) + e3y*flocy(ir) + e3z*flocz(ir)
451 ft(1) = flocx(ir) - fn(1)
452 ft(2) = flocy(ir) - fn(2)
453 ft(3) = flocz(ir) - fn(3)
455 fsav(1) = fsav(1) + fn(1)*dt1*w
456 fsav(2) = fsav(2) + fn(2)*dt1*w
457 fsav(3) = fsav(3) + fn(3)*dt1*w
458 fsav(4) = fsav(4) + ft(1)*dt1*w
459 fsav(5) = fsav(5) + ft(2)*dt1*w
460 fsav(6) = fsav(6) + ft(3)*dt1*w
462 IF (anim_v(13)+h3d_data%N_VECT_CONT2 > 0)
THEN
463 fncont(1,i) = fncont(1,i) - fx(ir) * w
464 fncont(2,i) = fncont(2,i) - fy(ir) * w
465 fncont(3,i) = fncont(3,i) - fz(ir) * w
466 fncont(1,irect(ir,l)) = fncont(1,irect(ir,l)) + fx(ir)*w
467 fncont(2,irect(ir,l)) = fncont(2,irect(ir,l)) + fy(ir)*w
468 fncont(3,irect(ir,l)) = fncont(3,irect(ir,l)) + fz(ir)*w
471 IF(anim_v(27)+h3d_data%N_VECT_PCONT2>0)
THEN
472 fncontp(1,i) = fncontp(1,i) - fn(1) * w
473 fncontp(2,i) = fncontp(2,i) - fn(2) * w
474 fncontp(3,i) = fncontp(3,i) - fn(3) * w
476 fncontp(1,irect(ir,l)) = fncontp(1,irect(ir,l)) + fn(1)*w
477 fncontp(2,irect(ir,l)) = fncontp(2,irect(ir,l)) + fn(2)*w
478 fncontp(3,irect(ir,l)) = fncontp(3,irect(ir,l)) + fn(3)*w
480 ftcontp(1,i) = ftcontp(1,i) - ft(1) * w
481 ftcontp(2,i) = ftcontp(2,i) - ft(2) * w
482 ftcontp(3,i) = ftcontp(3,i) - ft(3) * w
484 ftcontp(1,irect(ir,l)) = ftcontp(1,irect(ir,l)) + ft(1)*w
485 ftcontp(2,irect(ir,l)) = ftcontp(2,irect(ir,l)) + ft(2)*w
486 ftcontp(3,irect(ir,l)) = ftcontp(3,irect(ir,l)) + ft(3)*w
499 fskyi2(1,nm) = fx(jj)
500 fskyi2(2,nm) = fy(jj)
501 fskyi2(3,nm) = fz(jj)
503 fskyi2(5,nm) = stf(jj,k)+stifm(k)*stmax
504 IF (iroddl == 1 .and. in(i) > zero)
THEN
505 fskyi2(6,nm) = mrx(jj) + mx(jj)
506 fskyi2(7,nm) = mry(jj) + my(jj)
507 fskyi2(8,nm) = mrz(jj) + mz(jj)
508 fskyi2(10,nm)= str(jj,k)
513 fskyi2(1,nm) = fx(jj)
514 fskyi2(2,nm) = fy(jj)
515 fskyi2(3,nm) = fz(jj)
517 fskyi2(5,nm) = stf(jj,k)+stifm(k)*stmax
518 IF (iroddl == 1 .and. in(i) > zero)
THEN
519 fskyi2(6,nm) = mrx(jj) + mx(jj)
520 fskyi2(7,nm) = mry(jj) + my(jj)
521 fskyi2(8,nm) = mrz(jj) + mz(jj)
522 fskyi2(10,nm)= str(jj,k)
527 fskyi2(1,nm) = fx(jj)
528 fskyi2(2,nm) = fy(jj)
529 fskyi2(3,nm) = fz(jj)
531 fskyi2(5,nm) = stf(jj,k)+stifm(k)*stmax
532 IF (iroddl == 1 .and. in(i) > zero)
THEN
533 fskyi2(6,nm) = mrx(jj) + mx(jj)
534 fskyi2(7,nm) = mry(jj) + my(jj)
535 fskyi2(8,nm) = mrz(jj) + mz(jj)
536 fskyi2(10,nm)= str(jj,k)
542 fskyi2(1,nm) = fx(jj)
543 fskyi2(2,nm) = fy(jj)
544 fskyi2(3,nm) = fz(jj)
546 fskyi2(5,nm) = stf(jj,k)+stifm(k)*stmax
547 IF (iroddl == 1 .and. in(i) > zero)
THEN
548 fskyi2(6,nm) = mrx(jj) + mx(jj)
549 fskyi2(7,nm) = mry(jj) + my(jj)
550 fskyi2(8,nm) = mrz(jj) + mz(jj)
551 fskyi2(10,nm)= str(jj,k)
559 IF (iroddl == 1 .and. in(i) > zero)
THEN
581 IF (weight(-i) == 1)
THEN
590 IF (iroddl == 1 .and. in(i) > zero)
THEN
604 IF (iroddl == 1 .and. in(i) > zero)
THEN
618 IF (iroddl == 1 .and. in(i) > zero)
THEN
632 IF (iroddl == 1 .and. in(i) > zero)
THEN
644 IF (idtmins==2 .or. idtmins_int/=0)
THEN
646 CALL i2sms26(llt ,ix1 ,ix2 ,ix3 ,ix4 ,
647 . nsvg ,stf ,noint,dmint2(1,kk),
648 . nodnx_sms,vis,dti )
659 econt = econt + econtt
660 econtd = econtd + econvt
661 fsav(26) = fsav(26) + econtt
662 fsav(28) = fsav(28) + econvt
663#include "lockoff.inc"