5 &(db,xb,typdia,xa,typexa,
6 & ikle,nelem,nelmax,npoin,w,copy,lv)
82 INTEGER,
INTENT(IN) :: NELEM,NELMAX,LV,NPOIN
83 DOUBLE PRECISION,
INTENT(INOUT) :: DB(npoin),XB(nelmax,*)
84 DOUBLE PRECISION,
INTENT(IN) :: XA(nelmax,*)
85 CHARACTER(LEN=1),
INTENT(IN) :: TYPDIA,TYPEXA
86 INTEGER,
INTENT(IN) :: IKLE(nelmax,*)
87 DOUBLE PRECISION,
INTENT(OUT) :: W(nelmax,6)
88 LOGICAL,
INTENT(IN) :: COPY
94 DOUBLE PRECISION A12,A13,A14,A15,A16
95 DOUBLE PRECISION A21,A22,A23,A24,A25,A26
96 DOUBLE PRECISION A31,A32,A33,A34,A35,A36
97 DOUBLE PRECISION A41,A42,A43,A44,A45,A46
98 DOUBLE PRECISION A51,A52,A53,A54,A55,A56
99 DOUBLE PRECISION A61,A62,A63,A64,A65,A66
100 DOUBLE PRECISION BETA12,BETA13,BETA14,BETA15,BETA16
101 DOUBLE PRECISION ALFA21,BETA22,BETA23,BETA24,BETA25,BETA26
102 DOUBLE PRECISION ALFA31,ALFA32,BETA33,BETA34,BETA35,BETA36
103 DOUBLE PRECISION ALFA41,ALFA42,ALFA43,BETA44,BETA45,BETA46
104 DOUBLE PRECISION ALFA51,ALFA52,ALFA53,ALFA54,BETA55,BETA56
105 DOUBLE PRECISION ALFA61,ALFA62,ALFA63,ALFA64,ALFA65,BETA66
111 IF(typdia(1:1).NE.
'I'.AND.ncsize.LE.1)
THEN 112 WRITE(
lu,1001) typdia(1:1)
113 1001
FORMAT(1x,
'DLDU41 (BIEF) : DIAGONAL OF A NOT EQUAL TO I :',a1)
120 IF(typexa(1:1).EQ.
'S')
THEN 122 IF(copy)
CALL ov(
'X=Y ', x=xb, y=xa, dim1=nelmax*15)
167 beta22 = a22 - alfa21*beta12
168 alfa32 = (a23 - alfa31*beta12)/beta22
169 alfa42 = (a24 - alfa41*beta12)/beta22
170 alfa52 = (a25 - alfa51*beta12)/beta22
171 alfa62 = (a26 - alfa61*beta12)/beta22
175 beta23 = a23 - alfa21*beta13
176 beta33 = a33 - alfa31*beta13 - alfa32*beta23
177 alfa43 = (a34 - alfa41*beta13 - alfa42*beta23)/beta33
178 alfa53 = (a35 - alfa51*beta13 - alfa52*beta23)/beta33
179 alfa63 = (a36 - alfa61*beta13 - alfa62*beta23)/beta33
183 beta24 = a24 - alfa21*beta14
184 beta34 = a34 - alfa31*beta14 - alfa32*beta24
185 beta44 = a44 - alfa41*beta14 - alfa42*beta24 - alfa43*beta34
186 alfa54 = (a45 - alfa51*beta14 - alfa52*beta24 - alfa53*beta34
188 alfa64 = (a46 - alfa61*beta14 - alfa62*beta24 - alfa63*beta34
193 beta25 = a25 - alfa21*beta15
194 beta35 = a35 - alfa31*beta15 - alfa32*beta25
195 beta45 = a45 - alfa41*beta15 - alfa42*beta25 - alfa43*beta35
196 beta55 = a55 - alfa51*beta15 - alfa52*beta25 - alfa53*beta35
198 alfa65 = (a56 - alfa61*beta15 - alfa62*beta25 - alfa63*beta35
204 beta26 = a26 - alfa21*beta16
205 beta36 = a36 - alfa31*beta16 - alfa32*beta26
206 beta46 = a46 - alfa41*beta16 - alfa42*beta26 - alfa43*beta36
207 beta56 = a56 - alfa51*beta16 - alfa52*beta26 - alfa53*beta36
209 beta66 = a66 - alfa61*beta16 - alfa62*beta26 - alfa63*beta36
210 & - alfa64*beta46 - alfa65*beta56
214 xb(ielem,1 ) = alfa21
215 xb(ielem,2 ) = alfa31
216 xb(ielem,3 ) = alfa41
217 xb(ielem,4 ) = alfa51
218 xb(ielem,5 ) = alfa61
220 xb(ielem,6 ) = alfa32
221 xb(ielem,7 ) = alfa42
222 xb(ielem,8 ) = alfa52
223 xb(ielem,9 ) = alfa62
225 xb(ielem,10) = alfa43
226 xb(ielem,11) = alfa53
227 xb(ielem,12) = alfa63
229 xb(ielem,13) = alfa54
230 xb(ielem,14) = alfa64
232 xb(ielem,15) = alfa65
244 ELSEIF(typexa(1:1).EQ.
'Q')
THEN 246 IF(copy)
CALL ov(
'X=Y ', x=xb, y=xa, dim1=nelmax*30)
306 beta22 = a22 - alfa21*beta12
307 alfa32 = (a32 - alfa31*beta12)/beta22
308 alfa42 = (a42 - alfa41*beta12)/beta22
309 alfa52 = (a52 - alfa51*beta12)/beta22
310 alfa62 = (a62 - alfa61*beta12)/beta22
314 beta23 = a23 - alfa21*beta13
315 beta33 = a33 - alfa31*beta13 - alfa32*beta23
316 alfa43 = (a43 - alfa41*beta13 - alfa42*beta23)/beta33
317 alfa53 = (a53 - alfa51*beta13 - alfa52*beta23)/beta33
318 alfa63 = (a63 - alfa61*beta13 - alfa62*beta23)/beta33
322 beta24 = a24 - alfa21*beta14
323 beta34 = a34 - alfa31*beta14 - alfa32*beta24
324 beta44 = a44 - alfa41*beta14 - alfa42*beta24 - alfa43*beta34
325 alfa54 = (a54 - alfa51*beta14 - alfa52*beta24 - alfa53*beta34
327 alfa64 = (a64 - alfa61*beta14 - alfa62*beta24 - alfa63*beta34
332 beta25 = a25 - alfa21*beta15
333 beta35 = a35 - alfa31*beta15 - alfa32*beta25
334 beta45 = a45 - alfa41*beta15 - alfa42*beta25 - alfa43*beta35
335 beta55 = a55 - alfa51*beta15 - alfa52*beta25 - alfa53*beta35
337 alfa65 = (a65 - alfa61*beta15 - alfa62*beta25 - alfa63*beta35
343 beta26 = a26 - alfa21*beta16
344 beta36 = a36 - alfa31*beta16 - alfa32*beta26
345 beta46 = a46 - alfa41*beta16 - alfa42*beta26 - alfa43*beta36
346 beta56 = a56 - alfa51*beta16 - alfa52*beta26 - alfa53*beta36
348 beta66 = a66 - alfa61*beta16 - alfa62*beta26 - alfa63*beta36
349 & - alfa64*beta46 - alfa65*beta56
354 xb(ielem,1 ) = beta12
355 xb(ielem,2 ) = beta13
356 xb(ielem,3 ) = beta14
357 xb(ielem,4 ) = beta15
358 xb(ielem,5 ) = beta16
360 xb(ielem,6 ) = beta23/beta22
361 xb(ielem,7 ) = beta24/beta22
362 xb(ielem,8 ) = beta25/beta22
363 xb(ielem,9 ) = beta26/beta22
365 xb(ielem,10) = beta34/beta33
366 xb(ielem,11) = beta35/beta33
367 xb(ielem,12) = beta36/beta33
369 xb(ielem,13) = beta45/beta44
370 xb(ielem,14) = beta46/beta44
372 xb(ielem,15) = beta56/beta55
374 xb(ielem,16) = alfa21
375 xb(ielem,17) = alfa31
376 xb(ielem,18) = alfa41
377 xb(ielem,19) = alfa51
378 xb(ielem,20) = alfa61
380 xb(ielem,21) = alfa32
381 xb(ielem,22) = alfa42
382 xb(ielem,23) = alfa52
383 xb(ielem,24) = alfa62
385 xb(ielem,25) = alfa43
386 xb(ielem,26) = alfa53
387 xb(ielem,27) = alfa63
389 xb(ielem,28) = alfa54
390 xb(ielem,29) = alfa64
392 xb(ielem,30) = alfa65
405 WRITE(
lu,2001) typexa(1:1)
406 2001
FORMAT(1x,
'DLDU41 (BIEF) : TYPE OF MATRIX NOT AVAILABLE :',a1)
416 CALL asmvec(db,ikle(1,2),npoin,nelem,nelmax,5,w(1,2),.true.,lv)
420 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 dldu41(DB, XB, TYPDIA, XA, TYPEXA, IKLE, NELEM, NELMAX, NPOIN, W, COPY, LV)