C ICGPRM    SOURCE    CHAT      05/01/13    00:28:12     5004
      SUBROUTINE ICGPRM(X,Y,P,IA,JA,NEL)
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                                                                   C
C  Effectue une rsolution par descente remonte de la matrice      C
C  de prconditionnement.                                           C
C  La matrice est stocke en morse dans P.                          C
C                                                                   C
C +---------------------------------------------------------------+ C
C ! DESCRIPTION DES ARGUMENTS                                     ! C
C !---------------------------------------------------------------! C
C !                                                               ! C
C +----------+------+---------------------------------------------+ C
C ! NOM      ! MODE ! DESCRIPTION                                 ! C
C +----------+------+---------------------------------------------+ C
C ! X        ! <--- ! Second membre                               ! C
C +----------+------+---------------------------------------------+ C
C ! Y        ! ---> ! Solution                                    ! C
C +----------+------+---------------------------------------------+ C
C ! P        ! <--- ! La matrice de prconditionnement            ! C
C +----------+------+---------------------------------------------+ C
C ! IA       ! <--- ! Le tableau de pointeurs                     ! C
C +----------+------+---------------------------------------------+ C
C ! JA       ! <--- ! Le tableau d'indexage correspondant         ! C
C +----------+------+---------------------------------------------+ C
C ! NEL      ! <--- ! Nombre de lignes de la matrice              ! C
C +----------+------+---------------------------------------------+ C
C !                                                               ! C
C ! MODE = ---> VARIABLE ECRITE (SORTIE)                          ! C
C ! MODE = <--- VARIABLE LUE    (ENTREE)                          ! C
C ! MODE = <--> VARIABLE LUE ET ECRITE                            ! C
C !                                                               ! C
C +---------------------------------------------------------------+ C
C !                                                               ! C
C ! CONTACT : Franois Thomas  69 08 24 64 ou 76 96               ! C
C !                                                               ! C
C +---------------------------------------------------------------+ C
C !                                                               ! C
C ! RELATIONS AVEC D'AUTRES MODULES                               ! C
C !                                                               ! C
C +---------------------------------------------------------------+ C
C !                                                               ! C
C ! MODIFICATIONS                                                 ! C
C !                                                               ! C
C ! 11/03/92 : Cration                                           ! C
C !                                                               ! C
C +---------------------------------------------------------------+ C
C                                                                   C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION X(NEL)
      DIMENSION Y(NEL)
      DIMENSION P(*)
      DIMENSION IA(NEL+1)
      DIMENSION JA(*)
C
      DO 8 I=1,NEL
         X(I)=Y(I)
 8    CONTINUE

      DO 10 I=1,NEL
         S=0.D0
         DO 11 IKA=IA(I)+1,IA(I+1)-1
            K=JA(IKA)
            IF(K.LT.I) S=S+P(IKA)*X(K)
 11      CONTINUE
         X(I)=X(I)-S
 10   CONTINUE

      DO 20 I=1,NEL
         X(I)=X(I)*P(IA(I))
 20   CONTINUE

      DO 30 II=0,NEL-1
         I=NEL-II
         S=0.D0
         IF(I.GT.0) THEN
         DO 31 IKA=IA(I)+1,IA(I+1)-1
            K=JA(IKA)
            IF(K.GT.I) S=S+P(IKA)*X(K)
 31      CONTINUE
         ENDIF
         X(I)=X(I)-S
 30   CONTINUE

      RETURN
      END


