5 &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
6 & nulone,nelbor,nbor,nelmax,ndiag,nptfr,nelebx,neleb)
114 INTEGER,
INTENT(IN) :: NELMAX,NDIAG,NPTFR,NELEBX,NELEB
115 CHARACTER(LEN=8),
INTENT(IN) :: OP
116 INTEGER,
INTENT(IN) :: NULONE(nelebx),NELBOR(nelebx)
117 INTEGER,
INTENT(IN) :: NBOR(*)
118 DOUBLE PRECISION,
INTENT(IN) :: DN(*),XN(*)
119 DOUBLE PRECISION,
INTENT(INOUT) :: DM(*),XM(nelmax,*)
120 CHARACTER(LEN=1),
INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
121 DOUBLE PRECISION,
INTENT(IN) :: C
127 DOUBLE PRECISION Z(1)
131 INTEGER :: CORNSY(4,2)
132 parameter( cornsy = reshape( (/
133 & 1,4,8,0, 7,10,2,0/), shape=(/ 4,2 /) ) )
135 parameter( corsym = (/ 1,4,2,0 /) )
139 IF(op(1:8).EQ.
'M=M+N ')
THEN 141 IF(typdim.EQ.
'Q'.AND.typdim.EQ.
'Q'.AND.ndiag.GE.nptfr)
THEN 142 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
144 WRITE(
lu,199) typdim(1:1),op(1:8),typdin(1:1)
145 199
FORMAT(1x,
'OM1201 (BIEF) : TYPDIM = ',a1,
' NOT IMPLEMENTED',
146 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPDIN = ',a1)
151 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 157 xm( iel , cornsy(nulone(k),1) ) =
158 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
159 xm( iel , cornsy(nulone(k),2) ) =
160 & xm( iel , cornsy(nulone(k),2) ) + xn(k+nelebx)
163 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 169 xm( iel , cornsy(nulone(k),1) ) =
170 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
171 xm( iel , cornsy(nulone(k),2) ) =
172 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
175 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 181 xm( iel , corsym(nulone(k)) ) =
182 & xm( iel , corsym(nulone(k)) ) + xn(k)
186 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
187 99
FORMAT(1x,
'OM1201 (BIEF) : TYPEXM = ',a1,
' DOES NOT GO',
188 & /,1x,
'FOR THE OPERATION : ',a8,
' WITH TYPEXN = ',a1)
195 ELSEIF(op(1:8).EQ.
'M=M+TN ')
THEN 197 CALL ovdb(
'X=X+Y ' , dm , dn , z , c , nbor , nptfr )
199 IF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'Q')
THEN 205 xm( iel , cornsy(nulone(k),1) ) =
206 & xm( iel , cornsy(nulone(k),1) ) + xn(k+nelebx)
207 xm( iel , cornsy(nulone(k),2) ) =
208 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
211 ELSEIF(typexm(1:1).EQ.
'Q'.AND.typexn(1:1).EQ.
'S')
THEN 217 xm( iel , cornsy(nulone(k),1) ) =
218 & xm( iel , cornsy(nulone(k),1) ) + xn(k)
219 xm( iel , cornsy(nulone(k),2) ) =
220 & xm( iel , cornsy(nulone(k),2) ) + xn(k)
223 ELSEIF(typexm(1:1).EQ.
'S'.AND.typexn(1:1).EQ.
'S')
THEN 229 xm( iel , corsym(nulone(k)) ) =
230 & xm( iel , corsym(nulone(k)) ) + xn(k)
234 WRITE(
lu,99) typexm(1:1),op(1:8),typexn(1:1)
244 141
FORMAT(1x,
'OM1201 (BIEF) : UNKNOWN OPERATION : ',a8)
subroutine om1201(OP, DM, TYPDIM, XM, TYPEXM, DN, TYPDIN, XN, TYPEXN, C, NULONE, NELBOR, NBOR, NELMAX, NDIAG, NPTFR, NELEBX, NELEB)
subroutine ovdb(OP, X, Y, Z, C, NBOR, NPTFR)