59 P VDX1, VDX2, VDX3, VDX4,
60 Q VDX5, VDX6, VDX7, VDX8,
61 R VDY1, VDY2, VDY3, VDY4,
62 S VDY5, VDY6, VDY7, VDY8,
63 T VDZ1, VDZ2, VDZ3, VDZ4,
64 U VDZ5, VDZ6, VDZ7, VDZ8,
65 V VDX, VDY, VDZ, DELTAX,
66 W VIS, MAT, QMV, BUFMAT,
67 X IPARG1, IXS, IAD22, NC1,
69 Z NC6, NC7, NC8, NALE,
78#include "implicit_f.inc"
92 INTEGER,
INTENT(IN) :: NFT
93 INTEGER,
INTENT(IN) :: MTN
94 INTEGER,
INTENT(IN) :: NEL
96 . PM(NPROPM,NUMMAT), RHO(*),VOL(*),
97 . X1(*),X2(*),X3(*),X4(*),X5(*),X6(*),X7(*),X8(*),
98 . Y1(*),Y2(*),Y3(*),Y4(*),Y5(*),Y6(*),Y7(*),Y8(*),
99 . Z1(*),Z2(*),Z3(*),Z4(*),Z5(*),Z6(*),(*),Z8(*),
100 . VX1(*),VX2(*),(*),VX4(*),VX5(*),(*),VX7(*),VX8(*),
101 . VY1(*),VY2(*),VY3(*),VY4(*),VY5(*),VY6(*),VY7(*),VY8(*),
102 . VZ1(*),VZ2(*),VZ3(*),VZ4(*),VZ5(*),VZ6(*),VZ7(*),VZ8(*),
103 . F11(*),F21(*),F31(*),F12(*),F22(*),F32(*),
104 . F13(*),F23(*),F33(*),F14(*),F24(*),F34(*),
105 . F15(*),F25(*),F35(*),F16(*),F26(*),F36(*),
106 . F17(*),F27(*),F37(*),F18(*),F28(*),F38(*),
107 . PX1(*),PX2(*),PX3(*),PX4(*),
108 . PY1(*),PY2(*),PY3(*),PY4(*),
109 . PZ1(*),PZ2(*),PZ3(*),PZ4(*),
110 . dxx(*),dxy(*),dxz(*),
111 . dyx(*),dyy(*),dyz(*),
112 . dzx(*),dzy(*),dzz(*),
113 . vdx1(*),vdx2(*),vdx3(*),vdx4(*),
114 . vdx5(*),vdx6(*),vdx7(*),vdx8(*),
115 . vdy1(*),vdy2(*),vdy3(*),vdy4(*),
116 . vdy5(*),vdy6(*),vdy7(*),vdy8(*),
117 . vdz1(*),vdz2(*),vdz3(*),vdz4(*),
118 . vdz5(*),vdz6(*),vdz7(*),vdz8(*),
119 . vdx(*),vdy(*),vdz(*),
120 . deltax(*),vis(*),qmv(12,*),bufmat(*),iad22(*)
121 INTEGER MAT(*),IPARG1(*),IXS(NIXS,*),
122 . NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*), NC8(*),
124 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
129 . v12(mvsiz,3),v23(mvsiz,3),v43(mvsiz,3),v14(mvsiz,3),
130 . v56(mvsiz,3),v67(mvsiz,3),v87(mvsiz,3),v58(mvsiz,3),
131 . v15(mvsiz,3),v26(mvsiz,3),v37(mvsiz,3),v48(mvsiz,3),
132 . f1(mvsiz),f2(mvsiz),f3(mvsiz),
133 . a1(mvsiz),a2(mvsiz),a3(mvsiz),a4(mvsiz),gam(mvsiz),
134 . r(mvsiz,3),s(mvsiz,3),t(mvsiz,3),fac,aaa,dm,dmx,dmy,dmz,
135 . ajv(mvsiz),aj0(mvsiz,3),aj1(mvsiz,3),aj2(mvsiz,3),aj3(mvsiz,3),
136 . v43a(mvsiz,3), v43b(mvsiz,3),
137 . v87a(mvsiz,3), v87b(mvsiz,3)
138 INTEGER I,J,IADBUF,IFLG, MX
140 IF(ALE%UPWIND%UPWM == 0. and. iparg1(64) == 1)
RETURN
144 IF(mtn == 51 .AND. ale%UPWIND%UPWM /= 3 .AND. iparg1(64) == 0)
THEN
149 iadbuf = ipm(27,mat(1))
150 iflg = nint(bufmat(31+iadbuf-1))
162 IF(nint(iad22(i))/=0)cycle
164 aaa = qmv(1,i)+qmv(2,i)+qmv(3,i)+qmv(4,i)+qmv(5,i)+qmv(6,i)
166 qmv(1,i) = one_over_8 * (qmv(1,i) - aaa)
167 qmv(2,i) = one_over_8 * (qmv(2,i) - aaa)
168 qmv(3,i) = one_over_8 * (qmv(3,i) - aaa)
169 qmv(4,i) = one_over_8 * (qmv(4,i) - aaa)
170 qmv(5,i) = one_over_8 * (qmv(5,i) - aaa)
171 qmv(6,i) = one_over_8 * (qmv(6,i) - aaa)
176 dm = qmv(1,i)+qmv(6,i)+qmv(4,i)
177 dmx = dmx + vx1(i)*dm
178 dmy = dmy + vy1(i)*dm
179 dmz = dmz + vz1(i)*dm
180 dm = qmv(1,i)+qmv(4,i)+qmv(5,i)
181 dmx = dmx + vx2(i)*dm
182 dmy = dmy + vy2(i)*dm
183 dmz = dmz + vz2(i)*dm
184 dm = qmv(1,i)+qmv(5,i)+qmv(2,i)
185 dmx = dmx + vx3(i)*dm
186 dmy = dmy + vy3(i)*dm
187 dmz = dmz + vz3(i)*dm
188 dm = qmv(1,i)+qmv(2,i)+qmv(6,i)
189 dmx = dmx + vx4(i)*dm
190 dmy = dmy + vy4(i)*dm
191 dmz = dmz + vz4(i)*dm
192 dm = qmv(3,i)+qmv(6,i)+qmv(4,i)
193 dmx = dmx + vx5(i)*dm
194 dmy = dmy + vy5(i)*dm
195 dmz = dmz + vz5(i)*dm
196 dm = qmv(3,i)+qmv(4,i)+qmv(5,i)
197 dmx = dmx + vx6(i)*dm
198 dmy = dmy + vy6(i)*dm
199 dmz = dmz + vz6(i)*dm
200 dm = qmv(3,i)+qmv(5,i)+qmv(2,i)
201 dmx = dmx + vx7(i)*dm
202 dmy = dmy + vy7(i)*dm
203 dmz = dmz + vz7(i)*dm
204 dm = qmv(3,i)+qmv(2,i)+qmv(6,i)
205 dmx = dmx + vx8(i)*dm
206 dmy = dmy + vy8(i)*dm
207 dmz = dmz + vz8(i)*dm
213 dmx = -one_over_8 * dmx
214 dmy = -one_over_8 * dmy
215 dmz = -one_over_8 * dmz
217 a1(i) = px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i)
218 a2(i) = px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i)
219 a3(i) = px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i)
220 a4(i) = px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i)
221 a1(i) = sign(gam(1),a1(i))
222 a2(i) = sign(gam(1),a2(i))
223 a3(i) = sign(gam(1),a3
224 a4(i) = sign(gam(1),a4(i))
226 f11(i) = f11(i) - (one+a1(i))*dmx
227 f12(i) = f12(i) - (one+a2(i))*dmx
228 f13(i) = f13(i) - (one+a3(i))*dmx
229 f14(i) = f14(i) - (one+a4(i))*dmx
230 f15(i) = f15(i) - (one-a3(i))*dmx
231 f16(i) = f16(i) - (one-a4(i))*dmx
232 f17(i) = f17(i) - (one-a1(i))*dmx
233 f18(i) = f18(i) - (one-a2(i))*dmx
235 f21(i) = f21(i) - (one+a1(i))*dmy
236 f22(i) = f22(i) - (one+a2(i))*dmy
237 f23(i) = f23(i) - (one+a3(i))*dmy
238 f24(i) = f24(i) - (one+a4(i))*dmy
239 f25(i) = f25(i) - (one-a3(i))*dmy
240 f26(i) = f26(i) - (one-a4(i))*dmy
241 f27(i) = f27(i) - (one-a1(i))*dmy
242 f28(i) = f28(i) - (one-a2(i))*dmy
244 f31(i) = f31(i) - (one+a1(i))*dmz
245 f32(i) = f32(i) - (one+a2(i))*dmz
246 f33(i) = f33(i) - (one+a3(i))*dmz
247 f34(i) = f34(i) - (one+a4(i))*dmz
248 f35(i) = f35(i) - (one-a3(i))*dmz
249 f36(i) = f36(i) - (one-a4(i))*dmz
250 f37(i) = f37(i) - (one-a1(i))*dmz
251 f38(i) = f38(i) - (one-a2(i))*dmz
267 IF(ale%UPWIND%UPWM>1)
THEN
311 ! node 5 : v56,v58,v15
323 IF(ixs(5,i+nft)==ixs(4,i+nft))
THEN
324 v43a(i,1)=x3(i)-x1(i)
325 v43a(i,2)=y3(i)-y1(i)
326 v43a(i,3)=z3(i)-z1(i)
327 v43b(i,1)=x2(i)-x3(i)
328 v43b(i,2)=y2(i)-y3(i)
329 v43b(i,3)=z2(i)-z3(i)
339 IF(ixs(9,i+nft)==ixs(8,i+nft))
THEN
340 v87a(i,1)=x7(i)-x5(i)
341 v87a(i,2)=y7(i)-y5(i)
342 v87a(i,3)=z7(i)-z5(i)
343 v87b(i,1)=x6(i)-x7(i)
344 v87b(i,2)=y6(i)-y7(i)
345 v87b(i,3)=z6(i)-z7(i)
358 r(i,j)=fourth*(v12(i,j)+v56(i,j)+v43(i,j)+v87(i,j))
359 s(i,j)=fourth*(v23(i,j)+v14(i,j)+v58(i,j)+v67(i,j))
360 t(i,j)=fourth*(v15(i,j)+v26
369 IF(ale%UPWIND%UPWM<=1 .OR.iparg1(64)==1)
THEN
371 IF((iparg1(64)==1))
THEN
374 a1(i) =(px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i))
375 a2(i) =(px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i))
376 a3(i) =(px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i))
377 a4(i) =(px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i))
378 a1(i) = sign(one,a1(i))
379 a2(i) = sign(one,a2(i))
380 a3(i) = sign(one,a3(i))
381 a4(i) = sign(one,a4(i))
384 IF(ale%UPWIND%UPWM==zero)
THEN
391 gam(i)= ale%UPWIND%CUPWM
395 a1(i) = px1(i)*vdx(i)+py1(i)*vdy(i)+pz1(i)*vdz(i)
396 a2(i) = px2(i)*vdx(i)+py2(i)*vdy(i)+pz2(i)*vdz(i)
397 a3(i) = px3(i)*vdx(i)+py3(i)*vdy(i)+pz3(i)*vdz(i)
398 a4(i) = px4(i)*vdx(i)+py4(i)*vdy(i)+pz4(i)*vdz(i)
399 a1(i) = sign(gam(1),a1(i))
400 a2(i) = sign(gam(1),a2(i))
402 a4(i) = sign(gam(1),a4(i))
407 fac = one_over_8*rho(i)*vol(i)
408 f1(i) = (vdx(i)*dxx(i)+vdy(i)*dxy(i)+vdz(i)*dxz(i))*fac
409 f2(i) = (vdx(i)*dyx(i)+vdy(i)*dyy(i)+vdz(i)*dyz(i))*fac
410 f3(i) = (vdx(i)*dzx(i)+vdy(i)*dzy(i)+vdz(i)*dzz(i))*fac
417 IF(nint(iad22(i))==0)cycle
427 f11(i) = f11(i) - (one+a1(i))*f1(i)
428 f12(i) = f12(i) - (one+a2(i))*f1(i)
429 f13(i) = f13(i) - (one+a3(i))*f1(i)
430 f14(i) = f14(i) - (one+a4(i))*f1(i)
431 f15(i) = f15(i) - (one-a3(i))*f1(i)
432 f16(i) = f16(i) - (one-a4(i))*f1(i)
433 f17(i) = f17(i) - (one-a1(i))*f1(i)
434 f18(i) = f18(i) - (one-a2(i))*f1(i)
436 f21(i) = f21(i) - (one+a1(i))*f2(i)
437 f22(i) = f22(i) - (one+a2(i))*f2(i)
438 f23(i) = f23(i) - (one+a3(i))*f2(i)
439 f24(i) = f24(i) - (one+a4(i))*f2(i)
440 f25(i) = f25(i) - (one-a3(i))*f2(i)
441 f26(i) = f26(i) - (one-a4(i))*f2(i)
442 f27(i) = f27(i) - (one-a1(i))*f2(i)
443 f28(i) = f28(i) - (one-a2(i))*f2(i)
445 f31(i) = f31(i) - (one+a1(i))*f3(i)
446 f32(i) = f32(i) - (one+a2(i))*f3(i)
447 f33(i) = f33(i) - (one+a3(i))*f3(i)
448 f34(i) = f34(i) - (one+a4(i))*f3(i)
449 f35(i) = f35(i) - (one-a3(i))*f3(i)
450 f36(i) = f36(i) - (one-a4(i))*f3(i)
451 f37(i) = f37(i) - (one-a1(i))*f3(i)
452 f38(i) = f38(i) - (one-a2(i))*f3(i)
464 1 v12, v14, v15, aj1,
465 2 aj2, aj3, ajv, nel)
467 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
468 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
469 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
472 1 rho, deltax, vis, vol,
473 2 aj0, aj1, aj2, aj3,
475 4 vdx1, vdy1, vdz1, vx1,
476 5 vy1, vz1, vx2, vy2,
477 6 vz2, vx4, vy4, vz4,
478 7 vx5, vy5, vz5, f11,
479 8 f21, f31, f12, f22,
481 a f15, f25, f35, f13,
483 c f36, f17, f27, f37,
484 d f18, f28, f38, iad22,
485 e nc1, nc2, nc3, nc4,
486 f nc5, nc6, nc7, nc8,
490 1 v12, v23, v26, aj1,
491 2 aj2, aj3, ajv, nel)
496 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
497 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
498 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,
501 1 rho, deltax, vis, vol,
502 2 aj0, aj1, aj2, aj3,
504 4 vdx2, vdy2, vdz2, vx2,
506 6 vz1, vx3, vy3, vz3,
507 7 vx6, vy6, vz6, f12,
508 8 f22, f32, f11, f21,
509 9 f31, f13, f23, f33,
510 a f16, f26, f36, f14,
511 b f24, f34, f15, f25,
512 c f35, f17, f27, f37,
513 d f18, f28, f38, iad22,
514 e nc1, nc2, nc3, nc4,
515 f nc5, nc6, nc7, nc8,
519 1 v43a, v23, v37, aj1,
520 2 aj2, aj3, ajv, nel)
528 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
529 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
530 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
533 1 rho, deltax, vis, vol,
534 2 aj0, aj1, aj2, aj3,
536 4 vdx3, vdy3, vdz3, vx3,
537 5 vy3, vz3, vx4, vy4,
538 6 vz4, vx2, vy2, vz2,
539 7 vx7, vy7, vz7, f13,
540 8 f23, f33, f14, f24,
541 9 f34, f12, f22, f32,
542 a f17, f27, f37, f11,
543 b f21, f31, f15, f25,
544 c f35, f16, f26, f36,
545 d f18, f28, f38, iad22,
546 e nc1, nc2, nc3, nc4,
551 1 v43b, v14, v48, aj1,
552 2 aj2, aj3, ajv, nel)
557 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
558 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
559 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
562 1 rho, deltax, vis, vol,
563 2 aj0, aj1, aj2, aj3,
565 4 vdx4, vdy4, vdz4, vx4,
566 5 vy4, vz4, vx3, vy3,
567 6 vz3, vx1, vy1, vz1,
568 7 vx8, vy8, vz8, f14,
569 8 f24, f34, f13, f23,
570 9 f33, f11, f21, f31,
571 a f18, f28, f38, f12,
572 b f22, f32, f15, f25,
573 c f35, f16, f26, f36,
574 d f17, f27, f37, iad22,
575 e nc1, nc2, nc3, nc4,
576 f nc5, nc6, nc7, nc8,
580 1 v56, v58, v15, aj1,
581 2 aj2, aj3, ajv, nel)
586 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
587 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
588 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
591 1 rho, deltax, vis, vol,
592 2 aj0, aj1, aj2, aj3,
594 4 vdx5, vdy5, vdz5, vx5,
595 5 vy5, vz5, vx6, vy6,
596 6 vz6, vx8, vy8, vz8,
597 7 vx1, vy1, vz1, f15,
598 8 f25, f35, f16, f26,
599 9 f36, f18, f28, f38,
600 a f11, f21, f31, f12,
601 b f22, f32, f13, f23,
602 c f33, f14, f24, f34,
603 d f17, f27, f37, iad22,
604 e nc1, nc2, nc3, nc4,
605 f nc5, nc6, nc7, nc8,
609 1 v56, v67, v26, aj1,
610 2 aj2, aj3, ajv, nel)
618 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
619 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
620 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
623 1 rho, deltax, vis, vol,
624 2 aj0, aj1, aj2, aj3,
626 4 vdx6, vdy6, vdz6, vx6,
627 5 vy6, vz6, vx5, vy5,
628 6 vz5, vx7, vy7, vz7,
629 7 vx2, vy2, vz2, f16,
630 8 f26, f36, f15, f25,
631 9 f35, f17, f27, f37,
632 a f12, f22, f32, f11,
633 b f21, f31, f13, f23,
634 c f33, f14, f24, f34,
635 d f18, f28, f38, iad22,
636 e nc1, nc2, nc3, nc4,
637 f nc5, nc6, nc7, nc8,
641 1 v87a, v67, v37, aj1,
642 2 aj2, aj3, ajv, nel)
653 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
654 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
655 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
658 1 rho, deltax, vis, vol,
659 2 aj0, aj1, aj2, aj3,
661 4 vdx7, vdy7, vdz7, vx7,
662 5 vy7, vz7, vx8, vy8,
663 6 vz8, vx6, vy6, vz6,
664 7 vx3, vy3, vz3, f17,
665 8 f27, f37, f18, f28,
666 9 f38, f16, f26, f36,
667 a f13, f23, f33, f11,
668 b f21, f31, f12, f22,
669 c f32, f14, f24, f34,
670 d f15, f25, f35, iad22,
671 e nc1, nc2, nc3, nc4,
672 f nc5, nc6, nc7, nc8,
676 1 v87b, v58, v48, aj1,
677 2 aj2, aj3, ajv, nel)
685 aj0(i,1)=-(aj1(i,1)+aj2(i,1)+aj3(i,1))
686 aj0(i,2)=-(aj1(i,2)+aj2(i,2)+aj3(i,2))
687 aj0(i,3)=-(aj1(i,3)+aj2(i,3)+aj3(i,3))
690 1 rho, deltax, vis, vol,
691 2 aj0, aj1, aj2, aj3,
693 4 vdx8, vdy8, vdz8, vx8,
694 5 vy8, vz8, vx7, vy7,
695 6 vz7, vx5, vy5, vz5,
696 7 vx4, vy4, vz4, f18,
697 8 f28, f38, f17, f27,
698 9 f37, f15, f25, f35,
699 a f14, f24, f34, f11,
700 b f21, f31, f12, f22,
701 c f32, f13, f23, f33,
703 e nc1, nc2, nc3, nc4,
704 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)