5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
6 & nulone,nelbor,nbor,nelmax,sizdn,neleb)
101 INTEGER,
INTENT(IN) :: NELMAX,SIZDN,NELEB
102 CHARACTER(LEN=8),
INTENT(IN) :: OP
103 INTEGER,
INTENT(IN) :: NULONE(3*neleb)
104 INTEGER,
INTENT(IN) :: NELBOR(*),NBOR(*)
105 DOUBLE PRECISION,
INTENT(IN) :: DN(*),XN(neleb,*)
106 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
107 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
108 DOUBLE PRECISION,
INTENT(IN) :: C
112 INTEGER K,IEL,NUL1,NUL2,NUL3
114 DOUBLE PRECISION Z(1)
121 INTEGER :: CONVNSY(4,4)
122 parameter( convnsy = reshape( (/
123 & 123456789, 7 , 8 , 9 ,
124 & 1 , 123456789, 10 , 11 ,
125 & 2 , 4 , 123456789, 12 ,
126 & 3 , 5 , 6 , 123456789 /),
127 & shape=(/ 4,4 /) ) )
128 INTEGER :: CONVSYM(4,4)
129 parameter( convsym = reshape( (/
130 & 123456789, 1 , 2 , 3 ,
131 & 1 , 123456789, 4 , 5 ,
132 & 2 , 4 , 123456789, 6 ,
133 & 3 , 5 , 6 , 123456789 /),
134 & shape=(/ 4,4 /) ) )
138 IF(op(1:8).EQ.
'M=M+N ')
THEN 139 IF(typdim.EQ.
'Q'.AND.typdin.EQ.
'Q')
THEN 140 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , sizdn )
142 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
143 199
FORMAT(1x,
'OM5161 (BIEF) : TYPDIM = ',a1,
' NOT IMPLEMENTED',
144 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPDIN = ',a1)
149 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 159 nul3=nulone(k+2*neleb)
160 xm( iel , convnsy(nul1,nul2) ) =
161 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
162 xm( iel , convnsy(nul1,nul3) ) =
163 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
164 xm( iel , convnsy(nul2,nul3) ) =
165 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
166 xm( iel , convnsy(nul2,nul1) ) =
167 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 4)
168 xm( iel , convnsy(nul3,nul1) ) =
169 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 5)
170 xm( iel , convnsy(nul3,nul2) ) =
171 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 6)
179 nul3=nulone(k+2*neleb)
180 xm( iel , convnsy(nul1,nul2) ) =
181 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
182 xm( iel , convnsy(nul1,nul3) ) =
183 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
184 xm( iel , convnsy(nul2,nul3) ) =
185 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
186 xm( iel , convnsy(nul2,nul1) ) =
187 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 4)
188 xm( iel , convnsy(nul3,nul1) ) =
189 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 5)
190 xm( iel , convnsy(nul3,nul2) ) =
191 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 6)
195 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 205 nul3=nulone(k+2*neleb)
206 xm( iel , convnsy(nul1,nul2) ) =
207 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
208 xm( iel , convnsy(nul1,nul3) ) =
209 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
210 xm( iel , convnsy(nul2,nul3) ) =
211 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
212 xm( iel , convnsy(nul2,nul1) ) =
213 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
214 xm( iel , convnsy(nul3,nul1) ) =
215 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
216 xm( iel , convnsy(nul3,nul2) ) =
217 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
225 nul3=nulone(k+2*neleb)
226 xm( iel , convnsy(nul1,nul2) ) =
227 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
228 xm( iel , convnsy(nul1,nul3) ) =
229 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
230 xm( iel , convnsy(nul2,nul3) ) =
231 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
232 xm( iel , convnsy(nul2,nul1) ) =
233 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
234 xm( iel , convnsy(nul3,nul1) ) =
235 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
236 xm( iel , convnsy(nul3,nul2) ) =
237 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
241 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 251 nul3=nulone(k+2*neleb)
252 xm( iel , convsym(nul1,nul2) ) =
253 & xm( iel , convsym(nul1,nul2) ) + xn(k, 1)
254 xm( iel , convsym(nul1,nul3) ) =
255 & xm( iel , convsym(nul1,nul3) ) + xn(k, 2)
256 xm( iel , convsym(nul2,nul3) ) =
257 & xm( iel , convsym(nul2,nul3) ) + xn(k, 3)
265 nul3=nulone(k+2*neleb)
266 xm( iel , convsym(nul1,nul2) ) =
267 & xm( iel , convsym(nul1,nul2) ) + xn(k, 1)
268 xm( iel , convsym(nul1,nul3) ) =
269 & xm( iel , convsym(nul1,nul3) ) + xn(k, 2)
270 xm( iel , convsym(nul2,nul3) ) =
271 & xm( iel , convsym(nul2,nul3) ) + xn(k, 3)
276 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
277 99
FORMAT(1x,
'OM3181 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO',
278 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
285 ELSEIF(op(1:8).EQ.
'M=M+TN ')
THEN 287 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , neleb )
289 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 299 nul3=nulone(k+2*neleb)
300 xm( iel , convnsy(nul1,nul2) ) =
301 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 4)
302 xm( iel , convnsy(nul1,nul3) ) =
303 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 5)
304 xm( iel , convnsy(nul2,nul3) ) =
305 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 6)
306 xm( iel , convnsy(nul2,nul1) ) =
307 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
308 xm( iel , convnsy(nul3,nul1) ) =
309 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
310 xm( iel , convnsy(nul3,nul2) ) =
311 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
319 nul3=nulone(k+2*neleb)
320 xm( iel , convnsy(nul1,nul2) ) =
321 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 4)
322 xm( iel , convnsy(nul1,nul3) ) =
323 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 5)
324 xm( iel , convnsy(nul2,nul3) ) =
325 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 6)
326 xm( iel , convnsy(nul2,nul1) ) =
327 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
328 xm( iel , convnsy(nul3,nul1) ) =
329 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
330 xm( iel , convnsy(nul3,nul2) ) =
331 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
335 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 345 nul3=nulone(k+2*neleb)
346 xm( iel , convnsy(nul1,nul2) ) =
347 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
348 xm( iel , convnsy(nul1,nul3) ) =
349 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
350 xm( iel , convnsy(nul2,nul3) ) =
351 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
352 xm( iel , convnsy(nul2,nul1) ) =
353 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
354 xm( iel , convnsy(nul3,nul1) ) =
355 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
356 xm( iel , convnsy(nul3,nul2) ) =
357 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
365 nul3=nulone(k+2*neleb)
366 xm( iel , convnsy(nul1,nul2) ) =
367 & xm( iel , convnsy(nul1,nul2) ) + xn(k, 1)
368 xm( iel , convnsy(nul1,nul3) ) =
369 & xm( iel , convnsy(nul1,nul3) ) + xn(k, 2)
370 xm( iel , convnsy(nul2,nul3) ) =
371 & xm( iel , convnsy(nul2,nul3) ) + xn(k, 3)
372 xm( iel , convnsy(nul2,nul1) ) =
373 & xm( iel , convnsy(nul2,nul1) ) + xn(k, 1)
374 xm( iel , convnsy(nul3,nul1) ) =
375 & xm( iel , convnsy(nul3,nul1) ) + xn(k, 2)
376 xm( iel , convnsy(nul3,nul2) ) =
377 & xm( iel , convnsy(nul3,nul2) ) + xn(k, 3)
381 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 391 nul3=nulone(k+2*neleb)
392 xm( iel , convsym(nul1,nul2) ) =
393 & xm( iel , convsym(nul1,nul2) ) + xn(k, 1)
394 xm( iel , convsym(nul1,nul3) ) =
395 & xm( iel , convsym(nul1,nul3) ) + xn(k, 2)
396 xm( iel , convsym(nul2,nul3) ) =
397 & xm( iel , convsym(nul2,nul3) ) + xn(k, 3)
405 nul3=nulone(k+2*neleb)
406 xm( iel , convsym(nul1,nul2) ) =
407 & xm( iel , convsym(nul1,nul2) ) + xn(k, 1)
408 xm( iel , convsym(nul1,nul3) ) =
409 & xm( iel , convsym(nul1,nul3) ) + xn(k, 2)
410 xm( iel , convsym(nul2,nul3) ) =
411 & xm( iel , convsym(nul2,nul3) ) + xn(k, 3)
416 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
426 71
FORMAT(1x,
'OM3181 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ovdb(OP, X, Y, Z, C, NBOR, NPTFR)
subroutine om3181(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, SIZDN, NELEB)