|
| 1 | + SUBROUTINE ARRAYD(MODE,I,J,N,M,S,D) |
| 2 | +c dimension S(100),D(100) |
| 3 | +c dimension S(400),D(400) |
| 4 | + dimension S(n*m),D(n*m) |
| 5 | + DOUBLE PRECISION S,D |
| 6 | +C#### MODIF 02/20/90 04:17pm for 20x20 arrays |
| 7 | +C .................................................................. |
| 8 | +C |
| 9 | +C SUBROUTINE ARRAYD |
| 10 | +C ***dimension DOUBLE PRECISION S AND D ARGUMENTS- CAN BE THE SAME |
| 11 | +C PURPOSE |
| 12 | +C CONVERT DATA ARRAY FROM SINGLE TO DOUBLE DIMENSION OR VICE |
| 13 | +C VERSA. THIS SUBROUTINE IS USED TO LINK THE USER PROGRAM |
| 14 | +C WHICH HAS DOUBLE DIMENSION ARRAYS AND THE SSP SUBROUTINES |
| 15 | +C WHICH OPERATE ON ARRAYS OF DATA IN A VECTOR FASHION. |
| 16 | +C |
| 17 | +C USAGE |
| 18 | +C CALL ARRAYD(MODE,I,J,N,M,S,D) |
| 19 | +C |
| 20 | +C DESCRIPTION OF PARAMETERS |
| 21 | +C MODE - CODE INDICATING TYPE OF CONVERSION |
| 22 | +C 1 - FROM SINGLE TO DOUBLE DIMENSION |
| 23 | +C 2 - FROM DOUBLE TO SINGLE DIMENSION |
| 24 | +C I - NUMBER OF ROWS IN ACTUAL DATA MATRIX |
| 25 | +C J - NUMBER OF COLUMNS IN ACTUAL DATA MATRIX |
| 26 | +C N - NUMBER OF ROWS SPECIFIED FOR THE MATRIX D IN |
| 27 | +C DIMENSION STATEMENT |
| 28 | +C M - NUMBER OF COLUMNS SPECIFIED FOR THE MATRIX D IN |
| 29 | +C DIMENSION STATEMENT |
| 30 | +C S - IF MODE=1, THIS VECTOR IS INPUT WHICH CONTAINS THE |
| 31 | +C ELEMENTS OF A DATA MATRIX OF SIZE I BY J. COLUMN I+1 |
| 32 | +C OF DATA MATRIX FOLLOWS COLUMN I, ETC. IF MODE=2, |
| 33 | +C THIS VECTOR IS OUTPUT REPRESENTING A DATA MATRIX OF |
| 34 | +C SIZE I BY J CONTAINING ITS COLUMNS CONSECUTIVELY. |
| 35 | +C THE LENGTH OF S IS IJ, WHERE IJ=I*J. |
| 36 | +C D - IF MODE=1, THIS MATRIX OF SIZE N BY M IS OUTPUT, |
| 37 | +C CONTAINING A DATA MATRIX OF SIZE I BY J IN THE FIRST |
| 38 | +C I ROWS AND J COLUMNS. IF MODE=2, THIS N BY M MATRIX |
| 39 | +C IS INPUT CONTAINING A DATA MATRIX OF SIZE I BY J IN |
| 40 | +C THE FIRST I ROWS AND J COLUMNS. |
| 41 | +C |
| 42 | +C REMARKS |
| 43 | +C VECTOR S CAN BE IN THE SAME LOCATION AS MATRIX D. VECTOR S |
| 44 | +C IS REFERRED AS A MATRIX IN OTHER SSP ROUTINES, SINCE IT |
| 45 | +C CONTAINS A DATA MATRIX. |
| 46 | +C THIS SUBROUTINE CONVERTS ONLY GENERAL DATA MATRICES (STORAGE |
| 47 | +C MODE OF 0). |
| 48 | +C |
| 49 | +C SUBROUTINES AND FUNCTION SUBROUTINES REQUIRED |
| 50 | +C NONE |
| 51 | +C |
| 52 | +C METHOD |
| 53 | +C REFER TO THE DISCUSSION ON VARIABLE DATA SIZE IN THE SECTION |
| 54 | +C DESCRIBING OVERALL RULES FOR USAGE IN THIS MANUAL. |
| 55 | +C |
| 56 | +C .................................................................. |
| 57 | +C |
| 58 | +C |
| 59 | +c do 500 k=1,25 |
| 60 | +c500 print *,k,d(k) |
| 61 | +C |
| 62 | + NI=N-I |
| 63 | +C |
| 64 | +C TEST TYPE OF CONVERSION |
| 65 | +C |
| 66 | + IF(MODE-1) 100, 100, 120 |
| 67 | +C |
| 68 | +C CONVERT FROM SINGLE TO DOUBLE DIMENSION |
| 69 | +C |
| 70 | + 100 IJ=I*J+1 |
| 71 | + NM=N*J+1 |
| 72 | + DO 110 K=1,J |
| 73 | + NM=NM-NI |
| 74 | + DO 110 L=1,I |
| 75 | + IJ=IJ-1 |
| 76 | + NM=NM-1 |
| 77 | + 110 D(NM)=S(IJ) |
| 78 | + GO TO 140 |
| 79 | +C |
| 80 | +C CONVERT FROM DOUBLE TO SINGLE DIMENSION |
| 81 | +C |
| 82 | + 120 IJ=0 |
| 83 | + NM=0 |
| 84 | + DO 130 K=1,J |
| 85 | + DO 125 L=1,I |
| 86 | + IJ=IJ+1 |
| 87 | + NM=NM+1 |
| 88 | + 125 S(IJ)=D(NM) |
| 89 | + 130 NM=NM+NI |
| 90 | +C |
| 91 | +140 continue |
| 92 | +c do 501 k=1,25 |
| 93 | +c501 print *,k,s(k) |
| 94 | +c |
| 95 | + RETURN |
| 96 | + END |
0 commit comments