Download chaleu.eso

Back to the list

   1 : C CHALEU    SOURCE    FANDEUR   13/01/16    21:15:04     7666           
   2 : 
   3 : C=======================================================================
   4 : C=                            C H A L E U                              =
   5 : C=                            -----------                              =
   6 : C=                                                                     =
   7 : C=  OPERATEUR CAST3M "SOURCE" :                                        =
   8 : C=  ---------------------------                                        =
   9 : C=   FF1  =  'SOURCE'  MODL1  |  S1  MAIL1  |  ( CARA1 )  ( 'ELEM' ) ; =
  10 : C=                            |  CHP1       |                          =
  11 : C=                            |  CHEL1      |                          =
  12 : C=                                                                     =
  13 : C=   Cet operateur sert a calculer les flux nodaux equivalents a une   =
  14 : C=   source volumique de chaleur (CHPOINT au second membre)            =
  15 : C=                                                                     =
  16 : C=  ARGUMENTS :                                                        =
  17 : C=  -----------                                                        =
  18 : C=   MODL1  (MMODEL)    Modele (global) associe a la structure         =
  19 : C=   S1     (FLOTTANT)  Valeur algebrique de la source (constante)     =
  20 : C=   MAI1   (MAILLAGE)  Partie de la structure ou on impose la source  =
  21 : C=                      de chaleur de valeur S1.                       =
  22 : C=   CHP1   (CHPOINT)   Valeurs algebriques des sources aux NOEUDS     =
  23 : C=   CHEL1  (MCHAML)    Valeurs algebriques des sources par ELEMENT    =
  24 : C=   CARA1  (MCHAML)    Caracteristiques geometriques (utilisees dans  =
  25 : C=                      le cas des elements de type COQUE et BARRe)    =
  26 : C=                      Sous-type 'CARACTERISTIQUES'                   =
  27 : C=                                                                     =
  28 : C=  RESULTAT :                                                         =
  29 : C=  ----------                                                         =
  30 : C=   FF1    (CHPOINT)   Flux nodaux equivalents                        =
  31 : C=                                                                     =
  32 : C=  Remarques :                                                        =
  33 : C=  -----------                                                        =
  34 : C=   Le CHPOINT resultat FF1 est de nature DISCRETE.                   =
  35 : C=   Si le MOT 'ELEM' (facultatif) est present, le champ resultat FF1  =
  36 : C=   est alors un MCHAML aux NOEUDS.                                   =
  37 : C=                                                                     =
  38 : C=  Denis ROBERT, le 26 fevrier 1988.                                  =
  39 : C=======================================================================
  40 : 
  41 :       SUBROUTINE CHALEU
  42 : 
  43 :       IMPLICIT INTEGER(I-N)
  44 :       IMPLICIT REAL*8 (A-H,O-Z)
  45 : 
  46 : -INC CCOPTIO
  47 : -INC SMLMOTS
  48 : -INC SMMODEL
  49 : 
  50 :       CHARACTER*4 MOTELE(1), MOCOMP
  51 :       DATA MOTELE / 'ELEM' /
  52 : 
  53 : C  1 - LECTURE DES ARGUMENTS DE L'OPERATEUR
  54 : C ==========================================
  55 : C  1.1 - Lecture FACULTATIVE du mot 'ELEM'
  56 : C =====
  56 :       CALL LIRMOT(MOTELE,1,ICle,0)
  57 : C =====
  58 : C  1.2 - Lecture OBLIGATOIRE du modele (IPMODL)
  59 : C =====
  60 :       MOTERR(1:8)='MODELE'
  60 :       CALL MESLIR(-137)
  60 :       CALL LIROBJ('MMODEL',IPMODL,1,IRet)
  61 :       IF (IERR.NE.0) RETURN
  62 : C =====
  63 : C  1.3 - Lecture OBLIGATOIRE des sources volumiques donnees par :
  64 : C           1) un CHPOINT (IPCHPO)
  65 : C        ou 2) d'un maillage (IPGEOM) et d'un flottant (S1)
  66 : C        ou 3) d'un MCHAML (IPCHEL)
  67 : C =====
  68 :       IPCHPO=0
  69 :       S1=0.
  70 :       IPGEOM=0
  71 :       IPCHEL=0
  71 :       CALL MESLIR(-138)
  71 :       CALL LIROBJ('CHPOINT',IPCHPO,0,IRet)
  72 :       IF (IRet.EQ.0) THEN
  72 :         CALL MESLIR(-139)
  72 :         CALL LIRREE(S1,0,IRet)
  73 :         IF (IRet.NE.0) THEN
  74 :           MOTERR(1:8)='MAILLAGE'
  74 :           CALL MESLIR(-137)
  74 :           CALL LIROBJ('MAILLAGE',IPGEOM,1,IRet)
  75 :           IF (IERR.NE.0) RETURN
  76 :         ELSE
  76 :           CALL LIROBJ('MCHAML',IPCHEL,1,IRet)
  77 :           IF (IERR.NE.0) RETURN
  78 :         ENDIF
  79 :       ENDIF
  80 : C =====
  81 : C  1.4 - Lecture FACULTATIVE du champ de caracteristiques (IPCARA)
  82 : C =====
  83 :       IPCARA=0
  83 :       CALL MESLIR(-145)
  83 :       CALL LIROBJ('MCHAML',IPCARA,0,IRet)
  84 :       IF (IERR.NE.0) RETURN
  85 : C =====
  86 : C  1.5 - Lecture de la composante de la source (MOCOMP)
  87 : C =====
  88 :       MOCOMP='    '
  88 :       CALL LIRCHA(MOCOMP,0,IRet)
  89 :       IF (IERR.NE.0) RETURN
  90 : 
  91 : C  2 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
  92 : C ======================================================
  93 : C  2.1 - Verification de la formulation (unique) du modele
  94 : C  2.2 - Recuperation du modele de la formulation retenue
  95 : C =====
  96 :       ITHER = 0
  97 :       ITHHY = 0
  98 :       IELEC = 0
  99 :       IDIFF = 0
 100 :       MMODEL = IPMODL
 101 :       SEGACT,MMODEL
 102 :       SEGINI,MMODE1=MMODEL
 103 :       NSOUS = KMODEL(/1)
 104 :       N1 = 0
 105 :       DO ISOUS = 1, NSOUS
 106 :         IMODEL = KMODEL(ISOUS)
 107 :         SEGACT,IMODEL
 108 :         NFOR = FORMOD(/2)
 109 :         IF (NFOR.EQ.1) THEN
 110 :           IF (FORMOD(1).EQ.'THERMIQUE') THEN
 111 :             NMAT = MATMOD(/2)
 111 :             CALL PLACE(MATMOD,NMAT,icov,'CONVECTION')
 111 :             CALL PLACE(MATMOD,NMAT,iray,'RAYONNEMENT')
 112 :             IF (icov+iray.EQ.0) THEN
 113 :               ITHER = 1
 114 :               N1 = N1 + 1
 115 :               MMODE1.KMODEL(N1) = IMODEL
 116 :             ENDIF
 117 :           ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE') THEN
 118 :             ITHHY = 1
 119 :             N1 = N1 + 1
 120 :             MMODE1.KMODEL(N1) = IMODEL
 121 :           ELSE IF (FORMOD(1).EQ.'ELECTROSTATIQUE') THEN
 122 :             IELEC = 1
 123 :             N1 = N1 + 1
 124 :             MMODE1.KMODEL(N1) = IMODEL
 125 :           ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
 126 :             IDIFF = 1
 127 :             N1 = N1 + 1
 128 :             MMODE1.KMODEL(N1) = IMODEL
 129 :           ELSE
 130 :             MOTERR(1:8) = FORMOD(1)
 130 :             CALL ERREUR(193)
 131 :           ENDIF
 132 :         ELSE IF (NFOR.GT.1) THEN
 133 :           MOTERR(1:8) = FORMOD(1)
 133 :           CALL ERREUR(193)
 134 :         ENDIF
 135 :         SEGDES,IMODEL
 136 :       ENDDO
 137 :       SEGDES,MMODEL
 138 :       IF (IERR.NE.0) GOTO 9900
 139 :       IF (N1.EQ.0) THEN
 140 :         write(ioimp,*) 'Modele vide ??'
 140 :         CALL ERREUR(21)
 141 :         GOTO 9900
 142 :       ELSE IF ((ITHER+ITHHY+IELEC+IDIFF).NE.1) THEN
 143 : *AV Affiner l'erreur !
 144 :         write(ioimp,*) 'Une seule formulation dans le modele !'
 144 :         CALL ERREUR(21)
 145 :         GOTO 9900
 146 :       ENDIF
 147 :       IF (N1.NE.NSOUS) THEN
 148 :         SEGADJ,MMODE1
 149 :       ENDIF
 150 :       IPMODL = MMODE1
 151 : C =====
 152 : C  2.3 - Adequation nom de composante source & modele
 153 : C =====
 154 :       IF (ITHER .EQ. 1) THEN
 155 :         IF (MOCOMP.EQ.'    ') MOCOMP = 'Q   '
 155 :         IF (MOCOMP.NE.'Q   ') CALL ERREUR(665)
 156 :       ELSE
 157 :         IPCOMP = 0
 157 :         CALL NOVARD(IPMODL,'FORC')
 157 :         CALL LIROBJ('LISTMOTS',IPCOMP,1,IRet)
 158 :         IF (IERR.NE.0) RETURN
 159 :         MLMOTS = IPCOMP
 160 :         SEGACT,MLMOTS
 161 :         NCOMP = MOTS(/2)
 162 : * Normalement : NCOMP est non nul !
 163 : * Cas particulier de la diffusion en attendant un traitement adequat ?
 164 :         IF (IDIFF.EQ.1 .AND. NCOMP.GT.1) THEN
 165 :           write(ioimp,*) 'Modele de DIFFUSION a une seule quantite SVP'
 165 :           CALL ERREUR(21)
 166 :         ENDIF
 167 :         IF (MOCOMP.EQ.'    ') MOCOMP = MOTS(1)
 167 :         CALL PLACE(MOTS,NCOMP,IRet,MOCOMP)
 167 :         IF (IRet.EQ.0) CALL ERREUR(665)
 168 :         SEGSUP,MLMOTS
 169 :       ENDIF
 170 :       IF (IERR.NE.0) GOTO 9900
 171 : 
 172 : C  3 - CALCUL DES FLUX NODAUX EQUIVALENTS
 173 : C ========================================
 173 :       CALL CHAL1(IPMODL,IPCHPO,S1,IPGEOM,IPCHEL,IPCARA,MOCOMP, IPCHAL)
 174 :       IF (IERR.NE.0 .OR. IPCHAL.EQ.0) GOTO 9900
 175 : 
 176 : C  4 - ECRITURE DE L'OBJET RESULTAT (CHPOINT OU MCHAML)
 177 : C ======================================================
 178 :       IF (ICle.EQ.0) THEN
 178 :         CALL CHAMPO(IPCHAL,0,IPCHAP,IRet)
 179 : C= Le resultat est un CHPOINT de nature DISCRETE.
 179 :         CALL DTCHAM(IPCHAL)
 180 :         IF (IRet.NE.1) RETURN
 180 :         CALL ECROBJ('CHPOINT',IPCHAP)
 181 :       ELSE
 181 :         CALL ECROBJ('MCHAML',IPCHAL)
 182 :       ENDIF
 183 : 
 184 : C  5 - FIN
 185 : C =========
 186 :  9900 CONTINUE
 187 :       SEGSUP,MMODE1
 188 : 
 189 :       RETURN
 190 :       END
 191 : 
 192 :  

© Cast3M 2003 - All rights reserved.
Disclaimer