5 &(db,xb,typdia,xa,typexa,ikle,nelem,nelmax,npoin,w,copy,lv)
81 INTEGER,
INTENT(IN) :: NELEM,NELMAX,LV,NPOIN
82 DOUBLE PRECISION,
INTENT(INOUT) :: DB(npoin),XB(nelmax,*)
83 DOUBLE PRECISION,
INTENT(IN) :: XA(nelmax,*)
84 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXA
85 INTEGER,
INTENT(IN) :: IKLE(nelmax,*)
86 DOUBLE PRECISION,
INTENT(OUT) :: W(nelmax,4)
87 LOGICAL,
INTENT(IN) :: COPY
93 DOUBLE PRECISION A12,A13,A14
94 DOUBLE PRECISION A21,A22,A23,A24
95 DOUBLE PRECISION A31,A32,A33,A34
96 DOUBLE PRECISION A41,A42,A43,A44
97 DOUBLE PRECISION BETA12,BETA13,BETA14
98 DOUBLE PRECISION ALFA21,BETA22,BETA23,BETA24
99 DOUBLE PRECISION ALFA31,ALFA32,BETA33,BETA34
100 DOUBLE PRECISION ALFA41,ALFA42,ALFA43,BETA44
106 IF(typdia(1:1).NE.
'I'.AND.ncsize.LE.1)
THEN 107 WRITE(
lu,1001) typdia(1:1)
108 1001
FORMAT(1x,
'DLDU21 (BIEF) : DIAGONAL OF A NOT EQUAL TO I :',a1)
115 IF(typexa(1:1).EQ.
'S')
THEN 117 IF(copy)
CALL ov(
'X=Y ', x=xb, y=xa, dim1=nelmax*6)
145 beta22 = a22 - alfa21*beta12
146 alfa32 = (a23 - alfa31*beta12)/beta22
147 alfa42 = (a24 - alfa41*beta12)/beta22
150 beta23 = a23 - alfa21*beta13
151 beta33 = a33 - alfa31*beta13 - alfa32*beta23
152 alfa43 = (a34 - alfa41*beta13 - alfa42*beta23)/beta33
155 beta24 = a24 - alfa21*beta14
156 beta34 = a34 - alfa31*beta14 - alfa32*beta24
157 beta44 = a44 - alfa41*beta14 - alfa42*beta24 - alfa43*beta34
161 xb(ielem,1 ) = alfa21
162 xb(ielem,2 ) = alfa31
163 xb(ielem,3 ) = alfa41
164 xb(ielem,4 ) = alfa32
165 xb(ielem,5 ) = alfa42
166 xb(ielem,6 ) = alfa43
176 ELSEIF(typexa(1:1).EQ.
'Q')
THEN 178 IF(copy)
CALL ov(
'X=Y ', x=xb, y=xa, dim1=nelmax*12)
210 beta22 = a22 - alfa21*beta12
211 alfa32 = (a32 - alfa31*beta12)/beta22
212 alfa42 = (a42 - alfa41*beta12)/beta22
215 beta23 = a23 - alfa21*beta13
216 beta33 = a33 - alfa31*beta13 - alfa32*beta23
217 alfa43 = (a43 - alfa41*beta13 - alfa42*beta23)/beta33
220 beta24 = a24 - alfa21*beta14
221 beta34 = a34 - alfa31*beta14 - alfa32*beta24
222 beta44 = a44 - alfa41*beta14 - alfa42*beta24 - alfa43*beta34
227 xb(ielem,1 ) = beta12
228 xb(ielem,2 ) = beta13
229 xb(ielem,3 ) = beta14
230 xb(ielem,4 ) = beta23/beta22
231 xb(ielem,5 ) = beta24/beta22
232 xb(ielem,6 ) = beta34/beta33
234 xb(ielem,07) = alfa21
235 xb(ielem,08) = alfa31
236 xb(ielem,09) = alfa41
237 xb(ielem,10) = alfa32
238 xb(ielem,11) = alfa42
239 xb(ielem,12) = alfa43
250 WRITE(
lu,2001) typexa(1:1)
251 2001
FORMAT(1x,
'DLDU21 (BIEF) : TYPE OF MATRIX NOT AVAILABLE :',a1)
261 CALL asmvec(db,ikle(1,2),npoin,nelem,nelmax,3,w(1,2),.true.,lv)
265 CALL ov(
'X=1/Y ', x=db, y=db, dim1=npoin)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine asmvec(X, IKLE, NPOIN, NELEM, NELMAX, NDP, W, INIT, LV)
subroutine dldu21(DB, XB, TYPDIA, XA, TYPEXA, IKLE, NELEM, NELMAX, NPOIN, W, COPY, LV)