38
39
40
42
43
44
45#include "implicit_f.inc"
46#include "comlock.inc"
47
48
49
50#include "mvsiz_p.inc"
51#include "param_c.inc"
52#include "inter22.inc"
53
54
55
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: JEUL
59 . ms(*), rho(*),volu(*),volgp(lveul,*),
60 . msnf(*),off(*),tag22(*)
61 INTEGER NC1(*),NC2(*),NC3(*),NC4(*),NC5(*),NC6(*),NC7(*),NC8(*)
62 INTEGER NVC,IXS(NIXS,*)
63
64
65
66#include "com01_c.inc"
67
68
69
70 INTEGER I,IFLAG,MCELL,NIN,ICELL,NCELL,IB,J
72 INTEGER NVC1,NVC2,NVC3,NVC4,NVC5,NVC6,NVC7,NVC8
74
75 nvc1 = nvc / 128
76 nvc2 = (nvc-nvc1*128) / 64
77 nvc3 = (nvc-nvc1*128-nvc2*64) / 32
78 nvc4 = (nvc-nvc1*128-nvc2*64-nvc3*32)/16
79 nvc5 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16)/8
80 nvc6 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8)/4
81 nvc7 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8-nvc6*4)/2
82 nvc8 = nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8-nvc6*4-nvc7*2
83 iflag=integ8*jeul
84
85 nin = 1
86 fac = zero
87
88
89
90
91
92 IF(iflag/=1)THEN
93 IF(int22==0)THEN
94
95 tnod(1:nel,1:8) = one
96 DO i=1,nel
97 dmass(i)=one_over_8*rho(i)*volu(i)*off(i)
98 ENDDO
99
100 ELSE
101 DO i=1,nel
102 ib = nint(tag22(i))
103 IF(ib>0)THEN
105 IF(ncell==0)THEN
106 tnod(i,1:8) = one
107 dmass(i)=one_over_8*rho(i)*volu(i)*off(i)
108 cycle
109 ENDIF
110 tnod(i,1:8) = zero
112 IF(mcell==0)cycle
114 IF(fac>0)THEN
115 fac=one/fac
116 DO j=1,8
118 IF(icell/=mcell)cycle
119 tnod(i,j) = one
120 ENDDO
121 ELSE
122 fac = zero
123 ENDIF
124 ELSE
125 fac = one_over_8
126 tnod(i,1:8) = one
127 ENDIF
128 dmass(i)=fac*rho(i)*volu(i)*off(i)
129 ENDDO
130 ENDIF
131 endif
132
133#include "lockon.inc"
134 IF(iflag/=0)THEN
135 DO i=1,nel
136 dmass(i)=rho(i)*volgp(1,i)*off(i)
137 ENDDO
138 ENDIF
139
140
141
142
143 IF(nvc1==0)THEN
144#include "vectorize.inc"
145 DO i=1,nel
146 ms(nc1(i)) = ms(nc1(i)) + tnod(i,1)*dmass(i)
147 msnf(nc1(i)) = msnf(nc1(i)) + tnod(i,1)*dmass(i)
148 ENDDO
149 ELSE
150 DO i=1,nel
151 ms(nc1(i)) = ms(nc1(i)) + tnod(i,1)*dmass(i)
152 msnf(nc1(i)) = msnf(nc1(i)) + tnod(i,1)*dmass(i)
153 ENDDO
154 ENDIF
155
156 IF(iflag/=0)THEN
157 DO i=1,nel
158 dmass(i)=rho(i)*volgp(2,i)*off(i)
159 ENDDO
160 ENDIF
161 IF(nvc2==0)THEN
162#include "vectorize.inc"
163 DO i=1,nel
164 ms(nc2(i)) = ms(nc2(i)) + tnod(i,2)*dmass(i)
165 msnf(nc2(i)) = msnf(nc2(i)) + tnod(i,2)*dmass(i)
166 ENDDO
167 ELSE
168 DO i=1,nel
169 ms(nc2(i)) = ms(nc2(i)) + tnod(i,2)*dmass(i)
170 msnf(nc2(i)) = msnf(nc2(i)) + tnod(i,2)*dmass(i)
171 ENDDO
172 ENDIF
173
174 IF(iflag/=0)THEN
175 DO i=1,nel
176 dmass(i)=rho(i)*volgp(3,i)*off(i)
177 ENDDO
178 ENDIF
179 IF(nvc3==0)THEN
180#include "vectorize.inc"
181 DO i=1,nel
182 ms(nc3(i)) = ms(nc3(i)) + tnod(i,3)*dmass(i)
183 msnf(nc3(i)) = msnf(nc3(i)) + tnod(i,3)*dmass(i)
184 ENDDO
185 ELSE
186 DO i=1,nel
187 ms(nc3(i)) = ms(nc3(i)) + tnod(i,3)*dmass(i)
188 msnf(nc3(i)) = msnf(nc3(i)) + tnod(i,3)*dmass(i)
189 ENDDO
190 ENDIF
191
192 IF(iflag/=0)THEN
193 DO i=1,nel
194 dmass(i)=rho(i)*volgp(4,i)*off(i)
195 ENDDO
196 ENDIF
197 IF(nvc4==0)THEN
198#include "vectorize.inc"
199 DO i=1,nel
200 ms(nc4(i)) = ms(nc4(i)) + tnod(i,4)*dmass(i)
201 msnf(nc4(i)) = msnf(nc4(i)) + tnod(i,4)*dmass(i)
202 ENDDO
203 ELSE
204 DO i=1,nel
205 ms(nc4(i)) = ms(nc4(i)) + tnod(i,4)*dmass(i)
206 msnf(nc4(i)) = msnf(nc4(i)) + tnod(i,4)*dmass(i)
207 ENDDO
208 ENDIF
209
210 IF(iflag/=0)THEN
211 DO i=1,nel
212 dmass(i)=rho(i)*volgp(5,i)*off(i)
213 ENDDO
214 ENDIF
215 IF(nvc5==0)THEN
216#include "vectorize.inc"
217 DO i=1,nel
218 ms(nc5(i)) = ms(nc5(i)) + tnod(i,5)*dmass(i)
219 msnf(nc5(i)) = msnf(nc5(i)) + tnod(i,5)*dmass(i)
220 ENDDO
221 ELSE
222 DO i=1,nel
223 ms(nc5(i)) = ms(nc5(i)) + tnod(i,5)*dmass(i)
224 msnf(nc5(i)) = msnf(nc5(i)) + tnod(i,5)*dmass(i)
225 ENDDO
226 ENDIF
227
228 IF(iflag/=0)THEN
229 DO i=1,nel
230 dmass(i)=rho(i)*volgp(6,i)*off(i)
231 ENDDO
232 ENDIF
233 IF(nvc6==0)THEN
234#include "vectorize.inc"
235 DO i=1,nel
236 ms(nc6(i)) = ms(nc6(i)) + tnod(i,6)*dmass(i)
237 msnf(nc6(i)) = msnf(nc6(i)) + tnod(i,6)*dmass(i)
238 ENDDO
239 ELSE
240 DO i=1,nel
241 ms(nc6(i)) = ms(nc6(i)) + tnod(i,6)*dmass(i)
242 msnf(nc6(i)) = msnf(nc6(i)) + tnod(i,6)*dmass(i)
243 ENDDO
244 ENDIF
245
246 IF(iflag/=0)THEN
247 DO i=1,nel
248 dmass(i)=rho(i)*volgp(7,i)*off(i)
249 ENDDO
250 ENDIF
251 IF(nvc7==0)THEN
252#include "vectorize.inc"
253 DO i=1,nel
254 ms(nc7(i)) = ms(nc7(i)) + tnod(i,7)*dmass(i)
255 msnf(nc7(i)) = msnf(nc7(i)) + tnod(i,7)*dmass(i)
256 ENDDO
257 ELSE
258 DO i=1,nel
259 ms(nc7(i)) = ms(nc7(i)) + tnod(i,7)*dmass(i)
260 msnf(nc7(i)) = msnf(nc7(i)) + tnod(i,7)*dmass(i)
261 ENDDO
262 ENDIF
263
264 IF(iflag/=0)THEN
265 DO i=1,nel
266 dmass(i)=rho(i)*volgp(8,i)*off(i)
267 ENDDO
268 ENDIF
269 IF(nvc8==0)THEN
270#include "vectorize.inc"
271 DO i=1,nel
272 ms(nc8(i)) = ms(nc8(i)) + tnod(i,8)*dmass(i)
273 msnf(nc8(i)) = msnf(nc8(i)) + tnod(i,8)*dmass(i)
274 ENDDO
275 ELSE
276 DO i=1,nel
277 ms(nc8(i)) = ms(nc8(i)) + tnod(i,8)*dmass(i)
278 msnf(nc8(i)) = msnf(nc8(i)) + tnod(i,8)*dmass(i)
279 ENDDO
280 ENDIF
281#include "lockoff.inc"
282
283 RETURN
type(brick_entity), dimension(:,:), allocatable, target brick_list