The TELEMAC-MASCARET system  trunk
sd_nroc.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE sd_nroc
3 ! ******************
4 !
5  &(n, ic, ia, ja, a, jar, ar, p, flag)
6 !
7 !***********************************************************************
8 ! BIEF V6P3 30/06/2013
9 !***********************************************************************
10 !
11 !brief SPARSE MATRIX PACKAGE - NONSYMMETRIC CODES
12 ! REORDERS ROWS OF A, LEAVING ROW ORDER UNCHANGED
13 !
14 ! REORDERS ROWS OF A, LEAVING ROW ORDER UNCHANGED
15 !
16 !
17 ! PARAMETERS USED INTERNALLY..
18 ! NIA P - AT THE KTH STEP, P IS A LINKED LIST OF THE REORDERED
19 ! COLUMN INDICES OF THE KTH ROW OF A. P(N+1) POINTS
20 ! TO THE FIRST ENTRY IN THE LIST.
21 ! SIZE = N+1.
22 ! NIA JAR - AT THE KTH STEP,JAR CONTAINS THE ELEMENTS OF THE
23 ! REORDERED COLUMN INDICES OF A.
24 ! SIZE = N.
25 ! FIA AR - AT THE KTH STEP, AR CONTAINS THE ELEMENTS OF THE
26 ! REORDERED ROW OF A.
27 ! SIZE = N.
28 !
29 !note IMPORTANT : INSPIRED FROM PACKAGE CMLIB3 - YALE UNIVERSITE-YSMP
30 !
31 ! DON'T HESITATE TO CHANGE IN/OUTPUT VARIABLES COMMENTS
32 ! FOR CLARITY
33 !
34 !history C. PEYRARD (LNHE)
35 !+ 30/06/13
36 !+ V6P3
37 !+
38 !
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !| A |-->|NONZERO ENTRIES OF THE COEFFICIENT MATRIX M,
41 !| | |STORED BY ROWS
42 !| IA ,JA |-->|POINTERS TO DELIMIT THE ROWS IN A ; SIZE = N+1
43 !| IL, JL |-->| STRUCTURE OF LOWER FACTORISED TRIANGULAR MATRIX
44 !| IU, JU |-->| STRUCTURE OF UPPER FACTORISED TRIANGULAR MATRIX
45 !| IJU,IJL |-->| USED TO COMPRESS STORAGE OF JU and JL
46 !| IC |-->|INVERSE OF THE ORDERING OF THE COLUMNS OF MATRIX
47 !| N |-->| RANK OF MATRIX
48 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49 !
51  IMPLICIT NONE
52 !
53 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
54 !
55  INTEGER IC(*), IA(*), JA(*), JAR(*), P(*), FLAG
56  INTEGER K,N,JMAX,J,NEWJ,I,JMIN
57  DOUBLE PRECISION A(*), AR(*)
58 !
59 ! ****** FOR EACH NONEMPTY ROW *******************************
60  DO k=1,n
61  jmin = ia(k)
62  jmax = ia(k+1) - 1
63  IF(jmin .GT. jmax) cycle
64  p(n+1) = n + 1
65 ! ****** INSERT EACH ELEMENT IN THE LIST *********************
66  DO j=jmin,jmax
67  newj = ic(ja(j))
68  i = n + 1
69  DO
70  IF(p(i) .GE. newj) EXIT
71  i = p(i)
72  ENDDO
73  IF(p(i) .EQ. newj) THEN
74 ! ** ERROR.. DUPLICATE ENTRY IN A
75  flag = n + k
76  RETURN
77  ENDIF
78  p(newj) = p(i)
79  p(i) = newj
80  jar(newj) = ja(j)
81  ar(newj) = a(j)
82  ENDDO ! J
83 ! ****** REPLACE OLD ROW IN JA AND A *************************
84  i = n + 1
85  DO j=jmin,jmax
86  i = p(i)
87  ja(j) = jar(i)
88  a(j) = ar(i)
89  ENDDO ! J
90  ENDDO ! K
91  flag = 0
92 !
93  RETURN
94 !
95  END
subroutine sd_nroc(N, IC, IA, JA, A, JAR, AR, P, FLAG)
Definition: sd_nroc.f:7