C KCACUB    SOURCE    CB215821  16/04/21    21:17:30     8920
      SUBROUTINE  KCACUB(NES,NR,G,VP,NFACE,KROT,KSIG,IR)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C    Include contenant quelques constantes dont XPI :
-INC CCREEL
      DIMENSION VP(NES,NR,NR),G(NR,NR),IR(1)
      DIMENSION KROT(NFACE,NES),KSIG(NFACE,NES)
C
C Calcul des facteurs de forme en 3D
C Sp appele par KALPRE
C     CALCUL DES FF ET DES DIRECTIONS POUR TOUTE LA SURFACE DE REFERENCE
C        ( PLAN Z = +1)
C
C        NF = 1    X = +1        NF = 2     X = -1
C        NF = 3    Y = +1        NF = 4     Y = -1
C        NF = 5    Z = +1        NF = 6     Z = -1
C
C     UTILISATION :
C
C            D(NF,K,I,J) = KSIG(NF,K) * V(KROT(NF,K),I,J)
C
C           NF : NUMERO DE FACE
C           K  : DIRECTION DE ESPACE
C           I,J: INDICES DE DISCRETISATION LOCAL A CHAQUE FACE
C
C    REM: VP ORIENTE CU CENTRE VERS LA CELLULE
C    ***
C
C
      NR2 = NR/2

      DO 30 I = 1,NR2
         IR(I)      = NR2-I+1
         IR(I+ NR2) = I
 30   CONTINUE

      DO 1  I = 1, NR
         DO 2  J = 1, NR
            VP(1,I,J) = (IR(I)-0.5D0)/NR
            VP(2,I,J) = (IR(J)-0.5D0)/NR
            RP = VP(1,I,J)*VP(1,I,J)+VP(2,I,J)*VP(2,I,J) + 0.5D0*0.5D0
            RP = SQRT(RP)
            IS = 1
            JS = 1
            IF (I.LE.NR2)   IS = -1
            IF (J.LE.NR2)   JS = -1
            VP(1,I,J) = IS * VP(1,I,J)/RP
            VP(2,I,J) = JS * VP(2,I,J)/RP
            VP(3,I,J) =  0.5D0/RP
            G(I,J) = 0.5D0/(RP*RP*RP)/NR/NR/XPI
 2       CONTINUE
 1    CONTINUE

C
C     TABLEAU DE CORRESPONDANCE
C
C     FACE X
C
      NF = 1
      KROT(NF,1) = 3
      KROT(NF,2) = 1
      KROT(NF,3) = 2
      NF = 2
      KROT(NF,1) = 3
      KROT(NF,2) = 1
      KROT(NF,3) = 2
C
C     FACE Y
C
      NF = 3
      KROT(NF,1) = 1
      KROT(NF,2) = 3
      KROT(NF,3) = 2
      NF = 4
      KROT(NF,1) = 1
      KROT(NF,2) = 3
      KROT(NF,3) = 2
C
C     FACE Z
C
      NF = 5
      KROT(NF,1) = 1
      KROT(NF,2) = 2
      KROT(NF,3) = 3
      NF = 6
      KROT(NF,1) = 1
      KROT(NF,2) = 2
      KROT(NF,3) = 3
C
C     FACE POSITIVES
C
      DO 4 NF = 1,NFACE
         DO 5 K = 1,NES
            KSIG(NF,K) = 1
 5       CONTINUE
 4    CONTINUE
C
      KSIG(2,1) = -1
      KSIG(4,2) = -1
      KSIG(6,3) = -1
C
      RETURN
      END







