5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
6 & nulone,nelbor,nbor,nelmax,sizdn,sizxn,szmxn)
103 INTEGER,
INTENT(IN) :: NELMAX,SIZDN,SIZXN,SZMXN
104 CHARACTER(LEN=8),
INTENT(IN) :: OP
105 INTEGER,
INTENT(IN) :: NULONE(*),NELBOR(*),NBOR(*)
106 DOUBLE PRECISION,
INTENT(IN) :: DN(*),XN(szmxn,*)
107 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
108 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
109 DOUBLE PRECISION,
INTENT(IN) :: C
115 DOUBLE PRECISION Z(1)
119 INTEGER :: CORNSY(3,12)
120 parameter( cornsy = reshape( (/
121 & 1, 6,17, 4, 9,10, 3, 8,12, 8,12, 3, 7,11, 5,
122 & 28,30,14, 16,21, 2, 19,24,25, 18,23,27, 23,27,18,
123 & 22,26,20, 13,15,29 /), shape=(/ 3,12 /) ) )
124 INTEGER :: CORSYM(3,6)
125 parameter( corsym = reshape( (/
126 & 1, 6, 2, 4, 9,10, 3, 8,12, 8,12, 3, 7,11, 5,
127 & 13,15,14 /), shape=(/ 3,6 /) ) )
131 IF(op(1:8).EQ.
'M=M+N ')
THEN 133 IF(typdim.EQ.
'Q'.AND.typdin.EQ.
'Q')
THEN 134 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , sizdn )
136 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
137 199
FORMAT(1x,
'OM4121 (BIEF) : TYPDIM = ',a1,
' NOT IMPLEMENTED',
138 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPDIN = ',a1)
143 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 151 xm( iel , cornsy(nulone(k), 1) ) =
152 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
153 xm( iel , cornsy(nulone(k), 2) ) =
154 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
155 xm( iel , cornsy(nulone(k), 3) ) =
156 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
157 xm( iel , cornsy(nulone(k), 4) ) =
158 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
159 xm( iel , cornsy(nulone(k), 5) ) =
160 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
161 xm( iel , cornsy(nulone(k), 6) ) =
162 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
163 xm( iel , cornsy(nulone(k), 7) ) =
164 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 7)
165 xm( iel , cornsy(nulone(k), 8) ) =
166 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 8)
167 xm( iel , cornsy(nulone(k), 9) ) =
168 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 9)
169 xm( iel , cornsy(nulone(k),10) ) =
170 & xm( iel , cornsy(nulone(k),10) ) + xn(k,10)
171 xm( iel , cornsy(nulone(k),11) ) =
172 & xm( iel , cornsy(nulone(k),11) ) + xn(k,11)
173 xm( iel , cornsy(nulone(k),12) ) =
174 & xm( iel , cornsy(nulone(k),12) ) + xn(k,12)
180 xm( iel , cornsy(nulone(k), 1) ) =
181 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
182 xm( iel , cornsy(nulone(k), 2) ) =
183 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
184 xm( iel , cornsy(nulone(k), 3) ) =
185 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
186 xm( iel , cornsy(nulone(k), 4) ) =
187 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
188 xm( iel , cornsy(nulone(k), 5) ) =
189 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
190 xm( iel , cornsy(nulone(k), 6) ) =
191 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
192 xm( iel , cornsy(nulone(k), 7) ) =
193 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 7)
194 xm( iel , cornsy(nulone(k), 8) ) =
195 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 8)
196 xm( iel , cornsy(nulone(k), 9) ) =
197 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 9)
198 xm( iel , cornsy(nulone(k),10) ) =
199 & xm( iel , cornsy(nulone(k),10) ) + xn(k,10)
200 xm( iel , cornsy(nulone(k),11) ) =
201 & xm( iel , cornsy(nulone(k),11) ) + xn(k,11)
202 xm( iel , cornsy(nulone(k),12) ) =
203 & xm( iel , cornsy(nulone(k),12) ) + xn(k,12)
207 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 215 xm( iel , cornsy(nulone(k), 1) ) =
216 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
217 xm( iel , cornsy(nulone(k), 2) ) =
218 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
219 xm( iel , cornsy(nulone(k), 3) ) =
220 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
221 xm( iel , cornsy(nulone(k), 4) ) =
222 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
223 xm( iel , cornsy(nulone(k), 5) ) =
224 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
225 xm( iel , cornsy(nulone(k), 6) ) =
226 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
227 xm( iel , cornsy(nulone(k), 7) ) =
228 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
229 xm( iel , cornsy(nulone(k), 8) ) =
230 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
231 xm( iel , cornsy(nulone(k), 9) ) =
232 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
233 xm( iel , cornsy(nulone(k),10) ) =
234 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
235 xm( iel , cornsy(nulone(k),11) ) =
236 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
237 xm( iel , cornsy(nulone(k),12) ) =
238 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
244 xm( iel , cornsy(nulone(k), 1) ) =
245 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
246 xm( iel , cornsy(nulone(k), 2) ) =
247 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
248 xm( iel , cornsy(nulone(k), 3) ) =
249 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
250 xm( iel , cornsy(nulone(k), 4) ) =
251 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
252 xm( iel , cornsy(nulone(k), 5) ) =
253 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
254 xm( iel , cornsy(nulone(k), 6) ) =
255 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
256 xm( iel , cornsy(nulone(k), 7) ) =
257 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
258 xm( iel , cornsy(nulone(k), 8) ) =
259 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
260 xm( iel , cornsy(nulone(k), 9) ) =
261 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
262 xm( iel , cornsy(nulone(k),10) ) =
263 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
264 xm( iel , cornsy(nulone(k),11) ) =
265 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
266 xm( iel , cornsy(nulone(k),12) ) =
267 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
271 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 279 xm( iel , corsym(nulone(k), 1) ) =
280 & xm( iel , corsym(nulone(k), 1) ) + xn(k, 1)
281 xm( iel , corsym(nulone(k), 2) ) =
282 & xm( iel , corsym(nulone(k), 2) ) + xn(k, 2)
283 xm( iel , corsym(nulone(k), 3) ) =
284 & xm( iel , corsym(nulone(k), 3) ) + xn(k, 3)
285 xm( iel , corsym(nulone(k), 4) ) =
286 & xm( iel , corsym(nulone(k), 4) ) + xn(k, 4)
287 xm( iel , corsym(nulone(k), 5) ) =
288 & xm( iel , corsym(nulone(k), 5) ) + xn(k, 5)
289 xm( iel , corsym(nulone(k), 6) ) =
290 & xm( iel , corsym(nulone(k), 6) ) + xn(k, 6)
296 xm( iel , corsym(nulone(k), 1) ) =
297 & xm( iel , corsym(nulone(k), 1) ) + xn(k, 1)
298 xm( iel , corsym(nulone(k), 2) ) =
299 & xm( iel , corsym(nulone(k), 2) ) + xn(k, 2)
300 xm( iel , corsym(nulone(k), 3) ) =
301 & xm( iel , corsym(nulone(k), 3) ) + xn(k, 3)
302 xm( iel , corsym(nulone(k), 4) ) =
303 & xm( iel , corsym(nulone(k), 4) ) + xn(k, 4)
304 xm( iel , corsym(nulone(k), 5) ) =
305 & xm( iel , corsym(nulone(k), 5) ) + xn(k, 5)
306 xm( iel , corsym(nulone(k), 6) ) =
307 & xm( iel , corsym(nulone(k), 6) ) + xn(k, 6)
312 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
313 99
FORMAT(1x,
'OM4121 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO',
314 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
321 ELSEIF(op(1:8).EQ.
'M=M+TN ')
THEN 323 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , sizxn )
325 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 333 xm( iel , cornsy(nulone(k), 1) ) =
334 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 7)
335 xm( iel , cornsy(nulone(k), 2) ) =
336 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 8)
337 xm( iel , cornsy(nulone(k), 3) ) =
338 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 9)
339 xm( iel , cornsy(nulone(k), 4) ) =
340 & xm( iel , cornsy(nulone(k), 4) ) + xn(k,10)
341 xm( iel , cornsy(nulone(k), 5) ) =
342 & xm( iel , cornsy(nulone(k), 5) ) + xn(k,11)
343 xm( iel , cornsy(nulone(k), 6) ) =
344 & xm( iel , cornsy(nulone(k), 6) ) + xn(k,12)
345 xm( iel , cornsy(nulone(k), 7) ) =
346 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
347 xm( iel , cornsy(nulone(k), 8) ) =
348 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
349 xm( iel , cornsy(nulone(k), 9) ) =
350 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
351 xm( iel , cornsy(nulone(k),10) ) =
352 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
353 xm( iel , cornsy(nulone(k),11) ) =
354 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
355 xm( iel , cornsy(nulone(k),12) ) =
356 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
362 xm( iel , cornsy(nulone(k), 1) ) =
363 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 7)
364 xm( iel , cornsy(nulone(k), 2) ) =
365 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 8)
366 xm( iel , cornsy(nulone(k), 3) ) =
367 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 9)
368 xm( iel , cornsy(nulone(k), 4) ) =
369 & xm( iel , cornsy(nulone(k), 4) ) + xn(k,10)
370 xm( iel , cornsy(nulone(k), 5) ) =
371 & xm( iel , cornsy(nulone(k), 5) ) + xn(k,11)
372 xm( iel , cornsy(nulone(k), 6) ) =
373 & xm( iel , cornsy(nulone(k), 6) ) + xn(k,12)
374 xm( iel , cornsy(nulone(k), 7) ) =
375 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
376 xm( iel , cornsy(nulone(k), 8) ) =
377 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
378 xm( iel , cornsy(nulone(k), 9) ) =
379 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
380 xm( iel , cornsy(nulone(k),10) ) =
381 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
382 xm( iel , cornsy(nulone(k),11) ) =
383 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
384 xm( iel , cornsy(nulone(k),12) ) =
385 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
389 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 397 xm( iel , cornsy(nulone(k), 1) ) =
398 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
399 xm( iel , cornsy(nulone(k), 2) ) =
400 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
401 xm( iel , cornsy(nulone(k), 3) ) =
402 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
403 xm( iel , cornsy(nulone(k), 4) ) =
404 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
405 xm( iel , cornsy(nulone(k), 5) ) =
406 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
407 xm( iel , cornsy(nulone(k), 6) ) =
408 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
409 xm( iel , cornsy(nulone(k), 7) ) =
410 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
411 xm( iel , cornsy(nulone(k), 8) ) =
412 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
413 xm( iel , cornsy(nulone(k), 9) ) =
414 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
415 xm( iel , cornsy(nulone(k),10) ) =
416 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
417 xm( iel , cornsy(nulone(k),11) ) =
418 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
419 xm( iel , cornsy(nulone(k),12) ) =
420 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
426 xm( iel , cornsy(nulone(k), 1) ) =
427 & xm( iel , cornsy(nulone(k), 1) ) + xn(k, 1)
428 xm( iel , cornsy(nulone(k), 2) ) =
429 & xm( iel , cornsy(nulone(k), 2) ) + xn(k, 2)
430 xm( iel , cornsy(nulone(k), 3) ) =
431 & xm( iel , cornsy(nulone(k), 3) ) + xn(k, 3)
432 xm( iel , cornsy(nulone(k), 4) ) =
433 & xm( iel , cornsy(nulone(k), 4) ) + xn(k, 4)
434 xm( iel , cornsy(nulone(k), 5) ) =
435 & xm( iel , cornsy(nulone(k), 5) ) + xn(k, 5)
436 xm( iel , cornsy(nulone(k), 6) ) =
437 & xm( iel , cornsy(nulone(k), 6) ) + xn(k, 6)
438 xm( iel , cornsy(nulone(k), 7) ) =
439 & xm( iel , cornsy(nulone(k), 7) ) + xn(k, 1)
440 xm( iel , cornsy(nulone(k), 8) ) =
441 & xm( iel , cornsy(nulone(k), 8) ) + xn(k, 2)
442 xm( iel , cornsy(nulone(k), 9) ) =
443 & xm( iel , cornsy(nulone(k), 9) ) + xn(k, 3)
444 xm( iel , cornsy(nulone(k),10) ) =
445 & xm( iel , cornsy(nulone(k),10) ) + xn(k, 4)
446 xm( iel , cornsy(nulone(k),11) ) =
447 & xm( iel , cornsy(nulone(k),11) ) + xn(k, 5)
448 xm( iel , cornsy(nulone(k),12) ) =
449 & xm( iel , cornsy(nulone(k),12) ) + xn(k, 6)
453 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 461 xm( iel , corsym(nulone(k), 1) ) =
462 & xm( iel , corsym(nulone(k), 1) ) + xn(k, 1)
463 xm( iel , corsym(nulone(k), 2) ) =
464 & xm( iel , corsym(nulone(k), 2) ) + xn(k, 2)
465 xm( iel , corsym(nulone(k), 3) ) =
466 & xm( iel , corsym(nulone(k), 3) ) + xn(k, 3)
467 xm( iel , corsym(nulone(k), 4) ) =
468 & xm( iel , corsym(nulone(k), 4) ) + xn(k, 4)
469 xm( iel , corsym(nulone(k), 5) ) =
470 & xm( iel , corsym(nulone(k), 5) ) + xn(k, 5)
471 xm( iel , corsym(nulone(k), 6) ) =
472 & xm( iel , corsym(nulone(k), 6) ) + xn(k, 6)
478 xm( iel , corsym(nulone(k), 1) ) =
479 & xm( iel , corsym(nulone(k), 1) ) + xn(k, 1)
480 xm( iel , corsym(nulone(k), 2) ) =
481 & xm( iel , corsym(nulone(k), 2) ) + xn(k, 2)
482 xm( iel , corsym(nulone(k), 3) ) =
483 & xm( iel , corsym(nulone(k), 3) ) + xn(k, 3)
484 xm( iel , corsym(nulone(k), 4) ) =
485 & xm( iel , corsym(nulone(k), 4) ) + xn(k, 4)
486 xm( iel , corsym(nulone(k), 5) ) =
487 & xm( iel , corsym(nulone(k), 5) ) + xn(k, 5)
488 xm( iel , corsym(nulone(k), 6) ) =
489 & xm( iel , corsym(nulone(k), 6) ) + xn(k, 6)
494 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
504 71
FORMAT(1x,
'OM4121 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine om4121(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, SIZDN, SIZXN, SZMXN)
subroutine ovdb(OP, X, Y, Z, C, NBOR, NPTFR)