C XCNEF0    SOURCE    PV        09/03/12    21:37:09     6325
      SUBROUTINE XCNEF0(NBEL,NP,MP,AF1,RO,VITESS,DCENTR
     &     ,NPT,IDIM,IDCEN,XYZ,NUTOEL,XCOOR,LTOG,
     &     IPADL,AF2,AF3,
     &     FN,GR,PG,HR,PGSQ,RPG,NES,NPG,IAXI,DRR,
     &     NBME,AMU,COTE,NELZ,IKR,IKU,IKM,TN,AIMPL,IPADL2,DT,
     &     MELEMC)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

-INC SMCHAML
-INC SMELEME
      POINTEUR MELEMC.MELEME

      DIMENSION FN(MP,NPG),GR(IDIM,MP,NPG),PG(NPG)
      DIMENSION HR(IDIM,MP,NPG),PGSQ(NPG),RPG(NPG)
      DIMENSION AF1(NBEL,NP,MP),AF2(NBEL,NP,MP)
      DIMENSION AF3(NBEL,NP,MP),RO(1)
      DIMENSION VITESS(NPT,IDIM),TN(*)
      DIMENSION DCENTR(1),XYZ(IDIM,MP)
      DIMENSION XCOOR(*),DRR(MP,NBEL),IPADL2(*)
      DIMENSION LTOG(MP,NBEL),IPADL(*),AMU(1),COTE(NELZ,*)

C=============================================
C     Cette routine calcules les matrices    C
C     Elementaires associees a l'operateur  C
C     KONV en EFM0                           C
C=============================================
      PARAMETER (LRV=64,NPX=9,NPGX=9)
      DIMENSION WT(LRV,NPX,NPGX),WS(LRV,NPX,NPGX),HK(LRV,3,NPX,NPGX)
      DIMENSION PGSK(LRV,NPGX),RPGK(LRV,NPGX),AIRE(LRV)
      DIMENSION UMJ(LRV,3,NPGX),DUMJ(LRV,3,NPGX)
      DIMENSION COEFK(LRV),ANUK(LRV)
      DIMENSION AL(LRV),AH(LRV),AP(LRV)
      DIMENSION UAM(9,9)
-INC CCREEL

      INTEGER I,J,K,NUMAUX
      REAL*8 UMOY(3),RESW,CT

C ===================================
C Calcul du nombre de paquets de LRV éléments
C
      NNN=MOD(NBEL,LRV)
      IF(NNN.EQ.0) NPACK=NBEL/LRV
      IF(NNN.NE.0) NPACK=1+(NBEL-NNN)/LRV
      KPACKD=1
      KPACKF=NPACK
      CT=0.0D0

C====================================

C     Boucle sur les paquets de LRV elements

c      WRITE(6,*) 'IDCEN=' , IDCEN
      DO KPACK=KPACKD,KPACKF

C ======= A L'INTERIEUR DE CHAQUE PAQUET DE LRV ELEMENTS =======
C
C 1. Calcul des limites du paquet courant.
         KDEB=1+(KPACK-1)*LRV
         KFIN=MIN(NBEL,KDEB+LRV-1)
C
C     On rempli le tableau de COEFK sur chaque
C     element du paquet
         DO K=KDEB,KFIN
            KP=K-KDEB+1
            NK=K+NUTOEL
            NKR=(1-IKR)*(NK-1)+1
            NKM=(1-IKM)*(NK-1)+1
            COEFK(KP)=RO(NKR)
            ANUK(KP)=AMU(NKM)/RO(NKR)
            AL(KP)=COTE(NK,1)
            AH(KP)=COTE(NK,2)
         END DO

         CALL KSUPG(FN,GR,PG,XYZ,HR,PGSQ,RPG,
     &        NES,MP,NPG,IAXI,XCOOR,
     &        WT,WS,HK,PGSK,RPGK,AIRE,
     &        UMJ,DUMJ,KDEB,KFIN,LRV,NPX,NPGX,
     &        TN,IPADL,VITESS,IPADL,NPT,NELZ,ANUK,
     &        IDCEN,LTOG,
     &        AL,AH,AP,
     &        DTM1,DT,DTT1,DTT2,DIAEL,NUEL)

         DO K=KDEB,KFIN
            KP=K-KDEB+1
            CT=CT+TN(IPADL2(MELEMC.NUM(1,K)))*
     &           AIRE(KP)
            DO I=1,MP

               IF (NBME.GT.0) AF1(K,1,I)=0.0D0
               IF (NBME.GT.1) AF2(K,1,I)=0.0D0
               IF (NBME.GT.2) AF3(K,1,I)=0.0D0

               DO J=1,MP
                  UAM(I,J)=0.0D0
                  DO L=1,NPG
                     UAM(I,J)=UAM(I,J)+
     &                    FN(I,L)*WT(KP,J,L)*PGSK(KP,L)
                  END DO
               END DO
            END DO


            DO I=1,MP
               DO J=1,MP
                  IF (NBME.GT.0) THEN
                     AF1(K,1,I)=AF1(K,1,I)+UAM(I,J)*
     &                    VITESS(IPADL(LTOG(J,K)),1)
     &                    *COEFK(KP)
                  END IF
                  IF (NBME.GT.1) THEN
                     AF2(K,1,I)=AF2(K,1,I)+UAM(I,J)*
     &                    VITESS(IPADL(LTOG(J,K)),2)
     &                    *COEFK(KP)
                  END IF
                  IF (NBME.GT.2) THEN
                     AF3(K,1,I)=AF3(K,1,I)+UAM(I,J)*
     &                    VITESS(IPADL(LTOG(J,K)),3)
     &                    *COEFK(KP)
                  END IF
               END DO
            END DO

         END DO
      END DO
C     WRITE(6,*) 'Int Ct=',CT
      RETURN

      END







