5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, d,c,
6 & ikle,nelem,nelmax,ndiag)
109 INTEGER,
INTENT(IN) :: NELEM,NELMAX,NDIAG
110 INTEGER,
INTENT(IN) :: IKLE(nelmax,6)
111 CHARACTER(LEN=8),
INTENT(IN) :: OP
112 DOUBLE PRECISION,
INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
113 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
114 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
115 DOUBLE PRECISION,
INTENT(IN) :: C
123 IF(op(1:8).EQ.
'M=N ')
THEN 125 IF(typdin(1:1).EQ.
'Q')
THEN 126 CALL ov(
'X=Y ', x=dm, y=dn, dim1=ndiag)
127 ELSEIF(typdin(1:1).EQ.
'I'.OR.typdin(1:1).EQ.
'0')
THEN 130 WRITE(
lu,6) typdin(1:1)
131 6
FORMAT(1x,
'OM1311 (BIEF) : TYPDIN UNKNOWN :',a1)
135 typdim(1:1)=typdin(1:1)
137 IF(typexn(1:1).EQ.
'Q')
THEN 139 CALL ov(
'X=Y ', x=xm(1,i), y=xn(1,i), dim1=nelem)
141 ELSEIF(typexn(1:1).NE.
'0')
THEN 142 WRITE(
lu,11) typexn(1:1)
143 11
FORMAT(1x,
'OM1311 (BIEF) : TYPEXN UNKNOWN :',a1)
148 typexm(1:1)=typexn(1:1)
152 ELSEIF(op(1:8).EQ.
'M=CN ')
THEN 154 CALL ov(
'X=CY ', x=dm, y=dn, c=c, dim1=ndiag)
156 IF(typexn(1:1).EQ.
'Q')
THEN 158 CALL ov(
'X=CY ', x=xm(1,i), y=xn(1,i), c=c, dim1=nelem)
160 ELSEIF(typexn(1:1).NE.
'0')
THEN 161 WRITE(
lu,11) typexn(1:1)
166 typdim(1:1)=typdin(1:1)
167 typexm(1:1)=typexn(1:1)
171 ELSEIF(op(1:8).EQ.
'M=CM ')
THEN 173 CALL ov(
'X=CX ', x=dm, c=c, dim1=ndiag)
175 IF(typexm(1:1).EQ.
'Q')
THEN 177 CALL ov(
'X=CX ', x=xm(1,i), c=c, dim1=nelem)
179 ELSEIF(typexm(1:1).NE.
'0')
THEN 180 WRITE(
lu,11) typexm(1:1)
187 ELSEIF(op(1:8).EQ.
'M=M+CN ')
THEN 189 IF(typdin(1:1).EQ.
'I')
THEN 190 CALL ov(
'X=X+C ', x=dm, c=c, dim1=ndiag)
191 ELSEIF(typdin(1:1).NE.
'0')
THEN 192 CALL ov(
'X=X+CY ', x=dm, y=dn, c=c, dim1=ndiag)
195 IF(typexn(1:1).EQ.
'Q')
THEN 196 IF(typexm(1:1).NE.
'Q')
THEN 197 WRITE(
lu,98) typexm(1:1),op(1:8),typexn(1:1)
198 98
FORMAT(1x,
'OM1311 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO ',
199 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
204 CALL ov(
'X=X+CY ', x=xm(1,i), y=xn(1,i), c=c, dim1=nelem)
206 ELSEIF(typexn(1:1).NE.
'0')
THEN 207 WRITE(
lu,11) typexn(1:1)
214 ELSEIF(op(1:8).EQ.
'M=M+N ')
THEN 216 CALL ov(
'X=X+Y ', x=dm, y=dn, dim1=ndiag)
218 IF(typexn(1:1).EQ.
'Q')
THEN 219 IF(typexm(1:1).NE.
'Q')
THEN 220 WRITE(
lu,98) typexm(1:1),op(1:8),typexn(1:1)
225 CALL ov(
'X=X+Y ', x=xm(1,i), y=xn(1,i), dim1=nelem)
227 ELSEIF(typexn(1:1).NE.
'0')
THEN 228 WRITE(
lu,11) typexn(1:1)
235 ELSEIF(op(1:8).EQ.
'M=MD ')
THEN 240 IF(typdim(1:1).EQ.
'Q')
THEN 241 CALL ov(
'X=XY ', x=dm, y=d, dim1=ndiag)
242 ELSEIF(typdim(1:1).EQ.
'I')
THEN 243 CALL ov(
'X=Y ', x=dm, y=d, dim1=ndiag)
245 ELSEIF(typdim(1:1).NE.
'0')
THEN 246 WRITE(
lu,13) typdim(1:1)
247 13
FORMAT(1x,
'OM1311 (BIEF) : TYPDIM UNKNOWN :',a1)
255 IF(typexm(1:1).EQ.
'Q')
THEN 259 xm(ielem, 1) = xm(ielem, 1) * d(ikle(ielem,2))
260 xm(ielem, 2) = xm(ielem, 2) * d(ikle(ielem,3))
261 xm(ielem, 3) = xm(ielem, 3) * d(ikle(ielem,1))
262 xm(ielem, 4) = xm(ielem, 4) * d(ikle(ielem,3))
263 xm(ielem, 5) = xm(ielem, 5) * d(ikle(ielem,1))
264 xm(ielem, 6) = xm(ielem, 6) * d(ikle(ielem,2))
265 xm(ielem, 7) = xm(ielem, 7) * d(ikle(ielem,1))
266 xm(ielem, 8) = xm(ielem, 8) * d(ikle(ielem,2))
267 xm(ielem, 9) = xm(ielem, 9) * d(ikle(ielem,3))
268 xm(ielem, 10) = xm(ielem, 10) * d(ikle(ielem,1))
269 xm(ielem, 11) = xm(ielem, 11) * d(ikle(ielem,2))
270 xm(ielem, 12) = xm(ielem, 12) * d(ikle(ielem,3))
271 xm(ielem, 13) = xm(ielem, 13) * d(ikle(ielem,1))
272 xm(ielem, 14) = xm(ielem, 14) * d(ikle(ielem,2))
273 xm(ielem, 15) = xm(ielem, 15) * d(ikle(ielem,3))
277 ELSEIF(typexm(1:1).NE.
'0')
THEN 285 ELSEIF(op(1:8).EQ.
'M=TN ')
THEN 289 IF(typdin(1:1).EQ.
'Q')
THEN 290 CALL ov(
'X=Y ', x=dm, y=dn, dim1=ndiag)
291 ELSEIF(typdin(1:1).EQ.
'I'.OR.typdin(1:1).EQ.
'0')
THEN 294 WRITE(
lu,6) typdin(1:1)
298 typdim(1:1)=typdin(1:1)
302 IF(typexm(1:1).EQ.
'Q')
THEN 306 xm(ielem, 1) = xn(ielem, 6)
307 xm(ielem, 2) = xn(ielem, 11)
308 xm(ielem, 3) = xn(ielem, 1)
309 xm(ielem, 4) = xn(ielem, 12)
310 xm(ielem, 5) = xn(ielem, 2)
311 xm(ielem, 6) = xn(ielem, 7)
312 xm(ielem, 7) = xn(ielem, 3)
313 xm(ielem, 8) = xn(ielem, 8)
314 xm(ielem, 9) = xn(ielem, 13)
315 xm(ielem, 10) = xn(ielem, 4)
316 xm(ielem, 11) = xn(ielem, 9)
317 xm(ielem, 12) = xn(ielem, 14)
318 xm(ielem, 13) = xn(ielem, 5)
319 xm(ielem, 14) = xn(ielem, 10)
320 xm(ielem, 15) = xn(ielem, 15)
324 ELSEIF(typexm(1:1).NE.
'0')
THEN 332 ELSEIF(op(1:8).EQ.
'M=DM ')
THEN 336 IF(typdim(1:1).EQ.
'Q')
THEN 337 CALL ov(
'X=XY ', x=dm, y=d, dim1=ndiag)
338 ELSEIF(typdim(1:1).EQ.
'I')
THEN 339 CALL ov(
'X=Y ', x=dm, y=d, dim1=ndiag)
341 ELSEIF(typdim(1:1).NE.
'0')
THEN 342 WRITE(
lu,13) typdim(1:1)
349 IF(typexm(1:1).EQ.
'Q')
THEN 353 xm(ielem, 1) = xm(ielem, 1) * d(ikle(ielem,1))
354 xm(ielem, 2) = xm(ielem, 2) * d(ikle(ielem,1))
355 xm(ielem, 3) = xm(ielem, 3) * d(ikle(ielem,2))
356 xm(ielem, 4) = xm(ielem, 4) * d(ikle(ielem,2))
357 xm(ielem, 5) = xm(ielem, 5) * d(ikle(ielem,3))
358 xm(ielem, 6) = xm(ielem, 6) * d(ikle(ielem,3))
359 xm(ielem, 7) = xm(ielem, 7) * d(ikle(ielem,4))
360 xm(ielem, 8) = xm(ielem, 8) * d(ikle(ielem,4))
361 xm(ielem, 9) = xm(ielem, 9) * d(ikle(ielem,4))
362 xm(ielem, 10) = xm(ielem, 10) * d(ikle(ielem,5))
363 xm(ielem, 11) = xm(ielem, 11) * d(ikle(ielem,5))
364 xm(ielem, 12) = xm(ielem, 12) * d(ikle(ielem,5))
365 xm(ielem, 13) = xm(ielem, 13) * d(ikle(ielem,6))
366 xm(ielem, 14) = xm(ielem, 14) * d(ikle(ielem,6))
367 xm(ielem, 15) = xm(ielem, 15) * d(ikle(ielem,6))
371 ELSEIF(typexm(1:1).NE.
'0')
THEN 373 163
FORMAT(1x,
'OM1311 (BIEF) : TYPEXM NOT AVAILABLE : ',a1)
380 ELSEIF(op(1:8).EQ.
'M=M+D ')
THEN 382 IF(typdim(1:1).EQ.
'Q')
THEN 383 CALL ov(
'X=X+Y ', x=dm, y=d, dim1=ndiag)
385 WRITE(
lu,13) typdim(1:1)
392 ELSEIF(op(1:8).EQ.
'M=0 ')
THEN 394 CALL ov(
'X=C ', x=dm, c=0.d0, dim1=ndiag)
396 IF(typexm(1:1).EQ.
'Q')
THEN 398 CALL ov(
'X=C ', x=xm(1,i), c=0.d0, dim1=nelem)
400 ELSEIF(typexm(1:1).NE.
'0')
THEN 401 WRITE(
lu,711) typexm(1:1)
402 711
FORMAT(1x,
'OM11311 (BIEF) : TYPEXM UNKNOWN :',a1)
412 ELSEIF(op(1:8).EQ.
'M=MSK(M)')
THEN 414 IF(typexm(1:1).EQ.
'Q')
THEN 416 ELSEIF(typexm(1:1).EQ.
'0')
THEN 427 CALL ov(
'X=XY ', x=xm(1,i), y=d, dim1=nelem)
436 41
FORMAT(1x,
'OM1311 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine om1311(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)