34 2 NOD ,M ,IN ,VR ,STIFN,
35 3 STIFR,FOPTA ,WEIGHT ,MS ,V ,
36 4 IFLAG,ICODR ,ISKEW ,SKEW ,RBF6 ,
37 5 NSN ,NATIV_SMS,FBSAV6,IPARSENS,
38 6 NODREAC,FTHREAC,CPTREAC,ISPHER)
46#include "implicit_f.inc"
59 INTEGER ,
INTENT(IN ) :: ISPHER
60 INTEGER NOD(*), WEIGHT(*), ICODR(*), ISKEW(*),
61 . IFLAG,NSN,M, NATIV_SMS(*),IPARSENS,
64 . af(3,*), am(3,*), x(3,*), fs(*), rby(*), vr(3,*), skew(lskew,*),
65 . stifn(*),stifr(*),fopta(6),in(*),ms(*), v(3,*),
67 DOUBLE PRECISION RBF6(8,6)
73 INTEGER I, N, LCOD, ISK, K
76 . WA1, WA2, WA3, DD, VI(3),II1,II2,II3,II4,II5,II6,II7,II8,II9,
77 . ENROTT,ENCINT,XMASST,XMOMTT,YMOMTT,ZMOMTT,MAS,AFM1,AFM2,AFM3,
78 . arm1,arm2,arm3,stfm,stfrm,
79 . det, il1,il2,il3,il4,il5,il6,il7,il8,il9
80 my_real,
DIMENSION(:),
ALLOCATABLE :: f1
81 my_real,
DIMENSION(:),
ALLOCATABLE :: f2
82 my_real,
DIMENSION(:),
ALLOCATABLE :: f3
83 my_real,
DIMENSION(:),
ALLOCATABLE :: f4
84 my_real,
DIMENSION(:),
ALLOCATABLE :: f5
85 my_real,
DIMENSION(:),
ALLOCATABLE :: f6
86 my_real,
DIMENSION(:),
ALLOCATABLE :: f7
87 my_real,
DIMENSION(:),
ALLOCATABLE :: f8
106 rby(10) =
max(rby(10),in(m))
107 rby(11) =
max(rby(11),in(m))
108 rby(12) =
max(rby(12),in(m))
115 IF(weight(n) == 1)
THEN
116 dd = (x(1,n)-x(1,m))**2+(x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
118 f2(i) = stifr(n)+dd*stifn(n)
123 . +(x(2,n)-x(2,m))*af(3,n)-(x(3,n)-x(3,m))*af(2,n)
125 . +(x(3,n)-x(3,m))*af(1,n)-(x(1,n)-x(1,m))*af(3,n)
127 . +(x(1,n)-x(1,m))*af(2,n)-(x(2,n)-x(2,m))*af(1,n)
142 IF(weight(n) == 1)
THEN
143 dd = (x(1,n)-x(1,m))**2+(x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
145 f2(i) = stifr(n)+dd*stifn(n)
151 . +(x(2,n)-x(2,m))*af(3,n)-(x(3,n)-x(3,m))*af(2,n)
153 . +(x(3,n)-x(3,m))*af(1,n)-(x(1,n)-x(1,m))*af(3,n)
155 . +(x(1,n)-x(1,m))*af(2,n)-(x(2,n)-x(2,m))*af(1,n)
193 rbf6(1,k) = rbf6(1,k) + f1(i)
194 rbf6(2,k) = rbf6(2,k) + f2(i)
195 rbf6(3,k) = rbf6(3,k) + f3(i)
196 rbf6(4,k) = rbf6(4,k) + f4(i)
197 rbf6(5,k) = rbf6(5,k) + f5(i)
198 rbf6(6,k) = rbf6(6,k) + f6(i)
199 rbf6(7,k) = rbf6(7,k) + f7(i)
200 rbf6(8,k) = rbf6(8,k) + f8(i)
207 ELSEIF (iflag==2)
THEN
213 + rbf6(1,1)+rbf6(1,2)+rbf6(1,3)+
214 + rbf6(1,4)+rbf6(1,5)+rbf6(1,6)
216 + rbf6(2,1)+rbf6(2,2)+rbf6(2,3)+
217 + rbf6(2,4)+rbf6(2,5)+rbf6(2,6)
219 afm1 = rbf6(3,1)+rbf6(3,2)+rbf6(3,3)+
220 + rbf6(3,4)+rbf6(3,5)+rbf6(3,6)
221 afm2 = rbf6(4,1)+rbf6(4,2)+rbf6(4,3)+
222 + rbf6(4,4)+rbf6(4,5)+rbf6(4,6)
223 afm3 = rbf6(5,1)+rbf6(5,2)+rbf6(5,3)+
224 + rbf6(5,4)+rbf6(5,5)+rbf6(5,6)
225 arm1 = rbf6(6,1)+rbf6(6,2)+rbf6(6,3)+
226 + rbf6(6,4)+rbf6(6,5)+rbf6(6,6)
227 arm2 = rbf6(7,1)+rbf6(7,2)+rbf6(7,3)+
228 + rbf6(7,4)+rbf6(7,5)+rbf6(7,6)
229 arm3 = rbf6(8,1)+rbf6(8,2)+rbf6(8,3)+
230 + rbf6(8,4)+rbf6(8,5)+rbf6(8,6)
233 + rbf6(3,1)+rbf6(3,2)+rbf6(3,3)+
234 + rbf6(3,4)+rbf6(3,5)+rbf6(3,6)
236 + rbf6(4,1)+rbf6(4,2)+rbf6(4,3)+
237 + rbf6(4,4)+rbf6(4,5)+rbf6(4,6)
239 + rbf6(5,1)+rbf6(5,2)+rbf6(5,3)+
240 + rbf6(5,4)+rbf6(5,5)+rbf6(5,6)
242 + rbf6(6,1)+rbf6(6,2)+rbf6(6,3)+
243 + rbf6(6,4)+rbf6(6,5)+rbf6(6,6)
245 + rbf6(7,1)+rbf6(7,2)+rbf6(7,3)+
246 + rbf6(7,4)+rbf6(7,5)+rbf6(7,6)
248 + rbf6(8,1)+rbf6(8,2)+rbf6(8,3)+
249 + rbf6(8,4)+rbf6(8,5)+rbf6(8,6)
261 fs(1)=fs(1)+afm1*dt1*weight(m)
262 fs(2)=fs(2)+afm2*dt1*weight(m)
263 fs(3)=fs(3)+afm3*dt1*weight(m)
264 fs(4)=fs(4)+arm1*dt1*weight(m)
265 fs(5)=fs(5)+arm2*dt1*weight(m)
266 fs(6)=fs(6)+arm3*dt1*weight(m)
270 IF (cptreac > 0)
THEN
271 IF(nodreac(m) > 0)
THEN
272 fthreac(4,nodreac(m)) = fthreac(4,nodreac(m)) - am(1,m)*dt1*weight(m)
273 fthreac(5,nodreac(m)) = fthreac(5,nodreac(m)) - am(2,m)*dt1*weight(m)
274 fthreac(6,nodreac(m)) = fthreac(6,nodreac(m)) - am(3,m)*dt1*weight(m)
289 fopta(1)=afm1*weight(m)
290 fopta(2)=afm2*weight(m)
292 fopta(4)=arm1*weight(m)
293 fopta(5)=arm2*weight(m)
294 fopta(6)=arm3*weight(m)
296 IF (iparsens /= 0)
THEN
298 fbsav6(1,i) = rbf6(3,i)*weight(m)
299 fbsav6(2,i) = rbf6(4,i)*weight(m)
300 fbsav6(3,i) = rbf6(5,i)*weight(m)
301 fbsav6(4,i) = rbf6(6,i)*weight(m)
302 fbsav6(5,i) = rbf6(7,i)*weight(m)
303 fbsav6(6,i) = rbf6(8,i)*weight(m)
305 fbsav6(7,1) = af(1,m)*weight(m)
306 fbsav6(8,1) = af(2,m)*weight(m)
307 fbsav6(9,1) = af(3,m)*weight(m)
308 fbsav6(10,1) = am(1,m)*weight(m)
310 fbsav6(12,1) = am(3,m)*weight(m)
315 IF(lcod/=0.AND.imconv==1)
THEN
319 vi(1)=rby(1)*vr(1,m)+rby(2)*vr(2,m)+rby(3)*vr(3,m)
321 vi(3)=rby(7)*vr(1,m)+rby(8)*vr(2,m)+rby(9)*vr(3,m)
347 rby(17)=rby(1)*ii1 + rby(4)*ii4 + rby(7)*ii7
348 rby(18)=rby(1)*ii2 + rby(4)*ii5 + rby(7)*ii8
349 rby(19)=rby(1)*ii3 + rby(4)*ii6 + rby(7)*ii9
350 rby(20)=rby(2)*ii1 + rby(5)*ii4 + rby(8)*ii7
351 rby(21)=rby(2)*ii2 + rby(5)*ii5 + rby(8)*ii8
352 rby(22)=rby(2)*ii3 + rby(5)*ii6 + rby(8)*ii9
353 rby(23)=rby(3)*ii1 + rby(6)*ii4 + rby(9)*ii7
354 rby(24)=rby(3)*ii2 + rby(6)*ii5 + rby(9)*ii8
355 rby(25)=rby(3)*ii3 + rby(6)*ii6 + rby(9)*ii9
358 wa1=rby(17)*vr(1,m)+rby(18)*vr(2,m)+rby(19)*vr(3,m)
359 wa2=rby(20)*vr(1,m)+rby(21)*vr(2,m)+rby(22)*vr(3,m)
360 wa3=rby(23)*vr(1,m)+rby(24)*vr(2,m)+rby(25)*vr(3,m)
388 rby(21)=rby(5)*ii5 + rby(8)*ii8
389 rby(22)=rby(5)*ii6 + rby(8)*ii9
391 rby(24)=rby(6)*ii5 + rby(9)*ii8
392 rby(25)=rby(6)*ii6 + rby(9)*ii9
401 am(1,m)=am(1,m)+(wa2*vr(3,m)-wa3*vr(2,m))
402 am(2,m)=am(2,m)+(wa3*vr(1,m)-wa1*vr(3
403 am(3,m)=am(3,m)+(wa1*vr(2,m)-wa2*vr(1,m))
421 det=one/(rby(17)*rby(21)-rby(18)*rby(20))
424 am(1,m)=( rby(21)*wa1-rby(20)*wa2)*det
425 am(2,m)=(-rby(18)*wa1+rby(17)*wa2)*det
428 det=one/(rby(17)*rby(25)-rby(19)*rby(23))
431 am(1,m)=( rby(25)*wa1-rby(23)*wa2)*det
433 am(3,m)=(-rby(19)*wa1+rby(17)*wa2)*det
435 am(1,m)=am(1,m)/rby(17)
439 det=one/(rby(21)*rby(25)-rby(22)*rby(24))
443 am(2,m)=( rby(25)*wa1-rby(24)*wa2)*det
444 am(3,m)=(-rby(22)*wa1+rby(21)*wa2)*det
447 am(2,m)=am(2,m)/rby(21)
452 am(3,m)=am(3,m)/rby(25)
475 am(1,m)=skew(1,isk)*wa1+skew(2,isk)*wa2+skew(3,isk)*wa3
476 am(2,m)=skew(4,isk)*wa1+skew(5,isk)*wa2+skew(6,isk)*wa3
477 am(3,m)=skew(7,isk)*wa1+skew(8,isk)*wa2+skew(9,isk)*wa3
497 ii1=rby(17)*skew(1,isk)+rby(18)*skew(2,isk)+rby(19)*skew(3,isk)
498 ii2=rby(17)*skew(4,isk)+rby(18)*skew(5,isk)+rby(19)*skew(6,isk)
499 ii4=rby(20)*skew(1,isk)+rby(21)*skew(2,isk)+rby(22)*skew(3,isk)
500 ii5=rby(20)*skew(4,isk)+rby(21)*skew(5,isk)+rby(22)*skew(6,isk)
501 ii7=rby(23)*skew(1,isk)+rby(24)*skew(2,isk)+rby(25)*skew(3,isk)
502 ii8=rby(23)*skew(4,isk)+rby(24)*skew(5,isk)+rby(25)*skew(6,isk)
503 il1=skew(1,isk)*ii1+skew(2,isk)*ii4+skew(3,isk)*ii7
504 il2=skew(1,isk)*ii2+skew(2,isk)*ii5+skew(3,isk)*ii8
505 il4=skew(4,isk)*ii1+skew(5,isk)*ii4+skew(6,isk)*ii7
506 il5=skew(4,isk)*ii2+skew(5,isk)*ii5+skew(6,isk)*ii8
508 det=one/(il1*il5-il2*il4)
511 am(1,m)=( il5*wa1-il4*wa2)*det
512 am(2,m)=(-il2*wa1+il1*wa2)*det
516 ii1=rby(17)*skew(1,isk)+rby(18)*skew(2,isk)+rby(19)*skew(3,isk)
517 ii3=rby(17)*skew(7,isk)+rby(18)*skew(8,isk)+rby(19)*skew(9,isk)
518 ii4=rby(20)*skew(1,isk)+rby(21)*skew(2,isk)+rby(22)*skew(3,isk)
519 ii6=rby(20)*skew(7,isk)+rby(21)*skew(8,isk)+rby(22)*skew(9,isk)
520 ii7=rby(23)*skew(1,isk)+rby(24)*skew(2,isk)+rby(25)*skew(3,isk)
521 ii9=rby(23)*skew(7,isk)+rby(24)*skew(8,isk)+rby(25)*skew(9,isk
522 il1=skew(1,isk)*ii1+skew(2,isk)*ii4+skew(3,isk)*ii7
523 il3=skew(1,isk)*ii3+skew(2,isk)*ii6+skew(3,isk)*ii9
524 il7=skew(7,isk)*ii1+skew(8,isk)*ii4+skew(9,isk)*ii7
525 il9=skew(7,isk)*ii3+skew(8,isk)*ii6+skew(9,isk)*ii9
527 det=one/(il1*il9-il3*il7)
530 am(1,m)=( il9*wa1-il7*wa2)*det
532 am(3,m)=(-il3*wa1+il1*wa2)*det
535 ii1=rby(17)*skew(1,isk)+rby(18)*skew(2,isk)+rby(19)*skew(3,isk)
536 ii4=rby(20)*skew(1,isk)+rby(21)*skew(2,isk)+rby(22)*skew(3,isk)
537 ii7=rby(23)*skew(1,isk)+rby(24)*skew(2,isk)+rby(25)*skew(3,isk)
538 il1=skew(1,isk)*ii1+skew(2,isk)*ii4+skew(3,isk)*ii7
546 ii2=rby(17)*skew(4,isk)+rby(18)*skew(5,isk)+rby(19)*skew(6,isk)
547 ii3=rby(17)*skew(7,isk)+rby(18)*skew(8,isk)+rby(19)*skew(9,isk)
548 ii5=rby(20)*skew(4,isk)+rby(21)*skew(5,isk)+rby(22)*skew(6,isk)
549 ii6=rby(20)*skew(7,isk)+rby(21)*skew(8,isk)+rby(22)*skew(9,isk)
550 ii8=rby(23)*skew(4,isk)+rby(24)*skew(5,isk)+rby(25)*skew(6,isk)
551 ii9=rby(23)*skew(7,isk)+rby(24)*skew(8,isk)+rby(25)*skew(9,isk)
552 il5=skew(4,isk)*ii2+skew(5,isk)*ii5+skew(6,isk)*ii8
553 il6=skew(4,isk)*ii3+skew(5,isk)*ii6+skew(6,isk)*ii9
554 il8=skew(7,isk)*ii2+skew(8,isk)*ii5+skew(9,isk)*ii8
555 il9=skew(7,isk)*ii3+skew(8,isk)*ii6+skew(9,isk)*ii9
557 det=one/(il5*il9-il6*il8)
561 am(2,m)=( il9*wa1-il8*wa2)*det
562 am(3,m)=(-il6*wa1+il5*wa2)*det
565 ii2=rby(17)*skew(4,isk)+rby(18)*skew(5,isk)+rby(19)*skew(6,isk)
566 ii5=rby(20)*skew(4,isk)+rby(21)*skew(5,isk)+rby(22)*skew(6,isk)
567 ii8=rby(23)*skew(4,isk)+rby(24)*skew(5,isk)+rby(25)*skew(6,isk)
568 il5=skew(4,isk)*ii2+skew(5,isk)*ii5+skew(6,isk)*ii8
576 ii3=rby(17)*skew(7,isk)+rby(18)*skew(8,isk)+rby(19)*skew(9,isk)
577 ii6=rby(20)*skew(7,isk)+rby(21)*skew(8,isk)+rby(22)*skew(9,isk)
578 ii9=rby(23)*skew(7,isk)+rby(24)*skew(8,isk)+rby(25)*skew(9,isk)
579 il9=skew(7,isk)*ii3+skew(8,isk)*ii6+skew(9,isk)*ii9
597 am(1,m)=skew(1,isk)*wa1+skew(4,isk)*wa2+skew(7,isk)*wa3
598 am(2,m)=skew(2,isk)*wa1+skew(5,isk)*wa2+skew(8,isk)*wa3
599 am(3,m)=skew(3,isk)*wa1+skew(6,isk)*wa2+skew(9,isk)*wa3
604 am(1,m)=in(m)*am(1,m)
605 am(2,m)=in(m)*am(2,m)
606 am(3,m)=in(m)*am(3,m)
608 ELSEIF (imconv==1)
THEN
612 vi(1)=rby(1)*vr(1,m)+rby(2)*vr(2,m)+rby(3)*vr(3,m)
613 vi(2)=rby(4)*vr(1,m)+rby(5)*vr(2,m)+rby(6)*vr(3,m)
614 vi(3)=rby(7)*vr(1,m)+rby(8)*vr(2,m)+rby(9)*vr(3,m)
621 vi(1)=rby(1)*vr(1,m)+rby(2)*vr(2,m)+rby(3)*vr(3,m)
622 vi(2)=rby(4)*vr(1,m)+rby(5)*vr(2,m)+rby(6)*vr(3,m)
623 vi(3)=rby(7)*vr(1,m)+rby(8)*vr(2,m)+rby(9)*vr(3,m)
627 am(1,m)=rby(1)*wa1+rby(2)*wa2+rby(3)*wa3
628 am(2,m)=rby(4)*wa1+rby(5)*wa2+rby(6)*wa3
629 am(3,m)=rby(7)*wa1+rby(8)*wa2+rby(9)*wa3
631 am(1,m) = am(1,m) + (rby(11)-rby(12))*vi(2)*vi(3)
632 am(2,m) = am(2,m) + (rby(12)-rby(10))*vi(3)*vi(1)
633 am(3,m) = am(3,m) + (rby(10)-rby(11))*vi(1)*vi(2)
640 wa1 = am(1,m)*in(m)/rby(10)
641 wa2 = am(2,m)*in(m)/rby(11)
642 wa3 = am(3,m)*in(m)/rby(12)
649 am(1,m)=rby(1)*wa1+rby(4)*wa2+rby(7)*wa3
650 am(2,m)=rby(2)*wa1+rby(5)*wa2+rby(8)*wa3
651 am(3,m)=rby(3)*wa1+rby(6)*wa2+rby(9)*wa3
663 rby(17)=rby(1)*ii1 + rby(4)*ii4 + rby(7)*ii7
664 rby(18)=rby(1)*ii2 + rby(4)*ii5 + rby(7)*ii8
665 rby(19)=rby(1)*ii3 + rby(4)*ii6 + rby(7)*ii9
666 rby(20)=rby(2)*ii1 + rby(5)*ii4 + rby(8)*ii7
667 rby(21)=rby(2)*ii2 + rby(5)*ii5 + rby(8)*ii8
668 rby(22)=rby(2)*ii3 + rby(5)*ii6 + rby(8)*ii9
669 rby(23)=rby(3)*ii1 + rby(6)*ii4 + rby(9)*ii7
670 rby(24)=rby(3)*ii2 + rby(6)*ii5 + rby(9)*ii8
671 rby(25)=rby(3)*ii3 + rby(6)*ii6 + rby(9)*ii9
682 wa3 = am(3,m)*in(m)/rby(12)
712 wa1 = am(1,m)*in(m)/rby(10)
732 rby(21)=rby(5)*ii5 + rby(8)*ii8
733 rby(22)=rby(5)*ii6 + rby(8)*ii9
735 rby(24)=rby(6)*ii5 + rby(9)*ii8
736 rby(25)=rby(6)*ii6 + rby(9)*ii9