60 P VDX1, VDX2, VDX3, VDX4,
61 Q VDX5, VDX6, VDX7, VDX8,
62 R VDY1, VDY2, VDY3, VDY4,
63 S VDY5, VDY6, VDY7, VDY8,
64 T VDZ1, VDZ2, VDZ3, VDZ4,
65 U VDZ5, VDZ6, VDZ7, VDZ8,
66 V VDX, VDY, VDZ, DELTAX,
67 W VIS, MAT, QMV, BUFMAT,
68 X IPARG1, IXS, IAD22, NC1,
70 Z NC6, NC7, NC8, NALE,
76 use element_mod ,
only : nixs
80#include "implicit_f.inc"
94 INTEGER,
INTENT(IN) :: NFT
95 INTEGER,
INTENT(IN) :: MTN
96 INTEGER,
INTENT(IN) :: NEL
98 . PM(NPROPM,NUMMAT), RHO(*),VOL(*),
99 . X1(*),X2(*),X3(*),X4(*),X5(*),X6(*),X7(*),X8(*),
100 . Y1(*),Y2(*),Y3(*),Y4(*),Y5(*),Y6(*),Y7(*),Y8(*),
101 . Z1(*),Z2(*),Z3(*),Z4(*),Z5(*),Z6(*),Z7(*),Z8(*),
102 . VX1(*),VX2(*),VX3(*),VX4(*),VX5(*),VX6(*),VX7(*),VX8(*),
103 . VY1(*),VY2(*),VY3(*),VY4(*),VY5(*),VY6(*),VY7(*),VY8(*),
104 . VZ1(*),VZ2(*),VZ3(*),VZ4(*),VZ5(*),VZ6(*),VZ7(*),VZ8(*),
105 . F11(*),F21(*),F31(*),F12(*),F22(*),F32(*),
106 . F13(*),F23(*),F33(*),F14(*),F24(*),F34(*),
107 . F15(*),F25(*),F35(*),F16(*),F26(*),F36(*),
108 . F17(*),F27(*),F37(*),F18(*),F28(*),F38(*),
109 . PX1(*),PX2(*),PX3(*),PX4(*),
110 . PY1(*),PY2(*),PY3(*),PY4(*),
111 . pz1(*),pz2(*),pz3(*),pz4(*),
112 . dxx(*),dxy(*),dxz(*),
113 . dyx(*),dyy(*),dyz(*),
114 . dzx(*),dzy(*),dzz(*),
115 . vdx1(*),vdx2(*),vdx3(*),vdx4(*),
116 . vdx5(*),vdx6(*),vdx7(*),vdx8(*),
117 . vdy1(*),vdy2(*),vdy3(*),vdy4(*),
118 . vdy5(*),vdy6(*),vdy7(*),vdy8(*),
119 . vdz1(*),vdz2(*),vdz3(*),vdz4(*),
120 . vdz5(*),vdz6(*),vdz7(*),vdz8(*),
121 . vdx(*),vdy(*),vdz(*),
122 . deltax(*),vis(*),qmv(12,*),bufmat(*),iad22(*)
123 INTEGER MAT(*),IPARG1(*),IXS(NIXS,*),
124 . NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*), NC8(*),
126 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
131 . v12(mvsiz,3),v23(mvsiz,3),v43(mvsiz,3),v14(mvsiz,3),
132 . v56(mvsiz,3),v67(mvsiz,3),v87(mvsiz,3),v58(mvsiz,3),
133 . v15(mvsiz,3),v26(mvsiz,3),v37(mvsiz,3),v48(mvsiz,3),
134 . f1(mvsiz),f2(mvsiz),f3(mvsiz),
135 . a1(mvsiz),a2(mvsiz),a3(mvsiz),a4(mvsiz),gam(mvsiz),
136 . r(mvsiz,3),s(mvsiz,3),t(mvsiz,3),fac,aaa,dm,dmx,dmy,dmz,
137 . ajv(mvsiz),aj0(mvsiz,3),aj1(mvsiz,3),aj2(mvsiz,3),aj3(mvsiz,3),
138 . v43a(mvsiz,3), v43b(mvsiz,3),
139 . v87a(mvsiz,3), v87b(mvsiz,3)
140 INTEGER I,J,IADBUF,IFLG, MX
142 IF(ALE%UPWIND%UPWM == 0. and. iparg1(64) == 1)
RETURN
146 IF(mtn == 51 .AND. ale%UPWIND%UPWM /= 3 .AND. iparg1(64) == 0)
THEN
151 iadbuf = ipm(27,mat(1))
152 iflg = nint(bufmat(31+iadbuf-1))
164 IF(nint(iad22(i))/=0)cycle
166 aaa = qmv(1,i)+qmv(2,i)+qmv(3,i)+qmv(4,i)+qmv(5,i)+qmv(6,i)
168 qmv(1,i) = one_over_8 * (qmv(1,i) - aaa)
169 qmv(2,i) = one_over_8 * (qmv(2,i) - aaa)
170 qmv(3,i) = one_over_8 * (qmv(3,i) - aaa)
171 qmv(4,i) = one_over_8 * (qmv(4,i) - aaa)
172 qmv(5,i) = one_over_8 * (qmv(5,i) - aaa)
173 qmv(6,i) = one_over_8 * (qmv(6,i) - aaa)
178 dm = qmv(1,i)+qmv(6,i)+qmv(4,i)
179 dmx = dmx + vx1(i)*dm
180 dmy = dmy + vy1(i)*dm
181 dmz = dmz + vz1(i)*dm
182 dm = qmv(1,i)+qmv(4,i)+qmv(5,i)
183 dmx = dmx + vx2(i)*dm
184 dmy = dmy + vy2(i)*dm
185 dmz = dmz + vz2(i)*dm
186 dm = qmv(1,i)+qmv(5,i)+qmv(2,i)
187 dmx = dmx + vx3(i)*dm
188 dmy = dmy + vy3(i)*dm
189 dmz = dmz + vz3(i)*dm
190 dm = qmv(1,i)+qmv(2,i)+qmv(6,i)
191 dmx = dmx + vx4(i)*dm
192 dmy = dmy + vy4(i)*dm
193 dmz = dmz + vz4(i)*dm
194 dm = qmv(3,i)+qmv(6,i)+qmv(4,i)
195 dmx = dmx + vx5(i)*dm
196 dmy = dmy + vy5(i)*dm
197 dmz = dmz + vz5(i)*dm
198 dm = qmv(3,i)+qmv(4,i)+qmv(5,i)
199 dmx = dmx + vx6(i)*dm
200 dmy = dmy + vy6(i)*dm
201 dmz = dmz + vz6(i)*dm
202 dm = qmv(3,i)+qmv(5,i)+qmv(2,i)
203 dmx = dmx + vx7(i)*dm
204 dmy = dmy + vy7(i)*dm
205 dmz = dmz + vz7(i)*dm
206 dm = qmv(3,i)+qmv(2,i)+qmv(6,i)
207 dmx = dmx + vx8(i)*dm
208 dmy = dmy + vy8(i)*dm
209 dmz = dmz + vz8(i)*dm
215 dmx = -one_over_8 * dmx
216 dmy = -one_over_8 * dmy
217 dmz = -one_over_8 * dmz
219 a1(i) = px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i)
220 a2(i) = px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i)
221 a3(i) = px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i)
222 a4(i) = px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i)
223 a1(i) = sign(gam(1),a1(i))
224 a2(i) = sign(gam(1),a2(i))
225 a3(i) = sign(gam(1),a3(i))
226 a4(i) = sign(gam(1),a4(i))
228 f11(i) = f11(i) - (one+a1(i))*dmx
229 f12(i) = f12(i) - (one+a2(i))*dmx
230 f13(i) = f13(i) - (one+a3(i))*dmx
231 f14(i) = f14(i) - (one+a4(i))*dmx
232 f15(i) = f15(i) - (one-a3(i))*dmx
233 f16(i) = f16(i) - (one-a4(i))*dmx
234 f17(i) = f17(i) - (one-a1(i))*dmx
235 f18(i) = f18(i) - (one-a2(i))*dmx
237 f21(i) = f21(i) - (one+a1(i))*dmy
238 f22(i) = f22(i) - (one+a2(i))*dmy
239 f23(i) = f23(i) - (one+a3(i))*dmy
240 f24(i) = f24(i) - (one+a4(i))*dmy
241 f25(i) = f25(i) - (one-a3(i))*dmy
242 f26(i) = f26(i) - (one-a4(i))*dmy
243 f27(i) = f27(i) - (one-a1(i))*dmy
244 f28(i) = f28(i) - (one-a2(i))*dmy
246 f31(i) = f31(i) - (one+a1(i))*dmz
247 f32(i) = f32(i) - (one+a2(i))*dmz
248 f33(i) = f33(i) - (one+a3(i))*dmz
249 f34(i) = f34(i) - (one+a4(i))*dmz
250 f35(i) = f35(i) - (one-a3(i))*dmz
251 f36(i) = f36(i) - (one-a4(i))*dmz
252 f37(i) = f37(i) - (one-a1(i))*dmz
253 f38(i) = f38(i) - (one-a2(i))*dmz
269 IF(ale%UPWIND%UPWM>1)
THEN
316 ! node 8 : v87,v58,v48
325 IF(ixs(5,i+nft)==ixs(4,i+nft))
THEN
326 v43a(i,1)=x3(i)-x1(i)
327 v43a(i,2)=y3(i)-y1(i)
328 v43a(i,3)=z3(i)-z1(i)
329 v43b(i,1)=x2(i)-x3(i)
330 v43b(i,2)=y2(i)-y3(i)
331 v43b(i,3)=z2(i)-z3(i)
341 IF(ixs(9,i+nft)==ixs(8,i+nft))
THEN
342 v87a(i,1)=x7(i)-x5(i)
343 v87a(i,2)=y7(i)-y5(i)
344 v87a(i,3)=z7(i)-z5(i)
345 v87b(i,1)=x6(i)-x7(i)
346 v87b(i,2)=y6(i)-y7(i)
347 v87b(i,3)=z6(i)-z7(i)
360 r(i,j)=fourth*(v12(i,j)+v56(i,j)+v43(i,j)+v87(i,j))
361 s(i,j)=fourth*(v23(i,j)+v14(i,j)+v58(i,j)+v67(i,j))
362 t(i,j)=fourth*(v15(i,j)+v26(i,j)+v37(i,j)+v48(i,j))
371 IF(ale%UPWIND%UPWM<=1 .OR.iparg1(64)==1)
THEN
373 IF((iparg1(64)==1))
THEN
376 a1(i) =(px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i))
377 a2(i) =(px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i))
378 a3(i) =(px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i))
379 a4(i) =(px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i))
380 a1(i) = sign(one,a1(i))
381 a2(i) = sign(one,a2(i))
382 a3(i) = sign(one,a3(i))
383 a4(i) = sign(one,a4(i))
386 IF(ale%UPWIND%UPWM==zero)
THEN
393 gam(i)= ale%UPWIND%CUPWM
397 a1(i) = px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i)
398 a2(i) = px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i)
399 a3(i) = px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i)
400 a4(i) = px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i)
401 a1(i) = sign(gam(1),a1(i))
402 a2(i) = sign(gam(1),a2(i))
403 a3(i) = sign(gam(1),a3(i))
404 a4(i) = sign(gam(1),a4(i))
409 fac = one_over_8*rho(i)*vol(i)
410 f1(i) = (vdx(i)*dxx(i)+vdy(i)*dxy(i)+vdz(i)*dxz(i))*fac
411 f2(i) = (vdx(i)*dyx(i)+vdy(i)*dyy(i)+vdz(i)*dyz(i))*fac
412 f3(i) = (vdx(i)*dzx(i)+vdy(i)*dzy(i)+vdz(i)*dzz(i))*fac
419 IF(nint(iad22(i))==0)cycle
429 f11(i) = f11(i) - (one+a1(i))*f1(i)
430 f12(i) = f12(i) - (one+a2(i))*f1(i)
431 f13(i) = f13(i) - (one+a3(i))*f1(i)
432 f14(i) = f14(i) - (one+a4(i))*f1(i)
433 f15(i) = f15(i) - (one-a3(i))*f1(i)
434 f16(i) = f16(i) - (one-a4(i))*f1(i)
435 f17(i) = f17(i) - (one-a1(i))*f1(i)
436 f18(i) = f18(i) - (one-a2(i))*f1(i)
438 f21(i) = f21(i) - (one+a1(i))*f2(i)
439 f22(i) = f22(i) - (one+a2(i))*f2(i)
440 f23(i) = f23(i) - (one+a3(i))*f2(i)
441 f24(i) = f24(i) - (one+a4(i))*f2(i)
442 f25(i) = f25(i) - (one-a3(i))*f2(i)
443 f26(i) = f26(i) - (one-a4(i))*f2(i)
444 f27(i) = f27(i) - (one-a1(i))*f2(i)
445 f28(i) = f28(i) - (one-a2(i))*f2(i)
447 f31(i) = f31(i) - (one+a1(i))*f3(i)
448 f32(i) = f32(i) - (one+a2(i))*f3(i)
449 f33(i) = f33(i) - (one+a3(i))*f3(i)
450 f34(i) = f34(i) - (one+a4(i))*f3(i)
451 f35(i) = f35(i) - (one-a3(i))*f3(i)
452 f36(i) = f36(i) - (one-a4(i))*f3(i)
453 f37(i) = f37(i) - (one-a1(i))*f3(i)
454 f38(i) = f38(i) - (one-a2(i))*f3(i)
466 1 v12, v14, v15, aj1,
467 2 aj2, aj3, ajv, nel)
469 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
470 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
471 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
474 1 rho, deltax, vis, vol,
475 2 aj0, aj1, aj2, aj3,
477 4 vdx1, vdy1, vdz1, vx1,
478 5 vy1, vz1, vx2, vy2,
479 6 vz2, vx4, vy4, vz4,
480 7 vx5, vy5, vz5, f11,
481 8 f21, f31, f12, f22,
482 9 f32, f14, f24, f34,
483 a f15, f25, f35, f13,
484 b f23, f33, f16, f26,
485 c f36, f17, f27, f37,
486 d f18, f28, f38, iad22,
487 e nc1, nc2, nc3, nc4,
488 f nc5, nc6, nc7, nc8,
492 1 v12, v23, v26, aj1,
493 2 aj2, aj3, ajv, nel)
498 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
499 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
500 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
503 1 rho, deltax, vis, vol,
504 2 aj0, aj1, aj2, aj3,
506 4 vdx2, vdy2, vdz2, vx2,
507 5 vy2, vz2, vx1, vy1,
508 6 vz1, vx3, vy3, vz3,
509 7 vx6, vy6, vz6, f12,
510 8 f22, f32, f11, f21,
511 9 f31, f13, f23, f33,
512 a f16, f26, f36, f14,
513 b f24, f34, f15, f25,
514 c f35, f17, f27, f37,
515 d f18, f28, f38, iad22,
516 e nc1, nc2, nc3, nc4,
517 f nc5, nc6, nc7, nc8,
521 1 v43a, v23, v37, aj1,
522 2 aj2, aj3, ajv, nel)
530 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
531 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
532 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
535 1 rho, deltax, vis, vol,
536 2 aj0, aj1, aj2, aj3,
538 4 vdx3, vdy3, vdz3, vx3,
539 5 vy3, vz3, vx4, vy4,
540 6 vz4, vx2, vy2, vz2,
541 7 vx7, vy7, vz7, f13,
542 8 f23, f33, f14, f24,
543 9 f34, f12, f22, f32,
544 a f17, f27, f37, f11,
545 b f21, f31, f15, f25,
546 c f35, f16, f26, f36,
547 d f18, f28, f38, iad22,
548 e nc1, nc2, nc3, nc4,
549 f nc5, nc6, nc7, nc8,
553 1 v43b, v14, v48, aj1,
554 2 aj2, aj3, ajv, nel)
559 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
560 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
561 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
564 1 rho, deltax, vis, vol,
565 2 aj0, aj1, aj2, aj3,
567 4 vdx4, vdy4, vdz4, vx4,
568 5 vy4, vz4, vx3, vy3,
569 6 vz3, vx1, vy1, vz1,
570 7 vx8, vy8, vz8, f14,
571 8 f24, f34, f13, f23,
572 9 f33, f11, f21, f31,
573 a f18, f28, f38, f12,
574 b f22, f32, f15, f25,
575 c f35, f16, f26, f36,
576 d f17, f27, f37, iad22,
577 e nc1, nc2, nc3, nc4,
578 f nc5, nc6, nc7, nc8,
582 1 v56, v58, v15, aj1,
583 2 aj2, aj3, ajv, nel)
588 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
589 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
590 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
593 1 rho, deltax, vis, vol,
594 2 aj0, aj1, aj2, aj3,
596 4 vdx5, vdy5, vdz5, vx5,
597 5 vy5, vz5, vx6, vy6,
598 6 vz6, vx8, vy8, vz8,
599 7 vx1, vy1, vz1, f15,
600 8 f25, f35, f16, f26,
601 9 f36, f18, f28, f38,
602 a f11, f21, f31, f12,
603 b f22, f32, f13, f23,
604 c f33, f14, f24, f34,
605 d f17, f27, f37, iad22,
606 e nc1, nc2, nc3, nc4,
607 f nc5, nc6, nc7, nc8,
611 1 v56, v67, v26, aj1,
612 2 aj2, aj3, ajv, nel)
620 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
621 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
622 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
625 1 rho, deltax, vis, vol,
626 2 aj0, aj1, aj2, aj3,
628 4 vdx6, vdy6, vdz6, vx6,
629 5 vy6, vz6, vx5, vy5,
630 6 vz5, vx7, vy7, vz7,
631 7 vx2, vy2, vz2, f16,
632 8 f26, f36, f15, f25,
633 9 f35, f17, f27, f37,
634 a f12, f22, f32, f11,
635 b f21, f31, f13, f23,
636 c f33, f14, f24, f34,
637 d f18, f28, f38, iad22,
638 e nc1, nc2, nc3, nc4,
639 f nc5, nc6, nc7, nc8,
643 1 v87a, v67, v37, aj1,
644 2 aj2, aj3, ajv, nel)
655 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
656 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
657 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
660 1 rho, deltax, vis, vol,
661 2 aj0, aj1, aj2, aj3,
663 4 vdx7, vdy7, vdz7, vx7,
664 5 vy7, vz7, vx8, vy8,
665 6 vz8, vx6, vy6, vz6,
666 7 vx3, vy3, vz3, f17,
667 8 f27, f37, f18, f28,
668 9 f38, f16, f26, f36,
669 a f13, f23, f33, f11,
670 b f21, f31, f12, f22,
671 c f32, f14, f24, f34,
672 d f15, f25, f35, iad22,
673 e nc1, nc2, nc3, nc4,
674 f nc5, nc6, nc7, nc8,
678 1 v87b, v58, v48, aj1,
679 2 aj2, aj3, ajv, nel)
687 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
688 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
689 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
692 1 rho, deltax, vis, vol,
693 2 aj0, aj1, aj2, aj3,
695 4 vdx8, vdy8, vdz8, vx8,
696 5 vy8, vz8, vx7, vy7,
697 6 vz7, vx5, vy5, vz5,
698 7 vx4, vy4, vz4, f18,
699 8 f28, f38, f17, f27,
700 9 f37, f15, f25, f35,
701 a f14, f24, f34, f11,
702 b f21, f31, f12, f22,
703 c f32, f13, f23, f33,
704 d f16, f26, f36, iad22,
705 e nc1, nc2, nc3, nc4,
706 f nc5, nc6, nc7, nc8,
subroutine amomt3(pm, rho, vol, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, vx1, vx2, vx3, vx4, vx5, vx6, vx7, vx8, vy1, vy2, vy3, vy4, vy5, vy6, vy7, vy8, vz1, vz2, vz3, vz4, vz5, vz6, vz7, vz8, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, vdx1, vdx2, vdx3, vdx4, vdx5, vdx6, vdx7, vdx8, vdy1, vdy2, vdy3, vdy4, vdy5, vdy6, vdy7, vdy8, vdz1, vdz2, vdz3, vdz4, vdz5, vdz6, vdz7, vdz8, vdx, vdy, vdz, deltax, vis, mat, qmv, bufmat, iparg1, ixs, iad22, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, nale, nel, nft, mtn, ipm)