31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "com08_c.inc"
39#include "param_c.inc"
40
41
42
43 INTEGER NINDX, FLAG, INDX(*), ISKEW(*), ICODT(*),NODREAC(*)
45 . a(3,*),skew(lskew,*),ms(*),fthreac(6,*),in(*)
46
47
48
49 INTEGER N, K, L, ISK, LCOD
51 . aa,fthreac0(6)
52
53 IF (flag == 0) n = 0
54 IF (flag == 1) n = 3
55
56#include "vectorize.inc"
57 DO k = 1, nindx
58 l = indx(k)
59 isk = iskew(l)
60 lcod= icodt(l)
61 fthreac0 = zero
62
63 IF(isk==1) THEN
64
65
66
67 IF(lcod==1)THEN
68 fthreac0(n+3) = - a(3,l)
69 ELSEIF(lcod==2)THEN
70 fthreac0(n+2) = - a(2,l)
71 ELSEIF(lcod==3)THEN
72 fthreac0(n+2) = - a(2,l)
73 fthreac0(n+3) = - a(3,l)
74 ELSEIF(lcod==4)THEN
75 fthreac0(n+1) = - a(1,l)
76 ELSEIF(lcod==5)THEN
77 fthreac0(n+1) = - a(1,l)
78 fthreac0(n+3) = - a(3,l)
79 ELSEIF(lcod==6)THEN
80 fthreac0(n+1) = - a(1,l)
81 fthreac0(n+2) = - a(2,l)
82 ELSEIF(lcod==7)THEN
83 fthreac0(n+1) = - a(1,l)
84 fthreac0(n+2) = - a(2,l)
85 fthreac0(n+3) = - a(3,l)
86 ENDIF
87
88 ELSE
89
90
91
92 IF(lcod==1)THEN
93 aa =skew(7,isk)*a(1,l)+skew(8,isk)*a(2,l)+skew(9,isk)*a(3,l)
94 fthreac0(n+1)=-skew(7,isk)*aa
95 fthreac0(n+2)=-skew(8,isk)*aa
96 fthreac0(n+3)=-skew(9,isk)*aa
97 ELSEIF(lcod==2)THEN
98 aa =skew(4,isk)*a(1,l)+skew(5,isk)*a(2,l)+skew(6,isk)*a(3,l)
99 fthreac0(n+1)=-skew(4,isk)*aa
100 fthreac0(n+2)=-skew(5,isk)*aa
101 fthreac0(n+3)=-skew(6,isk)*aa
102 ELSEIF(lcod==3)THEN
103 aa =skew(7,isk)*a(1,l)+skew(8,isk)*a(2,l)+skew(9,isk)*a(3,l)
104 fthreac0(n+1)=-skew(7,isk)*aa
105 fthreac0(n+2)=-skew(8,isk)*aa
106 fthreac0(n+3)=-skew(9,isk)*aa
107 aa =skew(4,isk)*a(1,l)+skew(5,isk)*a(2,l)+skew(6,isk)*a(3,l)
108 fthreac0(n+1)=fthreac0(n+1)-skew(4,isk)*aa
109 fthreac0(n+2)=fthreac0(n+2)-skew(5,isk)*aa
110 fthreac0(n+3)=fthreac0(n+3)-skew(6,isk)*aa
111 ELSEIF(lcod==4)THEN
112 aa =skew(1,isk)*a(1,l)+skew(2,isk)*a(2,l)+skew(3,isk)*a(3,l)
113 fthreac0(n+1)=-skew(1,isk)*aa
114 fthreac0(n+2)=-skew(2,isk)*aa
115 fthreac0(n+3)=-skew(3,isk)*aa
116 ELSEIF(lcod==5)THEN
117 aa =skew(7,isk)*a(1,l)+skew(8,isk)*a(2,l)+skew(9,isk)*a(3,l)
118 fthreac0(n+1)=-skew(7,isk)*aa
119 fthreac0(n+2)=-skew(8,isk)*aa
120 fthreac0(n+3)=-skew(9,isk)*aa
121 aa =skew(1,isk)*a(1,l)+skew(2,isk)*a(2,l)+skew(3,isk)*a(3,l)
122 fthreac0(n+1)=fthreac0(n+1)-skew(1,isk)*aa
123 fthreac0(n+2)=fthreac0(n+2)-skew(2,isk)*aa
124 fthreac0(n+3)=fthreac0(n+3)-skew(3,isk)*aa
125 ELSEIF(lcod==6)THEN
126 aa =skew(1,isk)*a(1,l)+skew(2,isk)*a(2,l)+skew(3,isk)*a(3,l)
127 fthreac0(n+1)=-skew(1,isk)*aa
128 fthreac0(n+2)=-skew(2,isk)*aa
129 fthreac0(n+3)=-skew(3,isk)*aa
130 aa =skew(4,isk)*a(1,l)+skew(5,isk)*a(2,l)+skew(6,isk)*a(3,l)
131 fthreac0(n+1)=fthreac0(n+1)-skew(4,isk)*aa
132 fthreac0(n+2)=fthreac0(n+2)-skew(5,isk)*aa
133 fthreac0(n+3)=fthreac0(n+3)-skew(6,isk)*aa
134 ELSEIF(lcod==7)THEN
135 fthreac0(n+1) = - a(1,l)
136 fthreac0(n+2) = - a(2,l)
137 fthreac0(n+3) = - a(3,l)
138 ENDIF
139
140 ENDIF
141
142 IF (flag == 0)THEN
143 fthreac(1,nodreac(l)) = fthreac(1,nodreac(l))
144 & + fthreac0(1) * ms(l) * dt12
145 fthreac(2,nodreac(l)) = fthreac(2,nodreac(l))
146 & + fthreac0(2) * ms(l) * dt12
147 fthreac(3,nodreac(l)) = fthreac(3,nodreac(l))
148 & + fthreac0(3) * ms(l) * dt12
149 ELSE
150 fthreac(4,nodreac(l)) = fthreac(4,nodreac(l))
151 & + fthreac0(4) * in(l) * dt12
152 fthreac(5,nodreac(l)) = fthreac(5,nodreac(l))
153 & + fthreac0(5) * in(l) * dt12
154 fthreac(6,nodreac(l)) = fthreac(6,nodreac(l))
155 & + fthreac0(6) * in(l) * dt12
156 ENDIF
157
158 ENDDO
159
160 RETURN