5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
6 & nulone,nelbor,nbor,nelmax,ndiag,nptfr,nelebx,neleb)
109 INTEGER,
INTENT(IN) :: NELMAX,NDIAG,NPTFR,NELEBX,NELEB
110 CHARACTER(LEN=8),
INTENT(IN) :: OP
111 INTEGER,
INTENT(IN) :: NBOR(*)
112 INTEGER,
INTENT(IN) :: NULONE(nelebx),NELBOR(nelebx)
113 DOUBLE PRECISION,
INTENT(IN) :: DN(*),XN(*)
114 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
115 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
116 DOUBLE PRECISION,
INTENT(IN) :: C
122 DOUBLE PRECISION Z(1)
126 INTEGER :: CORNSY(3,2)
127 parameter( cornsy = reshape( (/
128 & 1,3,5, 4,6,2 /), shape=(/ 3,2 /) ) )
130 parameter( corsym = (/ 1,3,2 /) )
134 IF(op(1:8).EQ.
'M=M+N ')
THEN 136 IF(typdim.EQ.
'Q'.AND.typdim.EQ.
'Q'.AND.ndiag.GE.nptfr)
THEN 137 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
139 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
140 199
FORMAT(1x,
'OM1101 (BIEF) : TYPDIM = ',a1,
' NOT IMPLEMENTED',
141 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPDIN = ',a1)
146 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 152 xm( iel , cornsy(nulone(k),1) ) =
153 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
154 xm( iel , cornsy(nulone(k),2) ) =
155 & xm( iel , cornsy(nulone(k),2) ) + xn(k+nelebx)
158 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 164 xm( iel , cornsy(nulone(k),1) ) =
165 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
166 xm( iel , cornsy(nulone(k),2) ) =
167 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
170 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 176 xm( iel , corsym(nulone(k)) ) =
177 & xm( iel , corsym(nulone(k)) ) + xn(k)
181 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
182 99
FORMAT(1x,
'OM1101 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO',
183 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
190 ELSEIF(op(1:8).EQ.
'M=M+TN ')
THEN 192 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
194 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 200 xm( iel , cornsy(nulone(k),1) ) =
201 & xm( iel , cornsy(nulone(k),1) ) + xn(k+nelebx)
202 xm( iel , cornsy(nulone(k),2) ) =
203 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
206 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 212 xm( iel , cornsy(nulone(k),1) ) =
213 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
214 xm( iel , cornsy(nulone(k),2) ) =
215 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
218 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 224 xm( iel , corsym(nulone(k)) ) =
225 & xm( iel , corsym(nulone(k)) ) + xn(k)
229 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
239 71
FORMAT(1x,
'OM1101 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine ovdb(OP, X, Y, Z, C, NBOR, NPTFR)
subroutine om1101(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, NDIAG, NPTFR, NELEBX, NELEB)