33 use element_mod , only : nixq
34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "mvsiz_p.inc"
42#include "com01_c.inc"
43#include "com04_c.inc"
44#include "com08_c.inc"
45#include "vect01_c.inc"
46
47
48
49 INTEGER IFLG, IXQ(NIXQ, NUMELQ)
50 INTEGER,INTENT(IN) :: IOFF
51 my_real vtot(*), phi(*), flux(4,*), flu1(*), qmv(8,*), x(3,numnod)
52 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
53
54
55
56 INTEGER I, J,IE, , IAD2, LGTH
57 my_real vl(6,mvsiz), r1, r2, r3, r4
58
59
60
61 DO i=lft,llt
62 ie =nft+i
63 iad2 = ale_connect%ee_connect%iad_connect(ie)
64 lgth = ale_connect%ee_connect%iad_connect(ie+1) - iad2
65 DO j=1,lgth
66 iv = ale_connect%ee_connect%connected(iad2 + j - 1)
67 IF(iv > 0)THEN
68 vl(j,i)=phi(iv)*flux(j,i)
69 ELSEIF(iv == 0)THEN
70 vl(j,i)=phi(ie)*flux(j,i)
71 ELSE
72
73
74
75 vl(j,i) = phi(-iv+ioff) *flux(j,i)
76 ENDIF
77 ENDDO
78 ENDDO
79
80 DO i=lft,llt
81 ie =nft+i
82 vtot(i) = vtot(i) + half * dt1 * (- phi(ie)*flu1(i) - vl(1,i)-vl(2,i)-vl(3,i)-vl(4,i) )
83 vtot(i)=
max(em20,vtot(i))
84 ENDDO
85
86 IF(trimat > 0 .AND. iflg == 1)THEN
87 IF (n2d == 1) THEN
88 DO i=lft,llt
89 ie =nft+i
90 r1 = half * (x(2, ixq(2, ie)) + x(2, ixq(3, ie)))
91 r2 = half * (x(2, ixq(3, ie)) + x(2, ixq(4, ie)))
92 r3 = half * (x(2, ixq(4, ie)) + x(2, ixq(5, ie)))
93 r4 = half * (x(2, ixq(5, ie)) + x(2, ixq(2, ie)))
94
95 IF (r1 == zero) r1 = one
96 IF (r2 == zero) r2 = one
97 IF (r3 == zero) r3 = one
98 IF (r4 == zero) r4 = one
99
100 qmv(1,i) = qmv(1,i) - vl(1,i) / r1 - phi(ie)*qmv(5,i)
101 qmv(2,i) = qmv(2,i) - vl(2,i) / r2 - phi(ie)*qmv(6,i)
102 qmv(3,i) = qmv(3,i) - vl(3,i) / r3 - phi(ie)*qmv(7,i)
103 qmv(4,i) = qmv(4,i) - vl(4,i) / r4 - phi(ie)*qmv(8,i)
104 ENDDO
105 ELSE
106 DO i=lft,llt
107 ie =nft+i
108 qmv(1,i) = qmv(1,i) - vl(1,i) - phi(ie)*qmv(5,i)
109 qmv(2,i) = qmv(2,i) - vl(2,i) - phi(ie)*qmv(6,i)
110 qmv(3,i) = qmv(3,i) - vl(3,i) - phi(ie)*qmv(7,i)
111 qmv(4,i) = qmv(4,i) - vl(4,i) - phi(ie)*qmv(8,i)
112 ENDDO
113 ENDIF
114 ENDIF
115
116 RETURN