CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C THIS DRIVING PROGRAM RUNS THE DOUBLE PRECISION ABDPACK PACKAGE C ON A SAMPLE PROBLEM. C C THE SAMPLE SYSTEM GIVEN IN THE DATA STATEMENTS CONSISTS OF C A SYSTEM OF 18 EQUATIONS. THERE ARE TWO BLOCKS C (CORRESPONDING TO TWO SUBINTERVALS IN THE COLLOCATION). C C THUS, N (ORDER) = 18; NBLOKS (NO. OF BLOCKS) = 2; C NOVRLP = 4; NRWBLK (ROWS IN ARRAY1) = 3; C NRWTOP= NRWBOT = 2. C C THE COEFFICIENT MATRIX OF THE SYSTEM IS (WITH ONLY THE C ELEMENTS PASSED TO ABDLEQ SHOWN): C C 1 1 2 3 C 1 2 6 3 TOPBLK(1:2,1:4) C----------------------------------------------------------------------- C 1 2 2 1 3 4 20 C 2 3 4 1 5 50 1 C 3 4 50 1 1 2 3 ARRAY1(1:3,1:7,1) C----------------------------------------------------------------------- C 1 2 3 4 5 40 1 1 0 0 0 C 2 3 4 5 1 2 1 0 1 0 0 C 3 4 5 1 2 3 20 0 0 1 0 C 4 5 1 2 3 4 5 0 0 0 1 ARRAY2(1:4,1:11,1) C----------------------------------------------------------------------- C 1 2 2 1 3 4 20 C 2 3 4 1 5 50 1 C ARRAY1(1:3,1:7,2) 3 4 50 1 1 2 3 C----------------------------------------------------------------------- C 1 2 3 4 5 40 1 1 0 0 0 C 2 3 4 5 1 2 30 0 1 0 0 C 3 4 5 1 2 3 20 0 0 1 0 C ARRAY(1:4,1:11,2) 4 5 1 2 3 4 5 0 0 0 1 C----------------------------------------------------------------------- C 1 2 1 1 C BOTBLK(1:2,1:4) 2 3 40 10 C----------------------------------------------------------------------- C C THE RIGHT HAND SIDE HAS BEEN CHOSEN TO MAKE THE EXACT SOLUTION C EQUAL TO (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), AND IS: C C B(1:18) = 7,12,33,66,64,57,19,39,25,33,66,64,57,48,39,25,5,55 . C----------------------------------------------------------------------- C C THE PROGRAM ABDLEQ FIRST CALLS THE DECOMPOSITION PROCEDURE C ABDDEC AND THEN THE SOLVE PROCEDURE ABDSOL PROVIDED IFLAG C IS ZERO. THE CODE FOR THE SEPARATE CALLS IS INCLUDED AS C COMMENTS AFTER THE CALL TO ABDLEQ. C C THE OUTPUT FROM THIS DRIVER ON A SUN 4/280 UNDER UNIX, USING F77 C IN DOUBLE PRECISION WAS : C C IFLAG = 0 C PIVOT VECTOR (FIRST 17 COMPONENTS): C 4,3,7,6,7,9,8,10,11,14,13,13,14,16,17,18,18. C C SOLUTION : C C 0.1000000000000002D+01 0.1000000000000002D+01 C 0.9999999999999996D+00 0.9999999999999993D+00 C 0.1000000000000008D+01 0.9999999999999991D+00 C 0.9999999999999987D+00 0.9999999999999963D+00 C 0.9999999999999901D+00 0.1000000000000002D+01 C 0.9999999999999710D+00 0.9999999999998995D+00 C 0.1000000000000011D+01 0.1000000000000016D+01 C 0.1000000000000185D+01 0.9999999999997909D+00 C 0.9999999999999312D+00 0.1000000000000300D+01 C C IT SHOULD BE NOTED THAT PIVOTING WAS CARRIED OUT AT EVERY STEP IN C THIS EXAMPLE, AS INDICATED BY THE RESULTING PIVOT VECTOR. C C THE FOLLOWING SEQUENCE OF PIVOTING WAS CARRIED OUT: C C INTERCHANGE OF COLUMNS 1 AND 4, AND OF COLUMNS 2 AND 3 IN TOPBLK. C INTERCHANGE OF COLUMNS 3 AND 7, 4 AND 6, AND OF 5 AND 7 IN C ARRAY1(:,:,1). C INTERCHANGE OF ROWS 6 AND 9, AND OF ROWS 7 AND 8 IN C ARRAY2(:,:,1). C INTERCHANGE OF COLUMNS 8 AND 10, AND OF 9 AND 11 IN ARRAY2(:,:,1) C INTERCHANGE OF COLUMNS 10 AND 14, 11 AND 13, AND OF 12 AND 13 IN C ARRAY1(:,:,2). C INTERCHANGE OF ROWS 13 AND 14, AND OF ROWS 14 AND 16 IN C ARRAY2(:,:,2). C INTERCHANGE OF COLUMNS 15 AND 17, AND OF 16 AND 18 IN C ARRAY2(:,:,2). C INTERCHANGE OF ROWS 17 AND 18 IN BOTBLK. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DOUBLE PRECISION TOPBLK(2,4),ARRAY1(3,7,2),ARRAY2(4,11,2), * BOTBLK(2,4),B(18),X(18) INTEGER N,NTOP,NOVRLP,NRWBLK,NBLOKS,PIVOT(18),IFLAG INTEGER I,NOUT DATA NOUT /6 / DATA N,NTOP,NOVRLP,NRWBLK,NBLOKS /18,2,4,3,2 / DATA TOPBLK / * 1.0D0, 1.0D0, 1.0D0, 2.0D0, 2.0D0, 6.0D0, 3.0D0, 3.0D0 / C C THE ARRAYS ARRAY1, ARRAY2 ARE GIVEN IN THE FOLLOWING DATA C STATEMENTS, WITH EACH BLOCK BEING GIVEN BY COLUMNS: C DATA ARRAY1 / * 1.0D0, 2.0D0, 3.0D0, 2.0D0, 3.0D0, 4.0D0, 2.0D0, 4.0D0, * 50.0D0, 1.0D0, 1.0D0, 1.0D0, 3.0D0, 5.0D0, 1.0D0, 4.0D0, * 50.0D0, 2.0D0, 20.0D0, 1.0D0, 3.0D0, * 1.0D0, 2.0D0, 3.0D0, 2.0D0, 3.0D0, 4.0D0, 2.0D0, 4.0D0, * 50.0D0, 1.0D0, 1.0D0, 1.0D0, 3.0D0, 5.0D0, 1.0D0, 4.0D0, * 50.0D0, 2.0D0, 20.0D0, 1.0D0, 3.0D0 / DATA ARRAY2 / * 1.0D0, 2.0D0, 3.0D0, 4.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, * 3.0D0, 4.0D0, 5.0D0, 1.0D0, 4.0D0, 5.0D0, 1.0D0, 2.0D0, * 5.0D0, 1.0D0, 2.0D0, 3.0D0, 40.0D0, 2.0D0, 3.0D0, 4.0D0, * 1.0D0, 1.0D0, 20.0D0, 5.0D0, 1.0D0, 0.0D0, 0.0D0, 0.0D0, * 0.0D0, 1.0D0, 0.0D0, 0.0D0, 0.0D0, 0.0D0, 1.0D0, 0.0D0, * 0.0D0, 0.0D0, 0.0D0, 1.0D0, * 1.0D0, 2.0D0, 3.0D0, 4.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, * 3.0D0, 4.0D0, 5.0D0, 1.0D0, 4.0D0, 5.0D0, 1.0D0, 2.0D0, * 5.0D0, 1.0D0, 2.0D0, 3.0D0, 40.0D0, 2.0D0, 3.0D0, 4.0D0, * 1.0D0, 30.0D0, 20.0D0, 5.0D0, 1.0D0, 0.0D0, 0.0D0, 0.0D0, * 0.0D0, 1.0D0, 0.0D0, 0.0D0, 0.0D0, 0.0D0, 1.0D0, 0.0D0, * 0.0D0, 0.0D0, 0.0D0, 1.0D0 / DATA BOTBLK / * 1.0D0, 2.0D0, 2.0D0, 3.0D0, 1.0D0, 40.0D0, 1.0D0, 10.0D0 / C RIGHT HAND SIDE B : DATA B / * 7.0D0, 12.0D0, 33.0D0, 66.0D0, 64.0D0, 57.0D0, 19.0D0, * 39.0D0, 25.0D0, 33.0D0, 66.0D0, 64.0D0, 57.0D0, 48.0D0, * 39.0D0, 25.0D0, 5.0D0, 55.0D0/ CALL ABDLEQ(N,TOPBLK,NTOP,NOVRLP,ARRAY1,NRWBLK,NBLOKS,ARRAY2, * BOTBLK,PIVOT,B,X,IFLAG) C THE SAME CALCULATION COULD BE DONE BY THE FOLLOWING SEPARATE C CALLS TO ABDDEC AND ABDSOL. C C FIRST, CALL THE DECOMPOSITION ROUTINE ABDDEC. C C CALL ABDDEC(N, TOPBLK, NTOP, NOVRLP, ARRAY1, NRWBLK, C * NBLOKS, ARRAY2, BOTBLK, PIVOT, IFLAG) C UNLESS A IS NUMERICALLY SINGULAR OR THE PARAMETERS ARE C IMPROPERLY DEFINED, CALL ABDSOL. C IF ( IFLAG .EQ. 0 ) THEN C CALL ABDSOL(N, TOPBLK, NTOP, NOVRLP, ARRAY1, NRWBLK, C * NBLOKS, ARRAY2, BOTBLK, PIVOT, B,X) C ENDIF WRITE(NOUT,1000)IFLAG IF ( IFLAG .EQ. 0 ) THEN WRITE(NOUT,2000) WRITE(NOUT,3000)(PIVOT(I),I=1,N-1) WRITE(NOUT,4000) WRITE(NOUT,5000)(X(I),I=1,N) ELSE IF ( IFLAG .EQ. 1 ) WRITE(NOUT,7000) IF ( IFLAG .EQ. -1) WRITE(NOUT,6000) ENDIF STOP 1000 FORMAT(9H IFLAG = ,I4) 2000 FORMAT(16H PIVOT VECTOR : ) 3000 FORMAT(15I4) 4000 FORMAT(12H SOLUTION : ) 5000 FORMAT(2D25.16) 6000 FORMAT(30H MATRIX APPEARS TO BE SINGULAR) 7000 FORMAT(20H IMPROPER PARAMETERS) END C C####################################################################### C