Download chame4.eso

Back to the list

   1 : C CHAME4    SOURCE    FANDEUR   10/08/31    21:15:52     6734           
   2 :       SUBROUTINE CHAME4(IPCHAM,IPMINT,MELEME) 
   3 : *____________________________________________________________________*          
   4 : *                                                                    *          
   5 : *     Transformation d'un MCHAML en T TINF TSUP en un MCHAML         *
   6 : *     uniquement en T mais dont la répartition est parabolique dans  *
   7 : *     l'épaisseur . Ce sous-programme n'est utilisé que pour les     *
   8 : *     éléments coques avec intégration dans l'épaisseur              *          
   9 : *                                                                    *          
  10 : *     Entr{es:                                                       *          
  11 : *     ________                                                       *          
  12 : *                                                                    *          
  13 : *     IPCHAM       Pointeur sur le MCHAML                            *          
  14 : *                                                                    *          
  15 : *     Sorties:                                                       *          
  16 : *     ________                                                       *          
  17 : *                                                                    *          
  18 : *     IPCHAM       Pointeur sur le MCHAML r{sultat                   *          
  19 : *                                                                    *          
  20 : *____________________________________________________________________*          
  21 : *     
  22 :       IMPLICIT INTEGER(I-N)
  23 :       IMPLICIT REAL*8(A-H,O-Z)    
  24 : *
  25 : -INC CCOPTIO                                                                             
  26 : *
  27 : -INC SMCHAML   
  28 : -INC SMELEME 
  29 : -INC SMINTE 
  30 : *
  31 :       CHARACTER*8  NOMC
  32 :       CHARACTER*16 TYPC                                                              
  33 : *              
  34 : *----- mise en ordre des composantes : TINF et TSUP en dernier -----
  35 : *
  36 : *      write(6,*) '2 ipcham,ipmint,meleme',ipcham,ipmint,meleme
  37 :       MCHAML = IPCHAM
  38 : *      segdes mchaml
  39 :       segact mchaml*mod
  40 :       NCOMP = NOMCHE(/2)
  41 :       ITINF=0
  42 :       ITSUP=0
  43 :       IT=0
  44 :       DO 10 I1=1,NCOMP
  45 :          IF(NOMCHE(I1).EQ.'TINF    ') ITINF = I1
  46 :          IF(NOMCHE(I1).EQ.'TSUP    ') ITSUP = I1
  47 :          IF(NOMCHE(I1).EQ.'T       ') IT = I1
  48 :   10  CONTINUE
  49 :       IF(ITINF*ITSUP*IT.EQ.0) THEN
  50 :         moterr(1:8)='CHAME4-2'
  50 :         call erreur(359)
  51 :         return
  52 :       endif
  53 :       NLIMIT = NCOMP - 2
  54 : *
  55 : *------------------ On s'occupe de la composante TINF --------------
  56 : *
  57 :       IF(ITINF.LE.NLIMIT) THEN
  58 :           IF(NOMCHE(NLIMIT + 1).NE.'TSUP    ') THEN
  59 :              INTER = IELVAL(ITINF)
  60 :              NOMC  = NOMCHE(ITINF)
  61 :              TYPC  = TYPCHE(ITINF)
  62 :              IELVAL(ITINF) = IELVAL(NLIMIT + 1)
  63 :              NOMCHE(ITINF) = NOMCHE(NLIMIT + 1)
  64 :              TYPCHE(ITINF) = TYPCHE(NLIMIT + 1)
  65 :              ITINF = NLIMIT + 1
  66 :              IELVAL(ITINF) = INTER
  67 :              NOMCHE(ITINF) = NOMC
  68 :              TYPCHE(ITINF) = TYPC             
  69 :           ELSEIF (NOMCHE(NLIMIT + 2).NE.'TSUP    ') THEN
  70 :              INTER = IELVAL(ITINF)
  71 :              NOMC  = NOMCHE(ITINF)
  72 :              TYPC  = TYPCHE(ITINF)
  73 :              IELVAL(ITINF) = IELVAL(NLIMIT + 2)
  74 :              NOMCHE(ITINF) = NOMCHE(NLIMIT + 2)
  75 :              TYPCHE(ITINF) = TYPCHE(NLIMIT + 2)
  76 :              ITINF = NLIMIT + 2
  77 :              IELVAL(ITINF) = INTER
  78 :              NOMCHE(ITINF) = NOMC
  79 :              TYPCHE(ITINF) = TYPC  
  80 :           ENDIF
  81 :       ENDIF
  82 : *
  83 : *------------------ On s'occupe de la composante TSUP --------------
  84 : *
  85 :       IF(ITSUP.LE.NLIMIT) THEN
  86 :           IF(NOMCHE(NLIMIT + 1).NE.'TINF    ') THEN
  87 :              INTER = IELVAL(ITSUP)
  88 :              NOMC  = NOMCHE(ITSUP)
  89 :              TYPC  = TYPCHE(ITSUP)
  90 :              IELVAL(ITSUP) = IELVAL(NLIMIT + 1)
  91 :              NOMCHE(ITSUP) = NOMCHE(NLIMIT + 1)
  92 :              TYPCHE(ITSUP) = TYPCHE(NLIMIT + 1)
  93 :              ITSUP = NLIMIT + 1
  94 :              IELVAL(ITSUP) = INTER
  95 :              NOMCHE(ITSUP) = NOMC
  96 :              TYPCHE(ITSUP) = TYPC             
  97 :           ELSEIF (NOMCHE(NLIMIT + 2).NE.'TSUP    ') THEN
  98 :              INTER = IELVAL(ITSUP)
  99 :              NOMC  = NOMCHE(ITSUP)
 100 :              TYPC  = TYPCHE(ITSUP)
 101 :              IELVAL(ITSUP) = IELVAL(NLIMIT + 2)
 102 :              NOMCHE(ITSUP) = NOMCHE(NLIMIT + 2)
 103 :              TYPCHE(ITSUP) = TYPCHE(NLIMIT + 2)
 104 :              ITSUP = NLIMIT + 2
 105 :              IELVAL(ITSUP) = INTER
 106 :              NOMCHE(ITSUP) = NOMC
 107 :              TYPCHE(ITSUP) = TYPC    
 108 :           ENDIF
 109 :       ENDIF
 110 :       DO 11 I1=1,NCOMP
 111 :          IF(NOMCHE(I1).EQ.'TINF    ') ITINF = I1
 112 :          IF(NOMCHE(I1).EQ.'TSUP    ') ITSUP = I1
 113 :          IF(NOMCHE(I1).EQ.'T       ') IT = I1
 114 :   11  CONTINUE
 115 :       IF( ITINF+ITSUP.NE.NCOMP*2-1) then
 116 :         moterr(1:8)='CHAME4-1'
 116 :         call erreur (349)
 117 :         return
 118 :       endif
 119 : *
 120 :       SEGACT MELEME
 121 :       NBELEM = NUM(/2)
 122 :       SEGDES MELEME
 123 :       MINTE = IPMINT
 124 : C*    SEGACT MINTE                     <- Actif en (E/S)
 125 :       NBGAUS = POIGAU(/1)
 126 :       N1EL = NBELEM
 127 :       N1PTEL = NBGAUS
 128 :       N2EL = 0 
 129 :       N2PTEL = 0
 130 :       SEGINI MELVA3      
 131 : *
 132 : *-------------- Calcul de T a partir de T TINF et TSUP -------------
 133 : *
 134 : *      write(6,*) ' it , itinf, itsup',it , itinf, itsup
 135 :       MELVAL = IELVAL(IT)
 136 :       MELVA1 = IELVAL(ITINF)
 137 :       MELVA2 = IELVAL(ITSUP)
 138 : *      write(6,*) '1 melval,melva1,melva2',melval,melva1,melva2
 139 :       SEGACT MELVAL
 140 :       SEGACT MELVA1
 141 :       SEGACT MELVA2
 142 :       NPT = VELCHE(/1)
 143 :       NEL = VELCHE(/2)
 144 :       N1PT = MELVA1.VELCHE(/1)
 145 :       N1EL = MELVA1.VELCHE(/2)    
 146 :       N2PT = MELVA2.VELCHE(/1)
 147 :       N2EL = MELVA2.VELCHE(/2)
 148 : C      write(6,*) 'NPT ',NPT    
 149 : C      write(6,*) 'N1PT ',N1PT    
 150 : C      write(6,*) 'N2PT ',N2PT    
 151 : C      write(6,*) 'NEL ',NEL
 152 : C      write(6,*) 'N1EL ',N1EL
 153 : C      write(6,*) 'N2EL ',N2EL
 154 : *
 155 : *------------------------ boucle sur les elements -----------------
 156 : *-------------------- boucle sur les points de gauss --------------
 157 : *
 158 :       DO 20 I2=1,NBELEM
 159 : C        write(6,*) ' '
 160 : C        write(6,*) '------------------------------'
 161 : C        write(6,*) 'Element numero :',I2
 162 :         DO 30 I3=1,NBGAUS
 163 : C           write(6,*) 'Point numero :',I3
 164 :            IF(NPT.EQ.1.AND.NEL.EQ.1) THEN
 165 :               T = VELCHE(1,1) 
 166 :            ELSEIF(NPT.EQ.1) THEN
 167 :               T = VELCHE(1,I2)
 168 :            ELSE
 169 :               T = VELCHE(I3,I2)                                  
 170 :            ENDIF  
 171 :            IF(N1PT.EQ.1.AND.N1EL.EQ.1) THEN
 172 :               TINF = MELVA1.VELCHE(1,1) 
 173 :            ELSEIF(N1PT.EQ.1) THEN
 174 :               TINF = MELVA1.VELCHE(1,I2)
 175 :            ELSE
 176 :               TINF = MELVA1.VELCHE(I3,I2)                                  
 177 :            ENDIF  
 178 :            IF(N2PT.EQ.1.AND.N2EL.EQ.1) THEN
 179 :               TSUP = MELVA2.VELCHE(1,1) 
 180 :            ELSEIF(N2PT.EQ.1) THEN
 181 :               TSUP = MELVA2.VELCHE(1,I2)
 182 :            ELSE
 183 :               TSUP = MELVA2.VELCHE(I3,I2)                                  
 184 :            ENDIF                  
 185 :            ZZ = DZEGAU(I3)
 186 : C           write(6,*) 'ZZ ',ZZ
 187 : C           write(6,*) 'T : ',T
 188 : C           write(6,*) 'TINF : ',TINF    
 189 : C           write(6,*) 'TSUP : ',TSUP                 
 190 :            TT = (0.5D0 * (TINF + TSUP - (2.D0 * T)) * (ZZ*ZZ))
 191 :      1          + (0.5D0*(TSUP - TINF) * ZZ) + T
 192 : C           write(6,*) 'Temperature calculee : ',TT           
 193 :            MELVA3.VELCHE(I3,I2) = TT           
 194 :   30    CONTINUE
 195 :   20  CONTINUE
 196 : 
 197 : *
 198 : *--------- desactivation et suppression des segments ---------------
 199 : *
 200 :       N2 = NLIMIT
 201 :       SEGADJ MCHAML
 202 : *       write(6,*) ' melval,melva1,melva2',melval,melva1,melva2
 203 :       SEGSUP MELVAL
 204 :       IELVAL(IT) = MELVA3
 205 :       SEGSUP MELVA1,MELVA2
 206 : C*    SEGDES MINTE                     <- Actif en (E/S)
 207 :       SEGDES MELVA3
 208 :       RETURN                                                            
 209 :       END            
 210 : 
 211 :  

© Cast3M 2003 - All rights reserved.
Disclaimer