5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn,c,
6 & ndiag,nseg1,nbor,nptfr,ielm1,ieln1,nseg11,
100 INTEGER,
INTENT(IN) :: NDIAG,NSEG1,NPTFR,IELM1,IELN1,NSEG11
101 INTEGER,
INTENT(IN) :: NELEBX,NELEB
102 INTEGER,
INTENT(IN) :: NBOR(*),IKLBOR(nelebx,*)
103 CHARACTER(LEN=8),
INTENT(IN) :: OP
104 DOUBLE PRECISION,
INTENT(IN) :: DN(*),XN(nelebx,*)
105 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nseg1,*)
106 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
107 DOUBLE PRECISION,
INTENT(IN) :: C
112 DOUBLE PRECISION Z(1)
116 IF(op(1:8).EQ.
'M=M+N ')
THEN 118 IF(typdim.EQ.
'Q'.AND.typdim.EQ.
'Q'.AND.ndiag.GE.nptfr)
THEN 119 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
121 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 124 dm(nbor(k))=dm(nbor(k))+dn(k)
128 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
129 199
FORMAT(1x,
'OMSEGBOR (BIEF) : TYPDIM = ',a1,
' NOT IMPLEMENTED',
130 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPDIN = ',a1)
141 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 144 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 147 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,1),
149 CALL ov(
'X=X+Y ', x=xm( 1,2), y=xn(1,4),
151 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,2),
153 CALL ov(
'X=X+Y ', x=xm( nseg11+1,2), y=xn(1,5),
155 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,3),
157 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,2), y=xn(1,6),
161 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,1), dim1=neleb)
162 CALL ov(
'X=X+Y ', x=xm(1,2), y=xn(1,2), dim1=neleb)
165 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 168 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 170 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,1),
172 CALL ov(
'X=X+Y ', x=xm( 1,2), y=xn(1,1),
174 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,2),
176 CALL ov(
'X=X+Y ', x=xm( nseg11+1,2), y=xn(1,2),
178 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,3),
180 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,2), y=xn(1,3),
184 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,1), dim1=neleb)
185 CALL ov(
'X=X+Y ', x=xm(1,2), y=xn(1,1), dim1=neleb)
188 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 191 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 193 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,1),
195 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,2),
197 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,3),
201 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,1), dim1=neleb)
206 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
207 99
FORMAT(1x,
'OMSEGBOR (BIEF) : TYPEXM = ',a1,
' DOES NOT GO',
208 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
216 ELSEIF(op(1:8).EQ.
'M=M+TN ')
THEN 218 IF(typdim.EQ.
'Q'.AND.typdim.EQ.
'Q'.AND.ndiag.GE.nptfr)
THEN 219 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
221 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 224 dm(nbor(k))=dm(nbor(k))+dn(k)
228 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
233 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 236 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 238 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,4),
240 CALL ov(
'X=X+Y ', x=xm( 1,2), y=xn(1,1),
242 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,5),
244 CALL ov(
'X=X+Y ', x=xm( nseg11+1,2), y=xn(1,2),
246 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,6),
248 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,2), y=xn(1,3),
251 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,2), dim1=neleb)
252 CALL ov(
'X=X+Y ', x=xm(1,2), y=xn(1,1), dim1=neleb)
255 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 258 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 260 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,1),
262 CALL ov(
'X=X+Y ', x=xm( 1,2), y=xn(1,1),
264 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,2),
266 CALL ov(
'X=X+Y ', x=xm( nseg11+1,2), y=xn(1,2),
268 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,3),
270 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,2), y=xn(1,3),
273 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,1), dim1=neleb)
274 CALL ov(
'X=X+Y ', x=xm(1,2), y=xn(1,1), dim1=neleb)
277 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 280 IF(ielm1.EQ.13.AND.ieln1.EQ.2)
THEN 282 CALL ov(
'X=X+Y ', x=xm( 1,1), y=xn(1,1),
284 CALL ov(
'X=X+Y ', x=xm( nseg11+1,1), y=xn(1,2),
286 CALL ov(
'X=X+Y ', x=xm(2*nseg11+1,1), y=xn(1,3),
289 CALL ov(
'X=X+Y ', x=xm(1,1), y=xn(1,1), dim1=neleb)
294 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
305 71
FORMAT(1x,
'OMSEGBOR (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine omsegbor(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NDIAG, NSEG1, NBOR, NPTFR, IELM1, IELN1, NSEG11, IKLBOR, NELEBX, NELEB)
subroutine ovdb(OP, X, Y, Z, C, NBOR, NPTFR)