Download xcnef0.eso

Back to the list

   1 : C XCNEF0    SOURCE    PV        09/03/12    21:37:09     6325           
   2 :       SUBROUTINE XCNEF0(NBEL,NP,MP,AF1,RO,VITESS,DCENTR
   3 :      &     ,NPT,IDIM,IDCEN,XYZ,NUTOEL,XCOOR,LTOG,
   4 :      &     IPADL,AF2,AF3,
   5 :      &     FN,GR,PG,HR,PGSQ,RPG,NES,NPG,IAXI,DRR,
   6 :      &     NBME,AMU,COTE,NELZ,IKR,IKU,IKM,TN,AIMPL,IPADL2,DT,
   7 :      &     MELEMC)
   8 :       IMPLICIT INTEGER(I-N)
   9 :       IMPLICIT REAL*8 (A-H,O-Z)
  10 : 
  11 : -INC SMCHAML
  12 : -INC SMELEME
  13 :       POINTEUR MELEMC.MELEME
  14 : 
  15 :       DIMENSION FN(MP,NPG),GR(IDIM,MP,NPG),PG(NPG)
  16 :       DIMENSION HR(IDIM,MP,NPG),PGSQ(NPG),RPG(NPG)
  17 :       DIMENSION AF1(NBEL,NP,MP),AF2(NBEL,NP,MP)
  18 :       DIMENSION AF3(NBEL,NP,MP),RO(1)
  19 :       DIMENSION VITESS(NPT,IDIM),TN(*)
  20 :       DIMENSION DCENTR(1),XYZ(IDIM,MP)
  21 :       DIMENSION XCOOR(*),DRR(MP,NBEL),IPADL2(*)
  22 :       DIMENSION LTOG(MP,NBEL),IPADL(*),AMU(1),COTE(NELZ,*)
  23 : 
  24 : C=============================================
  25 : C     Cette routine calcules les matrices    C
  26 : C     Elementaires associees a l'operateur  C
  27 : C     KONV en EFM0                           C
  28 : C=============================================
  29 :       PARAMETER (LRV=64,NPX=9,NPGX=9)
  30 :       DIMENSION WT(LRV,NPX,NPGX),WS(LRV,NPX,NPGX),HK(LRV,3,NPX,NPGX)
  31 :       DIMENSION PGSK(LRV,NPGX),RPGK(LRV,NPGX),AIRE(LRV)
  32 :       DIMENSION UMJ(LRV,3,NPGX),DUMJ(LRV,3,NPGX)
  33 :       DIMENSION COEFK(LRV),ANUK(LRV)
  34 :       DIMENSION AL(LRV),AH(LRV),AP(LRV)
  35 :       DIMENSION UAM(9,9)
  36 : -INC CCREEL
  37 : 
  38 :       INTEGER I,J,K,NUMAUX
  39 :       REAL*8 UMOY(3),RESW,CT
  40 : 
  41 : C ===================================
  42 : C Calcul du nombre de paquets de LRV éléments
  43 : C
  44 :       NNN=MOD(NBEL,LRV)
  45 :       IF(NNN.EQ.0) NPACK=NBEL/LRV
  46 :       IF(NNN.NE.0) NPACK=1+(NBEL-NNN)/LRV
  47 :       KPACKD=1
  48 :       KPACKF=NPACK
  49 :       CT=0.0D0
  50 : 
  51 : C====================================
  52 : 
  53 : C     Boucle sur les paquets de LRV elements
  54 : 
  55 : c      WRITE(6,*) 'IDCEN=' , IDCEN
  56 :       DO KPACK=KPACKD,KPACKF
  57 : 
  58 : C ======= A L'INTERIEUR DE CHAQUE PAQUET DE LRV ELEMENTS =======
  59 : C
  60 : C 1. Calcul des limites du paquet courant.
  61 :          KDEB=1+(KPACK-1)*LRV
  62 :          KFIN=MIN(NBEL,KDEB+LRV-1)
  63 : C
  64 : C     On rempli le tableau de COEFK sur chaque
  65 : C     element du paquet
  66 :          DO K=KDEB,KFIN
  67 :             KP=K-KDEB+1
  68 :             NK=K+NUTOEL
  69 :             NKR=(1-IKR)*(NK-1)+1
  70 :             NKM=(1-IKM)*(NK-1)+1
  71 :             COEFK(KP)=RO(NKR)
  72 :             ANUK(KP)=AMU(NKM)/RO(NKR)
  73 :             AL(KP)=COTE(NK,1)
  74 :             AH(KP)=COTE(NK,2)
  75 :          END DO
  76 : 
  76 :          CALL KSUPG(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  77 :      &        NES,MP,NPG,IAXI,XCOOR,
  78 :      &        WT,WS,HK,PGSK,RPGK,AIRE,
  79 :      &        UMJ,DUMJ,KDEB,KFIN,LRV,NPX,NPGX,
  80 :      &        TN,IPADL,VITESS,IPADL,NPT,NELZ,ANUK,
  81 :      &        IDCEN,LTOG,
  82 :      &        AL,AH,AP,
  83 :      &        DTM1,DT,DTT1,DTT2,DIAEL,NUEL)
  84 : 
  85 :          DO K=KDEB,KFIN
  86 :             KP=K-KDEB+1
  87 :             CT=CT+TN(IPADL2(MELEMC.NUM(1,K)))*
  88 :      &           AIRE(KP)
  89 :             DO I=1,MP
  90 : 
  91 :                IF (NBME.GT.0) AF1(K,1,I)=0.0D0
  92 :                IF (NBME.GT.1) AF2(K,1,I)=0.0D0
  93 :                IF (NBME.GT.2) AF3(K,1,I)=0.0D0
  94 : 
  95 :                DO J=1,MP
  96 :                   UAM(I,J)=0.0D0
  97 :                   DO L=1,NPG
  98 :                      UAM(I,J)=UAM(I,J)+
  99 :      &                    FN(I,L)*WT(KP,J,L)*PGSK(KP,L)
 100 :                   END DO
 101 :                END DO
 102 :             END DO
 103 : 
 104 : 
 105 :             DO I=1,MP
 106 :                DO J=1,MP
 107 :                   IF (NBME.GT.0) THEN
 108 :                      AF1(K,1,I)=AF1(K,1,I)+UAM(I,J)*
 109 :      &                    VITESS(IPADL(LTOG(J,K)),1)
 110 :      &                    *COEFK(KP)
 111 :                   END IF
 112 :                   IF (NBME.GT.1) THEN
 113 :                      AF2(K,1,I)=AF2(K,1,I)+UAM(I,J)*
 114 :      &                    VITESS(IPADL(LTOG(J,K)),2)
 115 :      &                    *COEFK(KP)
 116 :                   END IF
 117 :                   IF (NBME.GT.2) THEN
 118 :                      AF3(K,1,I)=AF3(K,1,I)+UAM(I,J)*
 119 :      &                    VITESS(IPADL(LTOG(J,K)),3)
 120 :      &                    *COEFK(KP)
 121 :                   END IF
 122 :                END DO
 123 :             END DO
 124 : 
 125 :          END DO
 126 :       END DO
 127 : C     WRITE(6,*) 'Int Ct=',CT
 128 :       RETURN
 129 :       
 130 :       END
 131 :  
 132 :  
 133 :  
 134 :  
 135 :  
 136 :  
 137 :  

© Cast3M 2003 - All rights reserved.
Disclaimer