35 2 VEL ,MS ,X ,SKEW ,SENSOR_TAB,
36 3 WEIGHT ,D ,IFRAME ,XFRAME ,NSENSOR ,
37 4 IT ,DIAG_SMS,NODNX_SMS ,CPTREAC ,
38 5 NODREAC,FTHREAC ,AR ,VR ,DR ,
47#include "implicit_f.inc"
64 INTEGER ,
INTENT(IN) :: NSENSOR
65 INTEGER NPC(*),CPTREAC,(*)
66 INTEGER IBFV(NIFV,*),WEIGHT(*),IFRAME(LISKN,*),IT,NODNX_SMS(*)
68 . A(3,*), V(3,*), TF(*), VEL(LFXVELR,*), MS(*), X(3,*), D(3,*),
69 . skew(lskew,*),xframe(nxframe,*),
70 . diag_sms(*),fthreac(6,*),
71 . ar(3,*), vr(3,*), dr(3,*), in(*), rby(nrby,*)
72 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
73 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
77 INTEGER N, I, ISK, J, L, K1, K2, K3, ISENS,K,
78 . ii, ic, nn, ideb, nr, nsk, nfk, ifm, n0,
79 . ilenc(mvsiz), iposc(mvsiz), iadc(mvsiz),
80 . lc(mvsiz), index(mvsiz), icoor
83 . ax, axi, aold, vv, a0, aa, fac,facx,startt, stopt, ts,
84 . dydx,dw,dw2,dd,rx,ry,rz,vf,vfx,vfy,vfz,afx,afy,afz,
85 . yc(mvsiz), tsc(mvsiz), dydxc(mvsiz),aold0(3,mvsiz),
86 . r, cth, sth, skdir(3), fmdir(3), hx, hy, hz, coef,
87 . er(3),et(3),
alpha, nor1, nor2, nor3, yimp
101 IF (ibfv(8,nn)==1)
GOTO
104 DO ii = 1,
min(nfxvel
113 IF(nodnx_sms(i)==0) cycle
116 ts = tt-sensor_tab(isens)%TSTART
123 IF(ibfv(7,n)==1)
THEN
124 tsc(ic) = (ts+half*dt2)*facx
126 tsc(ic) = (ts+dt2)*facx
131 DO ii = 1,
min(nfxvel-ideb,nvsiz)
140 IF(nodnx_sms(i)==0) cycle
143 IF(ibfv(7,n)==1)
THEN
144 tsc(ic) = (tt + half*dt2)*facx
146 tsc(ic) = (tt+dt2)*facx
161 ideb = ideb +
min(nfxvel-ideb,nvsiz)
169 iadc(ii) = npc(l) / 2 + 1
170 ilenc(ii) = npc(l+1) / 2 - iadc(ii) - iposc(ii)
177 iposc(ii) = ibfv(5,n)
178 iadc(ii) = npc(l) / 2 + 1
179 ilenc(ii) = npc(l+1) / 2 - iadc(ii) - iposc(ii
182 CALL vinter(tf,iadc,iposc,ilenc,ic,tsc,dydxc,yc)
187 ibfv(5,n) = iposc(ii)
195 yc(ii) = yc(ii) * fac
204 IF (ifm<=1) j=j-10*isk
207 IF(isk<=1.AND.ifm<=1.AND.icoor==0)
THEN
208 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-d(j,i))/dt2
209 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-v(j,i))/dt12
211 a(j,i)=diag_sms(i)*yc(ii)
212 dw = fourth*axi*weight(i) *
213 . (yc(ii)*dt12 + two*v(j,i))*(ms(i)*yc(ii)-aold)
214 ELSEIF (isk>1.AND.icoor==0)
THEN
218 dd = skew(k1,isk)*d(1,i) +
219 . skew(k2,isk)*d(2,i) +
220 . skew(k3,isk)*d(3,i)
221 vv = skew(k1,isk)*v(1,i) +
222 . skew(k2,isk)*v(2,i) +
223 . skew(k3,isk)*v(3,i)
224 a0 = skew(k1,isk)*a(1,i) +
225 . skew(k2,isk)*a(2,i) +
226 . skew(k3,isk)*a(3,i)
227 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
229 aa = diag_sms(i)*yc(ii) - a0
230 a(1,i)=a(1,i)+skew(k1,isk)*aa
231 a(2,i)=a(2,i)+skew(k2,isk)*aa
232 a(3,i)=a(3,i)+skew(k3,isk)*aa
234 dw = fourth*axi*weight(i) *
235 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
236 ELSEIF ((isk<=1.AND.ifm<=1.AND.icoor==1) .OR.
237 & (isk>1 .AND. icoor==1))
THEN
238 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
239 & (skew(11,isk)-x(2,i))*skew(8,isk) +
240 & (skew(12,isk)-x(3,i))*skew(9,isk)
241 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
242 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
243 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
244 r = sqrt(hx*hx+hy*hy+hz*hz)
249 cth = (skew(1,isk)*hx+skew(2,isk)*hy+skew(3,isk)*hz)/r
250 sth = (skew(4,isk)*hx+skew(5,isk)*hy+skew(6,isk)*hz)/r
253 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
254 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
255 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
257 er(1) =cth*skew(1,isk)+ sth*skew(4,isk)
258 er(2) =cth*skew(2,isk)+ sth*skew(5,isk)
259 er(3) =cth*skew(3,isk)+ sth*skew(6,isk)
260 nor1=sqrt(er(1)*er(1)+er(2)*er(2)+er(3)*er(3))
263 et(2) =cth*skew(5,isk)- sth*skew(2,isk)
264 et(3) =cth*skew(6,isk)- sth*skew(3,isk)
265 nor2=sqrt(et(1)*et(1)+et(2)*et(2)+et(3)*et(3))
268 alpha=-yc(ii)*dt2/two
276 IF(ibfv(7,n)==2) yimp= skdir(1)*d
280 nor3 = sqrt(skdir(1)*skdir(1)
282 & +skdir(3)*skdir(3))
283 skdir=skdir/
max(nor3,em20)
284 vv = v(1,i)*skdir(1) + v(2,i)*skdir(2) + v(3,i)*skdir(3)
285 a0 = a(1,i)*skdir(1) + a(2,i)*skdir(2) + a(3,i)*skdir(3)
286 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
287 IF(ibfv(7,n)>=1)
THEN
294 yc(ii)=(yc(ii)-vv)/dt12
297 aa = diag_sms(i)*yc(ii) - a0
299 a(1,i)=a(1,i)+skdir(1)*aa
300 a(2,i)=a(2,i)+skdir(2)*aa
301 a(3,i)=a(3,i)+skdir(3)*aa
302 dw = fourth*axi*weight(i) *
303 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
304 ELSEIF (ifm>1.AND.icoor==0)
THEN
309 rx = x(1,i) - xframe(10,ifm)
310 ry = x(2,i) - xframe(11,ifm)
311 rz = x(3,i) - xframe(12,ifm)
312 vfx = xframe(31,ifm)+xframe(14,ifm)*rz-xframe(15,ifm)*ry
313 vfy = xframe(32,ifm)+xframe(15,ifm)*rx-xframe(13,ifm)*rz
314 vfz = xframe(33,ifm)+xframe(13,ifm)*ry-xframe(14,ifm)*rx
315 vv = xframe(k1,ifm)*v(1,i)
316 . + xframe(k2,ifm)*v(2,i)
317 . + xframe(k3,ifm)*v(3,i)
318 vf = xframe(k1,ifm)*vfx
319 . + xframe(k2,ifm)*vfy
320 . + xframe(k3,ifm)*vfz
321 a0 = xframe(k1,ifm)*a(1,i)
322 . + xframe(k2,ifm)*a(2,i)
323 . + xframe(k3,ifm)*a(3,i)
324 yc(ii)=(yc(ii)-vv+vf)/dt12
325 aa = diag_sms(i)*yc(ii) - a0
326 a(1,i)=a(1,i)+xframe(k1,ifm)*aa
327 a(2,i)=a(2,i)+xframe(k2,ifm)*aa
328 a(3,i)=a(3,i)+xframe(k3,ifm)*aa
330 dw = fourth*axi*weight(i) *
331 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
332 ELSEIF (ifm>1.AND.icoor==1)
THEN
333 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
334 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
335 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm)
336 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
337 hy = coef*xframe(8,ifm)+x(2,i)-xframe(11,ifm)
338 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
339 r = sqrt(hx*hx+hy*hy+hz*hz)
344 cth = (xframe(1,ifm)*hx +
346 & xframe(3,ifm)*hz)/r
347 sth = (xframe(4,ifm)*hx +
349 & xframe(6,ifm)*hz)/r
352 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
353 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
354 fmdir(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
356 er(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
357 er(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
358 er(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
359 nor1=sqrt(er(1)*er(1)+er(2)*er(2)+er(3)*er(3))
361 et(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
362 et(2) =cth*xframe(5,ifm)- sth*xframe(2,ifm)
363 et(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
364 nor2=sqrt(et(1)*et(1)+et(2)*et(2)+et(3)*et(3))
367 alpha=-yc(ii)*dt2/two
372 fmdir(1)=xframe(7,ifm)
373 fmdir(2)=xframe(8,ifm)
374 fmdir(3)=xframe(9,ifm)
376 nor3 = sqrt(fmdir(1)*fmdir(1)
378 & +fmdir(3)*fmdir(3))
379 fmdir=fmdir/
max(nor3,em20)
380 rx = x(1,i) - xframe(10,ifm)
381 ry = x(2,i) - xframe(11,ifm)
382 rz = x(3,i) - xframe(12,ifm)
383 vfx = xframe(31,ifm)+xframe(14,ifm)*rz-xframe(15,ifm)*ry
384 vfy = xframe(32,ifm)+xframe(15,ifm)*rx-xframe(13,ifm)*rz
385 vfz = xframe(33,ifm)+xframe(13,ifm)*ry-xframe(14,ifm)*rx
386 vv = fmdir(1)*v(1,i) + fmdir(2)*v(2,i) + fmdir(3)*v(3,i)
387 vf = fmdir(1)*vfx + fmdir(2)*vfy + fmdir(3)*vfz
388 a0 = fmdir(1)*a(1,i) + fmdir(2)*a(2,i) + fmdir(3)*a(3,i)
392 yc(ii)=(r*yc(ii)-vv+vf)/dt12
395 yc(ii)=(yc(ii)-vv+vf)/dt12
397 aa = diag_sms(i)*yc(ii) - a0
399 a(1,i)=a(1,i)+fmdir(1)*aa
400 a(2,i)=a(2,i)+fmdir(2)*aa
401 a(3,i)=a(3,i)+fmdir(3)*aa
402 dw = fourth*axi*weight(i) *
407 IF(isk<=1.AND.ifm<=1.AND.icoor==0)
THEN
408 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dr(j,i))/dt2
409 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vr(j,i))/dt12
411 ar(j,i)= in(i)*yc(ii)
414 . (yc(ii)*dt12 + two*vr(j,i))*(ar(j,i)-aold) *
419 . (yc(ii)*dt12 + two*vr(j,i))*weight(i)*(ar(j,i)-aold)*
420 . (rby(16+j,nr) + rby(19+j,nr) + rby(22+j,nr))/
max(in(i),em30)
422 ELSEIF (isk>1.AND.icoor==0)
THEN
426 IF(ibfv(7,n)==2)
THEN
427 dd = skew(k1,isk)*dr(1,i) +
428 . skew(k2,isk)*dr(2,i) +
429 . skew(k3,isk)*dr(3,i)
431 vv = skew(k1,isk)*vr(1,i) +
432 . skew(k2,isk)*vr(2,i) +
433 . skew(k3,isk)*vr(3,i)
434 a0 = skew(k1,isk)*ar(1,i) +
435 . skew(k2,isk)*ar(2,i) +
436 . skew(k3,isk)*ar(3,i)
437 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
438 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
439 aa = in(i)*yc(ii) - a0
440 ar(1,i)=ar(1,i)+skew(k1,isk)*aa
441 ar(2,i)=ar(2,i)+skew(k2,isk)*aa
442 ar(3,i)=ar(3,i)+skew(k3,isk)*aa
444 dw= fourth*(yc(ii)*dt12+two*vv)*aa*weight(i)
447 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
448 . ((rby(17,nr)*skew(k1,isk)
449 . +rby(18,nr)*skew(k2,isk)
450 . +rby(19,nr)*skew(k3,isk))*skew(k1,isk) +
451 . (rby(20,nr)*skew(k1,isk)
452 . +rby(21,nr)*skew(k2,isk)
453 . +rby(22,nr)*skew(k3,isk))*skew(k2,isk) +
454 . (rby(23,nr)*skew(k1,isk)
455 . +rby(24,nr)*skew(k2,isk)
456 . +rby(25,nr)*skew(k3,isk))*skew(k3,isk))
459 ELSEIF ((isk<=1.AND.ifm<=1.AND.icoor==1) .OR.
460 & (isk>1.AND.icoor==1))
THEN
461 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
462 & (skew(11,isk)-x(2,i))*skew(8,isk) +
463 & (skew(12,isk)-x(3,i))*skew(9,isk)
464 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
465 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
466 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
467 r = sqrt(hx*hx+hy*hy+hz*hz)
472 cth = (skew(1,isk)*hx+skew(2,isk)*hy+skew(3,isk)*hz)/r
473 sth = (skew(4,isk)*hx+skew(5,isk)*hy+skew(6,isk)*hz)/r
476 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
477 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
478 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
480 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
481 skdir(2) =cth*skew(5,isk)- sth*skew(2,isk)
482 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk)
487 IF(ibfv(7,n)==2) yimp= skdir(1)*dr(1,i) +
491 nor3 = sqrt(skdir(1)*skdir(1)
493 & +skdir(3)*skdir(3))
494 skdir=skdir/
max(nor3,em20)
495 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
496 vv =vr(1,i)*skdir(1)+ vr(2,i)*skdir(2)+ vr(3,i)*skdir(3)
497 a0 =ar(1,i)*skdir(1)+ ar(2,i)*skdir(2)+ ar(3,i)*skdir(3)
498 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
499 aa = in(i)*yc(ii) - a0
501 ar(1,i)=ar(1,i)+skdir(1)*aa
502 ar(2,i)=ar(2,i)+skdir(2)*aa
503 ar(3,i)=ar(3,i)+skdir(3)*aa
505 dw= fourth*(yc(ii)*dt12+two*vv)*aa*weight(i)
508 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
509 & ((rby(17,nr)*skdir(1)
510 & +rby(18,nr)*skdir(2)
511 & +rby(19,nr)*skdir(3))*skdir(1) +
512 & (rby(20,nr)*skdir(1)
513 & +rby(21,nr)*skdir(2)
515 & (rby(23,nr)*skdir(1)
516 & +rby(24,nr)*skdir(2)
517 & +rby(25,nr)*skdir(3))*skdir(3))
520 ELSEIF (ifm>1.AND.icoor==0)
THEN
525 vv = xframe(k1,ifm)*vr(1,i)
526 . + xframe(k2,ifm)*vr(2,i)
527 . + xframe(k3,ifm)*vr(3,i)
528 vf = xframe(k1,ifm)*xframe(13,ifm)
529 . + xframe(k2,ifm)*xframe(14,ifm)
530 . + xframe(k3,ifm)*xframe(15,ifm)
531 a0 = xframe(k1,ifm)*ar(1,i)
532 . + xframe(k2,ifm)*ar(2,i)
533 . + xframe(k3,ifm)*ar(3,i)
534 aa = in(i)*(yc(ii)-vv+vf)/dt12 - a0
535 ar(1,i)=ar(1,i)+xframe(k1,ifm)*aa
536 ar(2,i)=ar(2,i)+xframe(k2,ifm)*aa
537 ar(3,i)=ar(3,i)+xframe(k3,ifm)*aa
539 dw= fourth*(yc(ii)+vv)*aa*weight(i)
542 dw= fourth*(yc(ii)+vv)*weight(i)*aa*
543 . ((rby(17,nr)*xframe(k1,ifm)
544 . +rby(18,nr)*xframe(k2,ifm)
545 . +rby(19,nr)*xframe(k3,ifm))*xframe(k1,ifm) +
546 . (rby(20,nr)*xframe(k1,ifm)
547 . +rby(21,nr)*xframe(k2,ifm)
548 . +rby(22,nr)*xframe(k3,ifm))*xframe(k2,ifm) +
549 . (rby(23,nr)*xframe(k1,ifm)
550 . +rby(24,nr)*xframe(k2,ifm)
551 . +rby(25,nr)*xframe(k3,ifm))*xframe(k3,ifm))
554 ELSEIF (ifm>1.AND.icoor==1)
THEN
555 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
556 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
557 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm)
558 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
559 hy = coef*xframe(8,ifm)+x(2,i)-xframe(11,ifm)
560 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
561 r = sqrt(hx*hx+hy*hy+hz*hz)
566 cth = (xframe(1,ifm)*hx +
568 & xframe(3,ifm)*hz)/r
569 sth = (xframe(4,ifm)*hx +
571 & xframe(6,ifm)*hz)/r
574 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
575 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
578 fmdir(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
579 fmdir(2) =cth*xframe(5,ifm)- sth*xframe(2,ifm)
580 fmdir(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
582 fmdir(1)=xframe(7,ifm)
583 fmdir(2)=xframe(8,ifm)
584 fmdir(3)=xframe(9,ifm)
586 nor3 = sqrt(fmdir(1)*fmdir(1)
588 & +fmdir(3)*fmdir(3))
589 fmdir=fmdir/
max(nor3,em20)
590 vv = fmdir(1)*vr(1,i) +
593 vf = fmdir(1)*xframe(13,ifm) +
594 & fmdir(2)*xframe(14,ifm) +
595 & fmdir(3)*xframe(15,ifm)
596 a0 = fmdir(1)*ar(1,i) +
599 aa = in(i)*(yc(ii)-vv+vf)/dt12 - a0
601 ar(1,i)=ar(1,i)+fmdir(1)*aa
602 ar(2,i)=ar(2,i)+fmdir(2)*aa
603 ar(3,i)=ar(3,i)+fmdir(3)*aa
605 dw= fourth*(yc(ii)+vv)*aa*weight(i)
608 dw= fourth*(yc(ii)+vv)*weight(i)*aa*
609 & ((rby(17,nr)*fmdir(1)
610 & +rby(18,nr)*fmdir(2)
611 & +rby(19,nr)*fmdir(3))*fmdir(1) +
612 & (rby(20,nr)*fmdir(1)
613 & +rby(21,nr)*fmdir(2)
614 & +rby(22,nr)*fmdir(3))*fmdir(2) +
615 & (rby(23,nr)*fmdir(1)
616 & +rby(24,nr)*fmdir(2)
617 & +rby(25,nr)*fmdir(3))*fmdir(3))
622 wfext = wfext + dt1*dw
641 IF(nsk==0.AND.nfk==0.AND.icoor==0)
THEN
642#include "vectorize.inc"
646 ibfv(5,n) = iposc(ii)
650 yc(ii) = yc(ii) * fac
655 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-d(j,i))/dt2
656 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-v(j,i))/dt12
658 a(j,i)=diag_sms(i)*yc(ii)
659 dw = fourth*axi*weight(i) *
660 . (yc(ii)*dt12 + two*v(j,i))*(ms(i)*yc(ii)-aold)
663 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dr(j,i))/dt2
664 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vr(j,i))/dt12
666 ar(j,i)= in(i)*yc(ii)
669 . (ar(j,i)*dt12+two*vr(j,i))*(ar(j,i)-aold) *
674 . (ar(j,i)*dt12+two*vr(j,i))*weight(i)*(ar(j,i)-aold)*
675 . (rby(16+j,nr) + rby(19+j,nr) + rby(22+j,nr))
682 ELSEIF (nsk==1.AND.nfk==0.AND.icoor==0)
THEN
684#include "vectorize.inc"
691 ibfv(5,n) = iposc(ii)
695 yc(ii) = yc(ii) * fac
700 dd = skew(k1,isk)*d(1,i) +
701 . skew(k2,isk)*d(2,i) +
702 . skew(k3,isk)*d(3,i)
703 vv = skew(k1,isk)*v(1,i) +
704 . skew(k2,isk)*v(2,i) +
705 . skew(k3,isk)*v(3,i)
706 a0 = skew(k1,isk)*a(1,i) +
707 . skew(k2,isk)*a(2,i) +
708 . skew(k3,isk)*a(3,i)
709 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
710 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
711 aa = diag_sms(i)*yc(ii) - a0
712 a(1,i)=a(1,i)+skew(k1,isk)*aa
713 a(2,i)=a(2,i)+skew(k2,isk)*aa
714 a(3,i)=a(3,i)+skew(k3,isk)*aa
716 dw = fourth*axi*weight(i) *
717 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
725#include "vectorize.inc"
731 ibfv(5,n) = iposc(ii)
735 yc(ii) = yc(ii) * fac
741 IF(ibfv(7,n)==2)
THEN
742 dd = skew(k1,isk)*dr(1,i) +
743 . skew(k2,isk)*dr(2,i) +
744 . skew(k3,isk)*dr(3,i)
746 vv = skew(k1,isk)*vr(1,i) +
747 . skew(k2,isk)*vr(2,i) +
748 . skew(k3,isk)*vr(3,i)
749 a0 = skew(k1,isk)*ar(1,i) +
750 . skew(k2,isk)*ar(2,i) +
751 . skew(k3,isk)*ar(3,i)
752 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
753 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
754 aa = in(i)*yc(ii) - a0
755 ar(1,i)=ar(1,i)+skew(k1,isk)*aa
756 ar(2,i)=ar(2,i)+skew(k2,isk)*aa
757 ar(3,i)=ar(3,i)+skew(k3,isk)*aa
759 dw= fourth*(yc(ii)*dt12+two*vv)*aa
762 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
763 . ((rby(17,nr)*skew(k1,isk)
764 . +rby(18,nr)*skew(k2,isk)
765 . +rby(19,nr)*skew(k3,isk))*skew(k1,isk) +
766 . (rby(20,nr)*skew(k1,isk)
767 . +rby(21,nr)*skew(k2,isk)
768 . +rby(22,nr)*skew(k3,isk))*skew(k2,isk) +
769 . (rby(23,nr)*skew(k1,isk)
770 . +rby(24,nr)*skew(k2,isk)
771 . +rby(25,nr)*skew(k3,isk))*skew(k3,isk))
780 ELSEIF ((nsk==0.AND.nfk==0.AND.icoor==1).OR.
781 & (nsk==1.AND.nfk==0.AND.icoor==1))
THEN
783#include "vectorize.inc"
792 ibfv(5,n) = iposc(ii)
798 yc(ii) = yc(ii) * fac
801 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
802 & (skew(11,isk)-x(2,i))*skew(8,isk) +
803 & (skew(12,isk)-x(3,i))*skew(9,isk)
804 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
805 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
806 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
807 r = sqrt(hx*hx+hy*hy+hz*hz)
812 cth = (skew(1,isk)*hx +
815 sth = (skew(4,isk)*hx +
820 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
821 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
822 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
824 er(1) =cth*skew(1,isk)+ sth*skew(4,isk)
825 er(2) =cth*skew(2,isk)+ sth*skew(5,isk)
826 er(3) =cth*skew(3,isk)+ sth*skew(6,isk)
827 nor1=sqrt(er(1)*er(1)+er(2)*er(2)+er(3)*er(3))
829 et(1) =cth*skew(4,isk)- sth*skew(1,isk)
830 et(2) =cth*skew(5,isk)- sth*skew(2,isk)
831 et(3) =cth*skew(6,isk)- sth*skew(3,isk)
835 alpha=-yc(ii)*dt2/two
843 IF(ibfv(7,n)==2) yimp= skdir(1)*d(1,i) +
847 nor3 = sqrt(skdir(1)*skdir(1)
849 & +skdir(3)*skdir(3))
850 skdir=skdir/
max(nor3,em20)
851 vv = v(1,i)*skdir(1) +
854 a0 = a(1,i)*skdir(1) +
857 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
858 IF(ibfv(7,n)>=1)
THEN
862 yc(ii)=(r*yc(ii)-vv)/dt12
865 yc(ii)=(yc(ii)-vv)/dt12
868 aa = diag_sms(i)*yc(ii) - a0
870 a(1,i)=a(1,i)+skdir(1)*aa
871 a(2,i)=a(2,i)+skdir(2)*aa
872 a(3,i)=a(3,i)+skdir(3)*aa
873 dw = fourth*axi*weight(i) *
874 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
882#include "vectorize.inc"
890 ibfv(5,n) = iposc(ii)
896 yc(ii) = yc(ii) * fac
900 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
901 & (skew(11,isk)-x(2,i))*skew(8,isk) +
902 & (skew(12,isk)-x(3,i))*skew(9,isk)
903 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
904 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
911 cth = (skew(1,isk)*hx +
914 sth = (skew(4,isk)*hx +
919 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
920 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
921 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
923 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
924 skdir(2) =cth*skew(5,isk)- sth*skew(2,isk)
925 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk)
930 IF(ibfv(7,n)==2) yimp= skdir(1)*dr(1,i) +
934 nor3 = sqrt(skdir(1)*skdir(1)
936 & +skdir(3)*skdir(3))
937 skdir=skdir/
max(nor3,em20)
938 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
939 vv = vr(1,i)*skdir(1) +
942 a0 = ar(1,i)*skdir(1) +
945 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
946 aa = in(i)*yc(ii) - a0
948 ar(1,i)=ar(1,i)+skdir(1)*aa
949 ar(2,i)=ar(2,i)+skdir(2)*aa
950 ar(3,i)=ar(3,i)+skdir(3)*aa
952 dw= fourth*(yc(ii)*dt12+two*vv)*aa*weight(i)
955 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
956 & ((rby(17,nr)*skdir(1)
957 & +rby(18,nr)*skdir(2)
958 & +rby(19,nr)*skdir(3))*skdir(1) +
959 & (rby(20,nr)*skdir(1)
960 & +rby(21,nr)*skdir(2)
961 & +rby(22,nr)*skdir(3))*skdir(2) +
962 & (rby(23,nr)*skdir(1)
963 & +rby(24,nr)*skdir(2)
964 & +rby(25,nr)*skdir(3))*skdir(3))
973 ELSEIF (nfk==1.AND.icoor==0)
THEN
975#include "vectorize.inc"
983 ibfv(5,n) = iposc(ii)
987 yc(ii) = yc(ii) * fac
992 rx = x(1,i) - xframe(10,ifm)
993 ry = x(2,i) - xframe(11,ifm)
994 rz = x(3,i) - xframe(12,ifm)
995 vfx = vfx + xframe(31,ifm)
996 vfy = vfy + xframe(32,ifm)
997 vfz = vfz + xframe(33,ifm)
998 vfx = xframe(14,ifm)*rz-xframe(15,ifm)*ry
999 vfy = xframe(15,ifm)*rx-xframe(13,ifm)*rz
1000 vfz = xframe(13,ifm)*ry-xframe(14,ifm)*rx
1001 vv = xframe(k1,ifm)*v(1,i)
1002 . + xframe(k2,ifm)*v(2,i)
1003 . + xframe(k3,ifm)*v(3,i)
1004 vf = xframe(k1,ifm)*vfx
1005 . + xframe(k2,ifm)*vfy
1006 . + xframe(k3,ifm)*vfz
1007 a0 = xframe(k1,ifm)*a(1,i)
1008 . + xframe(k2,ifm)*a(2,i)
1009 . + xframe(k3,ifm)*a(3,i)
1010 yc(ii)=(yc(ii)-vv+vf)/dt12
1011 aa = diag_sms(i)*yc(ii) - a0
1012 a(1,i)=a(1,i)+xframe(k1,ifm)*aa
1013 a(2,i)=a(2,i)+xframe(k2,ifm)*aa
1014 a(3,i)=a(3,i)+xframe(k3,ifm)*aa
1016 dw = fourth*axi*weight(i) *
1017 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
1018 wfext=wfext + dt1*dw
1025 ibfv(5,n) = iposc(ii)
1029 yc(ii) = yc(ii) * fac
1035 dd = skew(k1,isk)*d(1,i) +
1036 . skew(k2,isk)*d(2,i) +
1037 . skew(k3,isk)*d(3,i)
1038 vv = skew(k1,isk)*v(1,i) +
1039 . skew(k2,isk)*v(2,i) +
1040 . skew(k3,isk)*v(3,i)
1041 a0 = skew(k1,isk)*a(1,i) +
1042 . skew(k2,isk)*a(2,i) +
1043 . skew(k3,isk)*a(3,i)
1044 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
1045 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
1046 aa = diag_sms(i)*yc(ii) - a0
1047 a(1,i)=a(1,i)+skew(k1,isk)*aa
1048 a(2,i)=a(2,i)+skew(k2,isk)*aa
1049 a(3,i)=a(3,i)+skew(k3,isk)*aa
1051 dw = fourth*axi*weight(i) *
1052 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
1053 wfext=wfext + dt1*dw
1061#include
"vectorize.inc"
1068 ibfv(5,n) = iposc(ii)
1072 yc(ii) = yc(ii) * fac
1078 vv = xframe(k1,ifm)*vr(1,i)
1079 . + xframe(k2,ifm)*vr(2,i)
1080 . + xframe(k3,ifm)*vr(3,i)
1081 vf = xframe(k1,ifm)*xframe(13,ifm)
1082 . + xframe(k2,ifm)*xframe(14,ifm)
1083 . + xframe(k3,ifm)*xframe(15,ifm)
1084 a0 = xframe(k1,ifm)*ar(1,i)
1085 . + xframe(k2,ifm)*ar(2,i)
1086 . + xframe(k3,ifm)*ar(3,i)
1087 aa = in(i)*(yc(ii)-vv+vf)/dt12 - a0
1088 ar(1,i)=ar(1,i)+xframe(k1,ifm)*aa
1089 ar(2,i)=ar(2,i)+xframe(k2,ifm)*aa
1090 ar(3,i)=ar(3,i)+xframe(k3,ifm)*aa
1091 IF(ibfv(6,n)==0)
THEN
1092 dw= fourth*(yc(ii)+vv)*aa*weight(i)
1095 dw= fourth*(yc(ii)+vv)*weight(i)*aa*
1096 . ((rby(17,nr)*xframe(k1,ifm)
1097 . +rby(18,nr)*xframe(k2,ifm)
1098 . +rby(19,nr)*xframe(k3,ifm))*xframe(k1,ifm) +
1099 . (rby(20,nr)*xframe(k1,ifm)
1100 . +rby(21,nr)*xframe(k2,ifm)
1101 . +rby(22,nr)*xframe(k3,ifm))*xframe(k2,ifm) +
1102 . (rby(23,nr)*xframe(k1,ifm)
1103 . +rby(24,nr)*xframe(k2,ifm)
1104 . +rby(25,nr)*xframe(k3,ifm))*xframe(k3,ifm))
1107 wfext=wfext + dt1*dw
1114 ibfv(5,n) = iposc(ii)
1118 yc(ii) = yc(ii) * fac
1124 IF(ibfv(7,n)==2)
THEN
1125 dd = skew(k1,isk)*dr(1,i) +
1126 . skew(k2,isk)*dr(2,i) +
1127 . skew(k3,isk)*dr(3,i)
1129 vv = skew(k1,isk)*vr(1,i) +
1130 . skew(k2,isk)*vr(2,i) +
1131 . skew(k3,isk)*vr(3,i)
1132 a0 = skew(k1,isk)*ar(1,i) +
1133 . skew(k2,isk)*ar(2,i) +
1134 . skew(k3,isk)*ar(3,i)
1135 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-dd)/dt2
1136 IF(ibfv(7,n)>=1) yc(ii)=(yc(ii)-vv)/dt12
1137 aa = in(i)*yc(ii) - a0
1138 ar(1,i)=ar(1,i)+skew(k1,isk)*aa
1139 ar(2,i)=ar(2,i)+skew(k2,isk)*aa
1140 ar(3,i)=ar(3,i)+skew(k3,isk)*aa
1141 IF(ibfv(6,n)==0)
THEN
1142 dw=fourth*(yc(ii)*dt12+two*vv)*aa*weight(i)
1145 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
1146 . ((rby(17,nr)*skew(k1,isk)
1147 . +rby(18,nr)*skew(k2,isk)
1148 . +rby(19,nr)*skew(k3,isk))*skew(k1,isk) +
1149 . (rby(20,nr)*skew(k1,isk)
1150 . +rby(21,nr)*skew(k2,isk)
1151 . +rby(22,nr)*skew(k3,isk))*skew(k2,isk) +
1152 . (rby(23,nr)*skew(k1,isk)
1153 . +rby(24,nr)*skew(k2,isk)
1154 . +rby(25,nr)*skew(k3,isk))*skew(k3,isk))
1157 wfext=wfext + dt1*dw
1164 ELSEIF (nfk==1.AND.icoor==1)
THEN
1166#include "vectorize.inc"
1176 ibfv(5,n) = iposc(ii)
1180 yc(ii) = yc(ii) * fac
1182 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
1183 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
1184 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm)
1185 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
1186 hy = coef*xframe(8,ifm)+x(2,i)-xframe(11,ifm)
1187 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
1188 r = sqrt(hx*hx+hy*hy+hz*hz)
1193 cth = (xframe(1,ifm)*hx +
1194 & xframe(2,ifm)*hy +
1195 & xframe(3,ifm)*hz)/r
1196 sth = (xframe(4,ifm)*hx +
1197 & xframe(5,ifm)*hy +
1198 & xframe(6,ifm)*hz)/r
1201 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
1202 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
1203 fmdir(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
1205 er(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
1206 er(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
1207 er(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
1208 nor1=sqrt(er(1)*er(1)+er(2)*er(2)+er(3)*er(3))
1209 er=er/
max(nor1,em20)
1210 et(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
1211 et(2) =cth*xframe(5,ifm)- sth*xframe(2,ifm)
1212 et(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
1213 nor2=sqrt(et(1)*et(1)+et(2)*et(2)+et(3)*et(3))
1214 et=et/
max(nor2,em20)
1216 alpha=-yc(ii)*dt2/two
1221 fmdir(1)=xframe(7,ifm)
1222 fmdir(2)=xframe(8,ifm)
1223 fmdir(3)=xframe(9,ifm)
1225 nor3 = sqrt(fmdir(1)*fmdir(1)
1226 & +fmdir(2)*fmdir(2)
1227 & +fmdir(3)*fmdir(3))
1228 fmdir=fmdir/
max(nor3,em20)
1229 rx = x(1,i) - xframe(10,ifm)
1230 ry = x(2,i) - xframe(11,ifm)
1231 rz = x(3,i) - xframe(12,ifm)
1232 vfx = xframe(31,ifm) +
1233 & xframe(14,ifm)*rz - xframe(15,ifm)*ry
1234 vfy = xframe(32,ifm) +
1235 & xframe(15,ifm)*rx - xframe(13,ifm)*rz
1236 vfz = xframe(33,ifm) +
1237 & xframe(13,ifm)*ry-xframe(14,ifm)*rx
1238 vv = fmdir(1)*v(1,i) +
1241 vf = fmdir(1)*vfx + fmdir(2)*vfy + fmdir(3)*vfz
1242 a0 = fmdir(1)*a(1,i) +
1248 yc(ii)=(r*yc(ii)-vv+vf)/dt12
1251 yc(ii)=(yc(ii)-vv+vf)/dt12
1253 aa = diag_sms(i)*yc(ii) - a0
1255 a(1,i)=a(1,i)+fmdir(1)*aa
1256 a(2,i)=a(2,i)+fmdir(2)*aa
1257 a(3,i)=a(3,i)+fmdir(3)*aa
1258 dw = fourth*axi*weight(i) *
1259 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
1260 wfext=wfext + dt1*dw
1269 ibfv(5,n) = iposc(ii)
1275 yc(ii) = yc(ii) * fac
1279 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
1280 & (skew(11,isk)-x(2,i))*skew(8,isk) +
1281 & (skew(12,isk)-x(3,i))*skew(9,isk)
1282 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
1283 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
1284 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
1285 r = sqrt(hx*hx+hy*hy+hz*hz)
1290 cth = (skew(1,isk)*hx +
1293 sth = (skew(4,isk)*hx +
1298 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1299 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1300 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1302 er(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1303 er(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1304 er(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1305 nor1=sqrt(er(1)*er(1)+er(2)*er(2)+er(3)*er(3))
1306 er=er/
max(nor1,em20)
1307 et(1) =cth*skew(4,isk)- sth*skew(1,isk)
1308 et(2) =cth*skew(5,isk)- sth*skew(2,isk)
1309 et(3) =cth*skew(6,isk)- sth*skew(3,isk)
1310 nor2=sqrt(et(1)*et(1)+et(2)*et(2)+et(3)*et(3))
1311 et=et/
max(nor2,em20)
1313 alpha=-yc(ii)*dt2/two
1318 skdir(1)=skew(7,isk)
1319 skdir(2)=skew(8,isk)
1320 skdir(3)=skew(9,isk)
1321 IF(ibfv(7,n)==2) yimp= skdir(1)*d(1,i) +
1325 nor3 = sqrt(skdir(1)*skdir(1)
1326 & +skdir(2)*skdir(2)
1327 & +skdir(3)*skdir(3))
1328 skdir=skdir/
max(nor3,em20)
1329 vv = v(1,i)*skdir(1) +
1332 a0 = a(1,i)*skdir(1) +
1335 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
1336 IF(ibfv(7,n)>=1)
THEN
1340 yc(ii)=(r*yc(ii)-vv)/dt12
1343 yc(ii)=(yc(ii)-vv)/dt12
1346 aa = diag_sms(i)*yc(ii) - a0
1348 a(1,i)=a(1,i)+skdir(1)*aa
1349 a(2,i)=a(2,i)+skdir(2)*aa
1350 a(3,i)=a(3,i)+skdir(3)*aa
1351 dw = fourth*axi*weight(i) *
1352 . (yc(ii)*dt12+two*vv)*(ms(i)*yc(ii)-a0)
1353 wfext=wfext + dt1*dw
1361#include "vectorize.inc"
1370 ibfv(5,n) = iposc(ii)
1374 yc(ii) = yc(ii) * fac
1377 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
1378 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
1379 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm)
1380 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
1381 hy = coef*xframe(8,ifm)+x(2,i)-xframe(11,ifm)
1382 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
1383 r = sqrt(hx*hx+hy*hy+hz*hz)
1388 cth = (xframe(1,ifm)*hx +
1389 & xframe(2,ifm)*hy +
1390 & xframe(3,ifm)*hz)/r
1391 sth = (xframe(4,ifm)*hx +
1392 & xframe(5,ifm)*hy +
1393 & xframe(6,ifm)*hz)/r
1396 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
1397 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
1398 fmdir(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
1400 fmdir(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
1401 fmdir(2) =cth*xframe(5,ifm)- sth*xframe(2,ifm)
1402 fmdir(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
1404 fmdir(1)=xframe(7,ifm)
1405 fmdir(2)=xframe(8,ifm)
1406 fmdir(3)=xframe(9,ifm)
1408 nor3 = sqrt(fmdir(1)*fmdir(1)
1409 & +fmdir(2)*fmdir(2)
1410 & +fmdir(3)*fmdir(3))
1411 fmdir=fmdir/
max(nor3,em20)
1412 vv = fmdir(1)*vr(1,i) +
1413 & fmdir(2)*vr(2,i) +
1416 & fmdir(2)*xframe(14,ifm) +
1417 & fmdir(3)*xframe(15,ifm)
1418 a0 = fmdir(1)*ar(1,i) +
1419 & fmdir(2)*ar(2,i) +
1421 aa = in(i)*(yc(ii)-vv+vf)/dt12 - a0
1424 ar(2,i)=ar(2,i)+fmdir(2)*aa
1425 ar(3,i)=ar(3,i)+fmdir(3)*aa
1426 IF(ibfv(6,n)==0)
THEN
1427 dw= fourth*(yc(ii)+vv)*aa*weight(i)
1430 dw= fourth*(yc(ii)+vv)*weight(i)*aa*
1431 & ((rby(17,nr)*fmdir(1)
1432 & +rby(18,nr)*fmdir(2)
1433 & +rby(19,nr)*fmdir(3))*fmdir(1) +
1434 & (rby(20,nr)*fmdir(1)
1435 & +rby(21,nr)*fmdir(2)
1436 & +rby(22,nr)*fmdir(3))*fmdir(2) +
1437 & (rby(23,nr)*fmdir(1)
1438 & +rby(24,nr)*fmdir(2)
1439 & +rby(25,nr)*fmdir(3))*fmdir(3))
1442 wfext=wfext + dt1*dw
1451 ibfv(5,n) = iposc(ii)
1457 yc(ii) = yc(ii) * fac
1461 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
1462 & (skew(11,isk)-x(2,i))*skew(8,isk) +
1463 & (skew(12,isk)-x(3,i))*skew(9,isk)
1464 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
1465 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
1466 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
1467 r = sqrt(hx*hx+hy*hy+hz*hz)
1472 cth = (skew(1,isk)*hx +
1475 sth = (skew(4,isk)*hx +
1480 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1481 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1482 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1484 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
1485 skdir(2) =cth*skew(5,isk)- sth*skew(2,isk)
1486 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk)
1488 skdir(1)=skew(7,isk)
1489 skdir(2)=skew(8,isk)
1490 skdir(3)=skew(9,isk)
1491 IF(ibfv(7,n)==2) yimp= skdir(1)*dr(1,i) +
1492 & skdir(2)*dr(2,i) +
1495 nor3 = sqrt(skdir(1)*skdir(1)
1496 & +skdir(2)*skdir(2)
1497 & +skdir(3)*skdir(3))
1498 skdir=skdir/
max(nor3,em20)
1500 IF(ibfv(7,n)==2) yc(ii)=(yc(ii)-yimp)/dt2
1501 vv = vr(1,i)*skdir(1) +
1502 & vr(2,i)*skdir(2) +
1504 a0 = ar(1,i)*skdir(1) +
1505 & ar(2,i)*skdir(2) +
1508 aa = in(i)*yc(ii) - a0
1510 ar(1,i)=ar(1,i)+skdir(1)*aa
1511 ar(2,i)=ar(2,i)+skdir(2)*aa
1512 ar(3,i)=ar(3,i)+skdir(3
1513 IF(ibfv(6,n)==0)
THEN
1514 dw= fourth*(yc(ii)*dt12+two*vv)*
1518 dw= fourth*(yc(ii)*dt12+two*vv)*weight(i)*aa*
1519 & ((rby(17,nr)*skdir(1)
1520 & +rby(18,nr)*skdir(2)
1521 & +rby(19,nr)*skdir(3))*skdir(1) +
1522 & (rby(20,nr)*skdir(1)
1523 & +rby(21,nr)*skdir(2)
1524 & +rby(22,nr)*skdir(3))*skdir(2) +
1525 & (rby(23,nr)*skdir(1)
1527 & +rby(25,nr)*skdir(3))*skdir(3))
1530 wfext=wfext + dt1*dw
1540 IF (cptreac/=0)
THEN
1544 IF (nodreac(i)/=0)
THEN
1545 fthreac(1,nodreac(i)) = fthreac(1,nodreac(i)) + (a(1,i) -
1547 fthreac(2,nodreac(i)) = fthreac(2,nodreac(i)) + (a(2,i) -
1549 fthreac(3,nodreac(i)) = fthreac(3,nodreac(i)) + (a(3,i) -
1562 DO nn=1,nfxvel,nvsiz
1563 IF (ibfv(8,nn)==1)
GOTO 200
1566 DO 210 ii = 1,
min(nfxvel-ideb,nvsiz)
1571 IF(tt<startt)
GOTO 210
1572 IF(tt>stopt)
GOTO 210
1575 IF(nodnx_sms(i)==0) cycle
1580 ts = tt-sensor_tab(isens)%TSTART
1588 DO 220 ii = 1,
min(nfxvel-ideb,nvsiz)
1593 IF(tt<startt)
GOTO 220
1594 IF(tt>stopt)
GOTO 220
1597 IF(nodnx_sms(i)==0) cycle
1603 IF (cptreac/=0)
THEN
1613 ideb = ideb +
min(nfxvel-ideb,nvsiz)
1628 IF (ifm<=1) j=j-10*isk
1630 IF(isk<=1.AND.ifm<=1.AND.icoor==0)
THEN
1632 ELSEIF (isk>1.AND.icoor==0)
THEN
1636 a0 = skew(k1,isk)*a(1,i) +
1637 . skew(k2,isk)*a(2,i) +
1638 . skew(k3,isk)*a(3,i)
1640 a(1,i)=a(1,i)+skew(k1,isk)*aa
1641 a(2,i)=a(2,i)+skew(k2,isk)*aa
1642 a(3,i)=a(3,i)+skew(k3,isk)*aa
1643 ELSEIF ((isk<=1.AND.ifm<=1.AND.icoor==1) .OR.
1644 & (isk>1 .AND. icoor==1))
THEN
1645 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
1646 & (skew(11,isk)-x(2,i))*skew(8,isk) +
1647 & (skew(12,isk)-x(3,i))*skew(9,isk)
1648 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
1649 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
1650 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
1651 r = sqrt(hx*hx+hy*hy+hz*hz)
1656 cth = (skew(1,isk)*hx +
1659 sth = (skew(4,isk)*hx +
1664 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1665 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1666 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1668 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
1669 skdir(2) =cth*skew(5,isk)- sth*skew(2,isk)
1670 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk)
1672 skdir(1)=skew(7,isk)
1673 skdir(2)=skew(8,isk)
1674 skdir(3)=skew(9,isk)
1676 nor3 = sqrt(skdir(1)*skdir(1)
1677 & +skdir(2)*skdir(2)
1678 & +skdir(3)*skdir(3))
1679 skdir=skdir/
max(nor3,em20)
1680 a0 = a(1,i)*skdir(1) +
1685 a(1,i)=a(1,i)+skdir(1)*aa
1686 a(2,i)=a(2,i)+skdir(2)*aa
1687 a(3,i)=a(3,i)+skdir(3)*aa
1688 ELSEIF (ifm>1.AND.icoor==0)
THEN
1693 a0 = xframe(k1,ifm)*a(1,i)
1694 . + xframe(k2,ifm)*a(2,i)
1695 . + xframe(k3,ifm)*a(3,i)
1697 a(1,i)=a(1,i)+xframe(k1,ifm)*aa
1698 a(2,i)=a(2,i)+xframe(k2,ifm)*aa
1699 a(3,i)=a(3,i)+xframe(k3,ifm)*aa
1700 ELSEIF (ifm>1.AND.icoor==1)
THEN
1701 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
1702 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
1703 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm
1704 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
1705 hy = coef*xframe(8,ifm)+x(2,i)-xframe(11,ifm)
1706 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
1707 r = sqrt(hx*hx+hy*hy+hz*hz)
1712 cth = (xframe(1,ifm)*hx +
1713 & xframe(2,ifm)*hy +
1714 & xframe(3,ifm)*hz)/r
1715 sth = (xframe(4,ifm)*hx +
1716 & xframe(5,ifm)*hy +
1717 & xframe(6,ifm)*hz)/r
1720 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
1721 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
1722 fmdir(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
1724 fmdir(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
1725 fmdir(2) =cth*xframe(5,ifm)- sth*xframe(2,ifm)
1726 fmdir(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
1728 fmdir(1)=xframe(7,ifm)
1729 fmdir(2)=xframe(8,ifm)
1730 fmdir(3)=xframe(9,ifm)
1732 nor3 = sqrt(fmdir(1)*fmdir(1)
1733 & +fmdir(2)*fmdir(2)
1734 & +fmdir(3)*fmdir(3))
1735 fmdir=fmdir/
max(nor3,em20)
1736 a0 = fmdir(1)*a(1,i) +
1741 a(1,i)=a(1,i)+fmdir(1)*aa
1742 a(2,i)=a(2,i)+fmdir(2)*aa
1743 a(3,i)=a(3,i)+fmdir(3)*aa
1764 IF(nsk==0.AND.nfk==0.AND.icoor==0)
THEN
1765#include
"vectorize.inc"
1778 ELSEIF (nsk==1.AND.nfk==0.AND.icoor==0)
THEN
1780#include "vectorize.inc"
1786 ibfv(5,n) = iposc(ii)
1789 axi=one-ax+ax*x(2,i)
1793 a0 = skew(k1,isk)*a(1,i) +
1794 . skew(k2,isk)*a(2,i) +
1795 . skew(k3,isk)*a(3,i)
1797 a(1,i)=a(1,i)+skew(k1,isk)*aa
1798 a(2,i)=a(2,i)+skew(k2,isk)*aa
1799 a(3,i)=a(3,i)+skew(k3,isk)*aa
1803 ELSEIF ((nsk==0.AND.nfk==0.AND.icoor==1).OR.
1804 & (nsk==1.AND.nfk==0.AND.icoor==1))
THEN
1806#include "vectorize.inc"
1814 ibfv(5,n) = iposc(ii)
1817 axi=one-ax+ax*x(2,i)
1818 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
1819 & (skew(11,isk)-x(2,i))*skew(8,isk) +
1820 & (skew(12,isk)-x(3,i))*skew(9,isk)
1821 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
1822 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
1823 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
1824 r = sqrt(hx*hx+hy*hy+hz*hz)
1829 cth = (skew(1,isk)*hx +
1832 sth = (skew(4,isk)*hx +
1837 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1838 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1839 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1841 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
1842 skdir(2) =cth*skew(5,isk)- sth*skew(2,isk)
1843 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk)
1845 skdir(1)=skew(7,isk)
1846 skdir(2)=skew(8,isk)
1847 skdir(3)=skew(9,isk)
1849 nor3 = sqrt(skdir(1)*skdir(1)
1850 & +skdir(2)*skdir(2)
1851 & +skdir(3)*skdir(3))
1852 skdir=skdir/
max(nor3,em20)
1853 a0 = a(1,i)*skdir(1) +
1858 a(1,i)=a(1,i)+skdir(1)*aa
1859 a(2,i)=a(2,i)+skdir(2)*aa
1860 a(3,i)=a(3,i)+skdir(3)*aa
1864 ELSEIF (nfk==1.AND.icoor==0)
THEN
1866#include "vectorize.inc"
1873 ibfv(5,n) = iposc(ii)
1879 a0 = xframe(k1,ifm)*a(1,i)
1880 . + xframe(k2,ifm)*a(2,i)
1881 . + xframe(k3,ifm)*a(3,i)
1883 a(1,i)=a(1,i)+xframe(k1,ifm)*aa
1884 a(2,i)=a(2,i)+xframe(k2,ifm)*aa
1885 a(3,i)=a(3,i)+xframe(k3,ifm)*aa
1891 ibfv(5,n) = iposc(ii)
1897 a0 = skew(k1,isk)*a(1,i) +
1898 . skew(k2,isk)*a(2,i) +
1899 . skew(k3,isk)*a(3,i)
1901 a(1,i)=a(1,i)+skew(k1,isk)*aa
1902 a(2,i)=a(2,i)+skew(k2,isk)*aa
1903 a(3,i)=a(3,i)+skew(k3,isk)*aa
1908 ELSEIF (nfk==1.AND.icoor==1)
THEN
1910#include "vectorize.inc"
1919 ibfv(5,n) = iposc(ii)
1922 coef = (xframe(10,ifm)-x(1,i))*xframe(7,ifm) +
1923 & (xframe(11,ifm)-x(2,i))*xframe(8,ifm) +
1924 & (xframe(12,ifm)-x(3,i))*xframe(9,ifm)
1925 hx = coef*xframe(7,ifm)+x(1,i)-xframe(10,ifm)
1926 hy = coef*xframe(8,ifm)+x(2,i)-xframe(
1927 hz = coef*xframe(9,ifm)+x(3,i)-xframe(12,ifm)
1928 r = sqrt(hx*hx+hy*hy+hz*hz)
1934 & xframe(2,ifm)*hy +
1935 & xframe(3,ifm)*hz)/r
1936 sth = (xframe(4,ifm)*hx +
1937 & xframe(5,ifm)*hy +
1938 & xframe(6,ifm)*hz)/r
1941 fmdir(1) =cth*xframe(1,ifm)+ sth*xframe(4,ifm)
1942 fmdir(2) =cth*xframe(2,ifm)+ sth*xframe(5,ifm)
1943 fmdir(3) =cth*xframe(3,ifm)+ sth*xframe(6,ifm)
1945 fmdir(1) =cth*xframe(4,ifm)- sth*xframe(1,ifm)
1946 fmdir(2) =cth*xframe(5,ifm)- sth*xframe
1947 fmdir(3) =cth*xframe(6,ifm)- sth*xframe(3,ifm)
1949 fmdir(1)=xframe(7,ifm)
1950 fmdir(2)=xframe(8,ifm)
1951 fmdir(3)=xframe(9,ifm)
1953 nor3 = sqrt(fmdir(1)*fmdir(1)
1954 & +fmdir(2)*fmdir(2)
1955 & +fmdir(3)*fmdir(3))
1956 fmdir=fmdir/
max(nor3,em20)
1957 a0 = fmdir(1)*a(1,i) +
1962 a(1,i)=a(1,i)+fmdir(1)*aa
1963 a(2,i)=a(2,i)+fmdir(2)*aa
1964 a(3,i)=a(3,i)+fmdir(3)*aa
1972 ibfv(5,n) = iposc(ii)
1975 coef = (skew(10,isk)-x(1,i))*skew(7,isk) +
1976 & (skew(11,isk)-x(2,i))
1977 & (skew(12,isk)-x(3,i))*skew(9,isk)
1978 hx = coef*skew(7,isk)+x(1,i)-skew(10,isk)
1979 hy = coef*skew(8,isk)+x(2,i)-skew(11,isk)
1980 hz = coef*skew(9,isk)+x(3,i)-skew(12,isk)
1981 r = sqrt(hx*hx+hy*hy+hz*hz)
1986 cth = (skew(1,isk)*hx +
1989 sth = (skew(4,isk)*hx +
1994 skdir(1) =cth*skew(1,isk)+ sth*skew(4,isk)
1995 skdir(2) =cth*skew(2,isk)+ sth*skew(5,isk)
1996 skdir(3) =cth*skew(3,isk)+ sth*skew(6,isk)
1998 skdir(1) =cth*skew(4,isk)- sth*skew(1,isk)
1999 skdir(2) =cth*skew(5,isk)- sth*skew
2000 skdir(3) =cth*skew(6,isk)- sth*skew(3,isk
2002 skdir(1)=skew(7,isk)
2003 skdir(2)=skew(8,isk)
2006 nor3 = sqrt(skdir(1)*skdir(1)
2007 & +skdir(2)*skdir(2)
2008 & +skdir(3)*skdir(3))
2009 skdir=skdir/
max(nor3,em20)
2010 a0 = a(1,i)*skdir(1) +
2016 a(2,i)=a(2,i)+skdir(2)*aa
2017 a(3,i)=a(3,i)+skdir(3)*aa
2025 IF (cptreac/=0 .AND. it>0)
THEN
2029 IF (nodreac(i)/=0)
THEN
2030 fthreac(1,nodreac(i)) = fthreac(1,nodreac(i)) + (a(1,i) -
2031 & aold0(1,ii))*ms(i)*dt12
2032 fthreac(2,nodreac(i)) = fthreac(2,nodreac(i)) + (a(2,i) -
2033 & aold0(2,ii))*ms(i)*dt12
2034 fthreac(3,nodreac(i)) = fthreac(3,nodreac(i)) + (a(3,i) -
2035 & aold0(3,ii))*ms(i)*dt12