Download gradge.eso

Back to the list

   1 : C GRADGE    SOURCE    CHAT      05/01/13    00:20:32     5004           
   2 :       SUBROUTINE GRADGE(ICEN,IELTFA,IFAC,IFACEL,INORM,ICHCL,ICHAM)
   3 : C------------------------------------------------------------------
   4 : C PROJET        :  CASTEM 2000
   5 : C     
   6 : C NOM           :  GRADGE
   7 : C     
   8 : C DESCRIPTION   :  Cette subroutine est appellee par
   9 : C                  PENT15 et calcule les coefficients a appliquer
  10 : C                  sur la fonction dont on veut calculer le gradient
  11 : C                  pour chacune des coordonnees. Ces coefficients
  12 : C                  sont stockes dans ICHAM
  13 : C     
  14 : C LANGAGE       :  FORTRAN 77 + ESOPE 2000
  15 : C     
  16 : C AUTEUR        :  A. BECCANTINI, SFME/LTMF
  17 : C     
  18 : C-----------------------------------------------------------------
  19 : C     
  20 : C APPELES (E/S) :  
  21 : C     
  22 : C APPELES (Calcul):  CONSDU, RSETXI, ELKONF
  23 : C     
  24 : C-----------------------------------------------------------------
  25 : C     
  26 : C INPUT        : ICEN   : 'CENTRE' points
  27 : C
  28 : C                IELTFA : Element-faces
  29 : C
  30 : C                IFAC   : 'FACE' points
  31 : C
  32 : C                IFACEL : Left center - face center -right center
  33 : C                         Same order as IFAC
  34 : C
  35 : C                INORM  : Face normals CHAMPOINT
  36 : C
  37 : C                ICHCL  : BC CHAMPOINT
  38 : C
  39 : C
  40 : C OUTPUT        : ICHAM : MCHEML which contains the coefficients to
  41 : C                         compute gradients.
  42 : C
  43 : C-----------------------------------------------------------------
  44 : C     
  45 : C HISTORIQUE (Anomalies et modifications eventuelles)
  46 : C     
  47 : C HISTORIQUE     : 14.10.98, Creation
  48 : C     
  49 : C-----------------------------------------------------------------
  50 : C     
  51 : C
  52 : C     
  53 : C**** Variables de COOPTIO
  54 : C     
  55 :       IMPLICIT INTEGER(I-N)
  56 :       INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  57 :      &     ,IOTER,   IOLEC,  IOIMP,   IOCAR,  IOACQ
  58 :      &     ,IOPER,   IOSGB,  IOGRA,   IOSAU,  IORES
  59 :      &     ,IECHO,   IIMPI,  IOSPI
  60 :      &     ,IDIM
  61 :      &     ,MCOORD      
  62 :      &     ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  63 :      &     ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  64 :      &     ,NORINC,NORVAL,NORIND,NORVAD
  65 :      &     ,NUCROU, IPSAUV, IFICLE, IPREFI
  66 :      &     ,IREFOR, ISAFOR
  67 : C
  68 :       INTEGER ICEN, IELTFA, IFACEL, INORM, ICHCL, ICHAM, IFAC
  69 :      &     ,MLECOE
  70 : C
  71 : -INC CCOPTIO
  72 : -INC SMLENTI
  73 : -INC SMELEME
  74 : C
  75 : C**** The FACE and CENTRE neighbors of each 'CENTRE' points
  76 : C     Two cases:
  77 : C     - If the 'FACE' point belongs to just one element, it belongs to
  78 : C       the neighbors of the element 'CENTRE'
  79 : C     - If the 'FACE' point belongs to two elements, the elements CENTREs
  80 : C       are neighbors
  81 : C
  81 :       CALL RLENCE(ICEN,IELTFA,IFAC,IFACEL,MELEME)
  82 :       IF(IERR.NE.0) GOTO 9999
  83 : C
  84 : C     RLENCE creates MELEME,
  85 : C     the mesh which contains the neighbors of the CENTRE and 
  86 : C     the CENTRE itself
  87 : CC      
  88 : CC**** Test RLENCE
  89 : CC
  90 : C      SEGACT MELEME
  91 : C      NBSOUS=MELEME.LISOUS(/1)
  92 : C      JG=MAX(NBSOUS,1)
  93 : C      SEGINI MLENTI
  94 : C      IF (JG.EQ.1)THEN
  95 : C         MLENTI.LECT(1)=MELEME
  96 : C      ELSE
  97 : C         DO ISOUS=1,JG,1
  98 : C            MLENTI.LECT(ISOUS)=MELEME.LISOUS(ISOUS)
  99 : C         ENDDO
 100 : C      ENDIF
 101 : C
 102 : C      DO ISOUS=1,JG,1
 103 : C         WRITE(IOIMP,*) 'SGP :', ISOUS, MLENTI.LECT(ISOUS)
 104 : C         IPT1=MLENTI.LECT(ISOUS)
 105 : C         SEGACT IPT1
 106 : C         NBNN=IPT1.NUM(/1)
 107 : C         NBELEM=IPT1.NUM(/2)
 108 : C         DO IELEM=1,NBELEM,1
 109 : C            WRITE(IOIMP,*) 'Center =', IPT1.NUM(NBNN,IELEM)
 110 : C            WRITE(IOIMP,*) 'Neighbors =',
 111 : C     &           (IPT1.NUM(IVOI,IELEM),IVOI=1,(NBNN-1)) 
 112 : C         ENDDO
 113 : C      ENDDO
 114 : CC      
 115 : CC**** Fin test RLENCE
 116 : CC
 117 : C
 117 :       CALL RLEXCE(MELEME,ICEN,IFAC,INORM,ICHCL,MLECOE)
 118 :       IF(IERR.NE.0) GOTO 9999
 119 : C
 120 : C     MLECOE : list of integers.
 121 : C     MLECOE.LECT(I) is the pointer of the matrix of real
 122 : C     which contains the coefficient of the i-th centre
 123 : C     to compute its gradient as function of the values on
 124 : C     its neighbors. 
 125 : C
 125 :       CALL RLXCE1(MELEME,MLECOE,ICHAM)
 126 :       IF(IERR.NE.0) GOTO 9999
 127 : C
 128 :  9999 RETURN
 129 :       END
 130 :  
 131 : 
 132 : 
 133 : 
 134 : 
 135 : 
 136 :  
 137 :  
 138 :  

© Cast3M 2003 - All rights reserved.
Disclaimer