Download condu.eso

Back to the list

   1 : C CONDU     SOURCE    FANDEUR   12/07/05    21:15:09     7420           
   2 : 
   3 :       SUBROUTINE CONDU                                                  
   4 :  
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : 
   8 : -INC CCOPTIO
   9 : -INC SMCHAML
  10 : -INC SMMODEL
  11 :       POINTEUR MODTHR.MMODEL,MODRAY.MMODEL,MODCNV.MMODEL,MODTHM.MMODEL
  12 :       POINTEUR MODIEL.MMODEL
  13 : -INC SMRIGID
  14 : 
  15 :       IPRIGI = 0
  16 :       IPMODR = 0
  17 :       IPMODC = 0
  18 : 
  19 : C =========================================
  20 : C  1- LECTURE DES ARGUMENTS DE L'OPERATEUR
  21 : C =========================================
  22 : C  1.1 - Lecture OBLIGATOIRE du modele (MODORI)
  23 : C =====
  24 :       MOTERR(1:8)=' MODELE '
  24 :       CALL MESLIR(-137)
  24 :       CALL LIROBJ('MMODEL',MODORI,1,IRet)
  25 :       IF (IERR.NE.0) RETURN
  26 : C =====
  27 : C  1.2 - Lecture OBLIGATOIRE du champ de caracteristiques (MCHORI)
  28 : C =====
  28 :       CALL MESLIR(-135)
  28 :       CALL LIROBJ('MCHAML',MCHORI,1,IRet)
  29 :       IF (IERR.NE.0) RETURN
  30 : 
  31 : C =========================================
  32 : C  2- QUELQUES VERIFICATIONS DES ARGUMENTS
  33 : C =========================================
  34 : C  2.1 - Verification du type du champ (MCHORI)
  35 : C =====
  36 :       MCHELM = MCHORI
  37 :       SEGACT,MCHELM
  38 :       IF (TITCHE(1:8).NE.'CARACTER') THEN
  39 :         SEGDES,MCHELM
  40 :         MOTERR(1:16) = 'CARACTERISTIQUES'
  40 :         CALL ERREUR(291)
  41 :         RETURN
  42 :       ENDIF
  43 : C =====
  44 : C  2.2 - Verification du contenu du modele (MODORI)
  45 : C        Separation des formulations DIFFUSION & ELECTROSTATIQUE
  46 : C                et des formulations THERMIQUE & THERMOHYDRIQUE
  47 : C =====
  48 :       MMODEL = MODORI
  49 :       SEGACT,MMODEL
  50 :       NSOUS = KMODEL(/1)
  51 :       N1 = NSOUS
  52 :       SEGINI,MODIEL,MODTHM,MODRAY,MODCNV,MODTHR
  53 :       IDIEL = 0
  54 :       ITHEM = 0
  55 :       IRAYE = 0
  56 :       ICONV = 0
  57 :       ITHER = 0
  58 :       DO isous = 1, NSOUS
  59 :         IMODEL = KMODEL(isous)
  60 :         SEGACT,IMODEL
  61 :         IF      (FORMOD(1).EQ.'DIFFUSION       ' .OR.
  62 :      &           FORMOD(1).EQ.'ELECTROSTATIQUE ') THEN
  63 :           IDIEL = IDIEL + 1
  64 :           MODIEL.KMODEL(IDIEL) = IMODEL
  65 :         ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE  ') THEN
  66 :           ITHEM = ITHEM + 1
  67 :           MODTHM.KMODEL(ITHEM) = IMODEL
  68 :         ELSE IF (FORMOD(1).EQ.'THERMIQUE'   ) then
  69 :           NMAT = MATMOD(/2)
  69 :           CALL PLACE(MATMOD,NMAT,ipl,'RAYONNEMENT')
  70 :           IF (ipl.NE.0) THEN
  71 :             IRAYE = IRAYE + 1
  72 :             MODRAY.KMODEL(IRAYE) = IMODEL
  73 :           ELSE
  73 :             CALL PLACE(MATMOD,NMAT,ipl,'CONVECTION')
  74 :             IF (ipl.NE.0) THEN
  75 :               ICONV = ICONV + 1
  76 :               MODCNV.KMODEL(ICONV) = IMODEL
  77 :             ELSE
  78 :               ITHER = ITHER + 1
  79 :               MODTHR.KMODEL(ITHER) = IMODEL
  80 :             ENDIF
  81 :           ENDIF
  82 :         ELSE
  83 :           N1 = N1 - 1
  84 :         ENDIF
  85 :       ENDDO
  86 : C  Verification que le modele MODORI contient au moins un sous-modele
  87 : C  dont la formulation est traitee ici !
  88 :       IF (N1.LE.0) THEN
  89 :         MOTERR(1:8) = 'MMODEL  '
  90 :         INTERR(1) = MODORI
  90 :         CALL ERREUR(356)
  91 :         GOTO 9991
  92 :       ENDIF
  93 : 
  94 :       IF (IDIEL.GT.0) THEN
  95 : C =======================================================
  96 : C  3-    CONSTRUCTION DE LA MATRICE DE CONDUCTIVITE
  97 : C     POUR LES FORMULATIONS DIFFUSION ET ELECTROSTATIQUE
  98 : C =======================================================
  99 : C  Modele contenant uniquement des formulations DIFFUSION et ELECTROSTATIQUE
 100 :         N1 = IDIEL
 101 :         SEGADJ,MODIEL
 102 :         IPMODR = MODIEL
 103 : C  Calcul de la matrice : tout est fait dans RIGI1
 104 :         ipch = 0
 105 :         imat = 1
 105 :         CALL RIGI1(IPMODR,MCHORI,ipch,imat,IPRIGI,IRET)
 106 :         IF (IRET.NE.1) GOTO 9991
 107 :         MRIGID = IPRIGI
 108 :       ENDIF
 109 : 
 110 :       NSOUS = ITHEM + IRAYE + ICONV + ITHER
 111 :       IF (NSOUS.GT.0) THEN
 112 : C ======================================================
 113 : C  4-    CONSTRUCTION DE LA MATRICE DE CONDUCTIVITE
 114 : C     POUR LES FORMULATIONS THERMIQUE ET THERMOHYDRIQUE
 115 : C ======================================================
 116 : C  4.1 - Initialisation de la matrice si necessaire
 117 : C =====
 118 :         IF (IPRIGI.EQ.0) THEN
 119 :           NRIGEL = 0
 120 :           SEGINI,MRIGID
 121 :           MTYMAT = 'RIGIDITE'
 122 :           ICHOLE = 0
 123 :           IMGEO1 = 0
 124 :           IMGEO2 = 0
 125 : C*        IFORIG = IFOMOD
 126 :           IFORIG = IFOUR
 127 :           ISUPEQ = 0
 128 :           IPRIGI = MRIGID
 129 :         ELSE
 130 :           MRIGID = IPRIGI
 131 :           SEGACT,MRIGID*MOD
 132 :         ENDIF
 133 : C =====
 134 : C  4.2 - Modele avec uniquement des formulations THERMIQUE et THERMOHYDRIQUE
 135 : C =====
 136 :         N1 = NSOUS
 137 :         SEGINI,MMODEL
 138 :         isous = 0
 139 :         IF (ITHEM.GT.0) THEN
 140 :           DO i = 1, ITHEM
 141 :             isous = isous + 1
 142 :             KMODEL(isous) = MODTHM.KMODEL(i)
 143 :           ENDDO
 144 :         ENDIF
 145 :         IF (IRAYE.GT.0) THEN
 146 :           DO i = 1, IRAYE
 147 :             isous = isous + 1
 148 :             KMODEL(isous) = MODRAY.KMODEL(i)
 149 :           ENDDO
 150 :         ENDIF
 151 :         IF (ICONV.GT.0) THEN
 152 :           DO i = 1, ICONV
 153 :             isous = isous + 1
 154 :             KMODEL(isous) = MODCNV.KMODEL(i)
 155 :           ENDDO
 156 :         ENDIF
 157 :         IF (ITHER.GT.0) THEN
 158 :           DO i = 1, ITHER
 159 :             isous = isous + 1
 160 :             KMODEL(isous) = MODTHR.KMODEL(i)
 161 :           ENDDO
 162 :         ENDIF
 163 :         IPMODC = MMODEL
 164 : C =====
 165 : C  4.3 - Reduction du champ au modele precedemment reduit
 166 : C =====
 167 :         MCHELM = MCHORI
 167 :         CALL REDUAF(MCHORI,IPMODC,IPCHEC,0,IRET,KERRE)
 168 :         SEGDES,MCHELM
 169 :         IF (IRET.NE.1) THEN
 169 :           CALL ERREUR(KERRE)
 170 :           GOTO 9990
 171 :         ENDIF
 172 :         ISUPCH = 0
 172 :         CALL QUESUP(IPMODC,IPCHEC,6,0,ISUPCH,IRET)
 173 :         IF (ISUPCH.GT.1) GOTO 9990
 174 : C NB : La verification du support est effectuee ici pour l'instant,
 175 : C      car tous les formulations considerees ici s'appuient sur le 
 176 : C      meme support (IRET = 1, 2 ou 6).
 177 : 
 178 : C =====
 179 : C  4.4 - Remplissage de la matrice pour chaque modele concerne
 180 : C =====
 181 : c Formulation thermohydrique
 182 :         IF (ITHEM.GT.0) THEN
 183 :           DO i = 1, ITHEM
 184 :             IMODEL = MODTHM.KMODEL(i)
 185 :             SEGACT,IMODEL
 185 :             CALL THCOND(IMODEL,IPCHEC,ISUPCH, IPRIGI)
 186 :             IF (IERR.NE.0) GOTO 9990
 187 :           ENDDO
 188 :         ENDIF
 189 : c Formulation rayonnement
 190 :         IF (IRAYE.GT.0) THEN
 191 :           MCHELM = IPCHEC
 192 :           DO i = 1, IRAYE
 193 :             IMODEL = MODRAY.KMODEL(i)
 194 :             SEGACT,IMODEL
 195 : * on accepte le sous-modele de rayonnement que si le mchaml 
 196 : * correspondant contient une composante H !
 197 :             SEGACT,MCHELM
 198 :             imaray = IMACHE(/1)
 199 :             DO j = 1, imaray
 200 :               IF (imache(j).eq.IMAMOD .AND. conche(j).eq.CONMOD) then
 201 :                 mchaml = ichaml(j)
 202 :                 SEGACT,mchaml
 202 :                 CALL PLACE(nomche,nomche(/2),ipl,'H        ')
 203 :                 IF (ipl.NE.0) then
 203 :                   CALL TCONVE(IMODEL,IPCHEC,ISUPCH, IPRIGI)
 204 :                   IF (IERR.NE.0) GOTO 9990
 205 :                   GOTO 4420
 206 :                 ENDIF
 207 :                 SEGDES,mchaml
 208 :               ENDIF
 209 :             ENDDO
 210 :  4420       CONTINUE
 211 :           ENDDO
 212 :           SEGDES,MCHELM
 213 :         ENDIF
 214 : c Formulation convection
 215 :         IF (ICONV.GT.0) THEN
 216 :           DO i = 1, ICONV
 217 :             IMODEL = MODCNV.KMODEL(i)
 218 :             SEGACT,IMODEL
 218 :             CALL TCONVE(IMODEL,IPCHEC,ISUPCH, IPRIGI)
 219 :             IF (IERR.NE.0) GOTO 9990
 220 :           ENDDO
 221 :         ENDIF
 222 :         IF (ITHER.GT.0) THEN
 223 :           DO i = 1, ITHER
 224 :             IMODEL = MODTHR.KMODEL(i)
 225 :             SEGACT,IMODEL
 225 :             CALL TCONDU(IMODEL,IPCHEC,ISUPCH, IPRIGI)
 226 :             IF (IERR.NE.0) GOTO 9990
 227 :           ENDDO
 228 :         ENDIF
 229 :       ENDIF
 230 : 
 231 :       NRIGEL = IRIGEL(/2)
 232 :       IF (NRIGEL.EQ.0) THEN
 232 :         CALL ERREUR(19)
 233 :       ENDIF
 234 : 
 235 :  9990 CONTINUE
 236 :       IF (IERR.NE.0) THEN
 237 :         SEGSUP,MRIGID
 238 :       ELSE
 239 :         SEGDES,MRIGID
 239 :         CALL ECROBJ('RIGIDITE',IPRIGI)
 240 :       ENDIF
 241 :       IF (IPMODC.NE.0) THEN
 242 :         MMODEL = IPMODC
 243 :         SEGSUP,MMODEL
 244 :       ENDIF
 245 :  9991 CONTINUE
 246 :       MMODEL = MODORI
 247 :       DO isous = 1, NSOUS
 248 :         IMODEL = KMODEL(isous)
 249 :         SEGDES,IMODEL
 250 :       ENDDO
 251 :       SEGDES,MMODEL
 252 :       SEGSUP,MODIEL,MODTHR,MODTHM,MODRAY,MODCNV
 253 : 
 254 :       RETURN
 255 :       END
 256 : 
 257 :  

© Cast3M 2003 - All rights reserved.
Disclaimer