5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, d,c,
6 & ikle,nelem,nelmax,ndiag)
111 INTEGER,
INTENT(IN) :: NELEM,NELMAX,NDIAG
112 INTEGER,
INTENT(IN) :: IKLE(nelmax,6)
113 CHARACTER(LEN=8),
INTENT(IN) :: OP
114 DOUBLE PRECISION,
INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
115 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
116 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
117 DOUBLE PRECISION,
INTENT(IN) :: C
125 IF(op(1:8).EQ.
'M=N ')
THEN 127 IF(typdin(1:1).EQ.
'Q')
THEN 128 CALL ov(
'X=Y ', x=dm, y=dn, dim1=ndiag)
129 ELSEIF(typdin(1:1).EQ.
'I'.OR.typdin(1:1).EQ.
'0')
THEN 132 WRITE(
lu,6) typdin(1:1)
133 6
FORMAT(1x,
'OM1113 (BIEF) : TYPDIN UNKNOWN :',a1)
137 typdim(1:1)=typdin(1:1)
139 IF(typexn(1:1).EQ.
'Q')
THEN 141 CALL ov(
'X=Y ', x=xm(1,i), y=xn(1,i), dim1=nelem)
143 ELSEIF(typexn(1:1).NE.
'0')
THEN 144 WRITE(
lu,11) typexn(1:1)
145 11
FORMAT(1x,
'OM1113 (BIEF) : TYPEXN UNKNOWN :',a1)
150 typexm(1:1)=typexn(1:1)
154 ELSEIF(op(1:8).EQ.
'M=CN ')
THEN 156 CALL ov(
'X=CY ', x=dm, y=dn, c=c, dim1=ndiag)
158 IF(typexn(1:1).EQ.
'Q')
THEN 160 CALL ov(
'X=CY ', x=xm(1,i), y=xn(1,i), c=c, dim1=nelem)
162 ELSEIF(typexn(1:1).NE.
'0')
THEN 163 WRITE(
lu,11) typexn(1:1)
168 typdim(1:1)=typdin(1:1)
169 typexm(1:1)=typexn(1:1)
173 ELSEIF(op(1:8).EQ.
'M=CM ')
THEN 175 CALL ov(
'X=CX ', x=dm, c=c, dim1=ndiag)
177 IF(typexm(1:1).EQ.
'Q')
THEN 179 CALL ov(
'X=CX ', x=xm(1,i), c=c, dim1=nelem)
181 ELSEIF(typexm(1:1).NE.
'0')
THEN 182 WRITE(
lu,11) typexm(1:1)
189 ELSEIF(op(1:8).EQ.
'M=M+CN ')
THEN 191 IF(typdin(1:1).EQ.
'I')
THEN 192 CALL ov(
'X=X+C ', x=dm, c=c, dim1=ndiag)
193 ELSEIF(typdin(1:1).NE.
'0')
THEN 194 CALL ov(
'X=X+CY ', x=dm, y=dn, c=c, dim1=ndiag)
197 IF(typexn(1:1).EQ.
'Q')
THEN 198 IF(typexm(1:1).NE.
'Q')
THEN 199 WRITE(
lu,98) typexm(1:1),op(1:8),typexn(1:1)
200 98
FORMAT(1x,
'OM1113 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO ',
201 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
206 CALL ov(
'X=X+CY ', x=xm(1,i), y=xn(1,i), c=c, dim1=nelem)
208 ELSEIF(typexn(1:1).NE.
'0')
THEN 209 WRITE(
lu,11) typexn(1:1)
216 ELSEIF(op(1:8).EQ.
'M=M+N ')
THEN 218 CALL ov(
'X=X+Y ', x=dm, y=dn, dim1=ndiag)
220 IF(typexn(1:1).EQ.
'Q')
THEN 221 IF(typexm(1:1).NE.
'Q')
THEN 222 WRITE(
lu,98) typexm(1:1),op(1:8),typexn(1:1)
227 CALL ov(
'X=X+Y ', x=xm(1,i), y=xn(1,i), dim1=nelem)
229 ELSEIF(typexn(1:1).NE.
'0')
THEN 230 WRITE(
lu,11) typexn(1:1)
237 ELSEIF(op(1:8).EQ.
'M=MD ')
THEN 241 IF(typdim(1:1).EQ.
'Q')
THEN 242 CALL ov(
'X=XY ', x=dm, y=d, dim1=ndiag)
243 ELSEIF(typdim(1:1).EQ.
'I')
THEN 244 CALL ov(
'X=Y ', x=dm, y=d, dim1=ndiag)
246 ELSEIF(typdim(1:1).NE.
'0')
THEN 247 WRITE(
lu,13) typdim(1:1)
248 13
FORMAT(1x,
'OM1113 (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,4))
262 xm(ielem, 4) = xm(ielem, 4) * d(ikle(ielem,5))
263 xm(ielem, 5) = xm(ielem, 5) * d(ikle(ielem,6))
264 xm(ielem, 6) = xm(ielem, 6) * d(ikle(ielem,1))
265 xm(ielem, 7) = xm(ielem, 7) * d(ikle(ielem,3))
266 xm(ielem, 8) = xm(ielem, 8) * d(ikle(ielem,4))
267 xm(ielem, 9) = xm(ielem, 9) * d(ikle(ielem,5))
268 xm(ielem, 10) = xm(ielem, 10) * d(ikle(ielem,6))
269 xm(ielem, 11) = xm(ielem, 11) * d(ikle(ielem,1))
270 xm(ielem, 12) = xm(ielem, 12) * d(ikle(ielem,2))
271 xm(ielem, 13) = xm(ielem, 13) * d(ikle(ielem,4))
272 xm(ielem, 14) = xm(ielem, 14) * d(ikle(ielem,5))
273 xm(ielem, 15) = xm(ielem, 15) * d(ikle(ielem,6))
277 ELSEIF(typexm(1:1).NE.
'0')
THEN 285 ELSEIF(op(1:8).EQ.
'M=DM ')
THEN 289 IF(typdim(1:1).EQ.
'Q')
THEN 290 CALL ov(
'X=XY ', x=dm, y=d, dim1=ndiag)
291 ELSEIF(typdim(1:1).EQ.
'I')
THEN 292 CALL ov(
'X=Y ', x=dm, y=d, dim1=ndiag)
294 ELSEIF(typdim(1:1).NE.
'0')
THEN 295 WRITE(
lu,13) typdim(1:1)
302 IF(typexm(1:1).EQ.
'Q')
THEN 306 xm(ielem, 1) = xm(ielem, 1) * d(ikle(ielem,1))
307 xm(ielem, 2) = xm(ielem, 2) * d(ikle(ielem,1))
308 xm(ielem, 3) = xm(ielem, 3) * d(ikle(ielem,1))
309 xm(ielem, 4) = xm(ielem, 4) * d(ikle(ielem,1))
310 xm(ielem, 5) = xm(ielem, 5) * d(ikle(ielem,1))
311 xm(ielem, 6) = xm(ielem, 6) * d(ikle(ielem,2))
312 xm(ielem, 7) = xm(ielem, 7) * d(ikle(ielem,2))
313 xm(ielem, 8) = xm(ielem, 8) * d(ikle(ielem,2))
314 xm(ielem, 9) = xm(ielem, 9) * d(ikle(ielem,2))
315 xm(ielem, 10) = xm(ielem, 10) * d(ikle(ielem,2))
316 xm(ielem, 11) = xm(ielem, 11) * d(ikle(ielem,3))
317 xm(ielem, 12) = xm(ielem, 12) * d(ikle(ielem,3))
318 xm(ielem, 13) = xm(ielem, 13) * d(ikle(ielem,3))
319 xm(ielem, 14) = xm(ielem, 14) * d(ikle(ielem,3))
320 xm(ielem, 15) = xm(ielem, 15) * d(ikle(ielem,3))
324 ELSEIF(typexm(1:1).NE.
'0')
THEN 326 163
FORMAT(1x,
'OM1113 (BIEF) : TYPEXM NOT AVAILABLE : ',a1)
333 ELSEIF(op(1:8).EQ.
'M=TN ')
THEN 337 IF(typdin(1:1).EQ.
'Q')
THEN 338 CALL ov(
'X=Y ', x=dm, y=dn, dim1=ndiag)
339 ELSEIF(typdin(1:1).EQ.
'I'.OR.typdin(1:1).EQ.
'0')
THEN 342 WRITE(
lu,6) typdin(1:1)
346 typdim(1:1)=typdin(1:1)
350 IF(typexm(1:1).EQ.
'Q')
THEN 354 xm(ielem, 1) = xn(ielem, 3)
355 xm(ielem, 2) = xn(ielem, 5)
356 xm(ielem, 3) = xn(ielem, 7)
357 xm(ielem, 4) = xn(ielem, 10)
358 xm(ielem, 5) = xn(ielem, 13)
359 xm(ielem, 6) = xn(ielem, 1)
360 xm(ielem, 7) = xn(ielem, 6)
361 xm(ielem, 8) = xn(ielem, 8)
362 xm(ielem, 9) = xn(ielem, 11)
363 xm(ielem, 10) = xn(ielem, 14)
364 xm(ielem, 11) = xn(ielem, 2)
365 xm(ielem, 12) = xn(ielem, 4)
366 xm(ielem, 13) = xn(ielem, 9)
367 xm(ielem, 14) = xn(ielem, 12)
368 xm(ielem, 15) = xn(ielem, 15)
372 ELSEIF(typexm(1:1).NE.
'0')
THEN 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,
'OM1113 (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,
'OM1113 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine om1113(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, D, C, IKLE, NELEM, NELMAX, NDIAG)