Download flux.eso

Back to the list

   1 : C FLUX      SOURCE    BP208322  13/07/30    21:15:09     7809           
   2 : 
   3 : C=======================================================================
   4 : C=                              F L U X                                =
   5 : C=                              -------                                =
   6 : C=                                                                     =
   7 : C=  OPERATEUR CAST3M "FLUX" :                                          =
   8 : C=  -------------------------                                          =
   9 : C=  FF1  =  'FLUX'  MODL1  | VFLU  MAI1 ( 'DIRE' POI1 ) | ( 'PEAU' ) ; =
  10 : C=                         | CH1                        |              =
  11 : C=                         | CH2  LMOTS                 |              =
  12 : C=                                                                     =
  13 : C=  Cet operateur sert a calculer les flux nodaux equivalents a une    =
  14 : C=  condition de flux de chaleur impose (CHPOINT au second membre).    =
  15 : C=                                                                     =
  16 : C=  ARGUMENTS :                                                        =
  17 : C=  -----------                                                        =
  18 : C=   MODL1  (MMODEL)    Modele (global) associe a la structure         =
  19 : C=   VFLU   (FLOTTANT)  Valeur algebrique du flux (constante)          =
  20 : C=   MAI1   (MAILLAGE)  Partie de la structure ou on impose le flux de =
  21 : C=                      chaleur de valeur VFLU.                        =
  22 : C=   CH1 (CHPOINT ou MCHAML)   Valeurs algebriques des flux            =
  23 : C=   'DIRE' (MOT)       Indique que le flux est incline par rapport a  =
  24 : C=                      a la normale a la (sur)face                    =
  25 : C=   POI1   (POINT)     Direction du flux dans le repere global        =
  26 : C=   CH2   (CHPOINT ou MCHAML)   Champ a plusieurs composantes         =
  27 : C=   LMOTS  (LISTMOTS)  Liste des composantes de CH2, la premiere est  =
  28 : C=                      associee a la direction X, la deuxieme a Y et  =
  29 : C=                      la troisieme a Z (en 3D)                       =
  30 : C=   PEAU   (MOT)       Indique la peau etudie dans le cas des COQUES  =
  31 : C=                                                                     =
  32 : C=  RESULTAT :                                                         =
  33 : C=  ----------                                                         =
  34 : C=   FF1     (CHPOINT)  Flux nodaux equivalents a la condition de flux =
  35 : C=                      de nature DISCRETE                             =
  36 : C=                                                                     =
  37 : C=  CREATION / MODIF :                                                 =
  38 : C=  ------------------                                                 =
  39 : C=  Creation : Denis ROBERT, le 25 janvier 1988.                       =
  40 : C=  Modif    : BP, 30/07/2013 : ajout de la possibilité que CH1 et CH2 =
  41 : C=             soient des MCHAML                                       =
  42 : C=                                                                     =
  43 : C=======================================================================
  44 : 
  45 :       SUBROUTINE FLUX
  46 : 
  47 :       IMPLICIT INTEGER(I-N)
  48 :       IMPLICIT REAL*8 (A-H,O-Z)
  49 : 
  50 : -INC CCOPTIO
  51 : -INC SMCHPOI
  52 : -INC SMLMOTS
  53 : -INC SMMODEL
  54 : 
  55 :       PARAMETER (NP=2)
  56 :       CHARACTER*4 PEAU
  57 :       CHARACTER*4 MOPEAU(NP),MOFLU(1)
  58 :       CHARACTER*4 MOCOMP
  59 : 
  60 :       DATA MOPEAU / 'INFE','SUPE' /
  61 :       DATA MOFLU / 'DIRE' /
  62 : 
  63 : C  1 - LECTURE DES ARGUMENTS DE L'OPERATEUR
  64 : C ==========================================
  65 : C  1.1 - Lecture OBLIGATOIRE du modele (IPMODL)
  66 : C =====
  67 :       MOTERR(1:8)=' MODELE '
  67 :       CALL MESLIR(-137)
  67 :       CALL LIROBJ('MMODEL',IPMODL,1,iOK)
  68 :       IF (IERR.NE.0) RETURN
  69 : C =====
  70 : C  1.2 - Lecture OBLIGATOIRE des flux de chaleur donnes par :
  71 : C           1) un CHPOINT (IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  72 : C        ou 2) un MCHAML (-IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  73 : C        ou 3) un maillage (IPGEOM) et un flottant (VALFLU)
  74 : C =====
  75 :       IPCHPO=0
  76 :       MLMOTX=0
  77 :       VALFLU=0.
  77 :       CALL MESLIR(-164)
  77 :       CALL LIROBJ('CHPOINT',IPCHPO,0,iOK)
  78 :       IF (IERR.NE.0) RETURN
  79 : cbp : on ajoute la possibilité de lire un mchaml      
  80 :       IF (iOK.EQ.0) THEN
  80 :         CALL LIROBJ('MCHAML',IPCHPO,0,iOK)
  81 :         IPCHPO = -1*IPCHPO
  82 :       ENDIF
  83 :       IF (iOK.EQ.1) THEN
  83 :         CALL LIROBJ('LISTMOTS',MLMOTX,0,iOK)
  84 :         IF (IERR.NE.0) RETURN
  85 :         IF (MLMOTX.NE.0) THEN
  86 :           MLMOTS=MLMOTX
  87 :           SEGACT,MLMOTS
  88 :           NCOMP = MOTS(/2)
  89 :           SEGDES,MLMOTS
  90 :           IF (NCOMP.NE.IDIM) THEN
  90 :             CALL ERREUR(21)
  91 :             RETURN
  92 :           ENDIF
  93 :         ENDIF
  94 :         IPCHP2 = IPCHPO
  95 :       ELSE
  95 :         CALL MESLIR(-163)
  95 :         CALL LIRREE(VALFLU,1,iOK)
  96 :         IF (IERR.NE.0) RETURN
  97 :         MOTERR(1:8)='MAILLAGE'
  97 :         CALL MESLIR(-137)
  97 :         CALL LIROBJ('MAILLAGE',IPGEOM,1,iOK)
  98 :         IF (IERR.NE.0) RETURN
  98 :         CALL MANUC2(VALFLU,IPGEOM,1,IPCHP2)
  99 :         IF (IERR.NE.0) RETURN
 100 :       ENDIF
 101 : C =====
 102 : C  1.3 - Lecture FACULTATIVE du MOT 'DIRE' et du vecteur associe
 103 : C =====
 104 :       NUMPOI=-1
 104 :       CALL LIRMOT(MOFLU,1,iOK,0)
 105 :       IF (iOK.NE.0) THEN
 105 :         CALL MESLIR(-162)
 105 :         CALL LIROBJ('POINT',NUMPOI,1,iOK)
 106 :         IF (IERR.NE.0) GOTO 10
 107 :       ENDIF
 108 : C =====
 109 : C  1.4 - Lecture FACULTATIVE du MOT associe a la PEAU (cas des COQUES)
 110 : C =====
 111 :       PEAU='    '
 111 :       CALL MESLIR (-260)
 111 :       CALL LIRMOT(MOPEAU,NP,LP,0)
 112 :       IF (IERR.NE.0) GOTO 10
 113 :       IF (LP.NE.0) PEAU=MOPEAU(LP)
 114 : 
 115 : C  2 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
 116 : C ======================================================
 117 : C  2.1 - Verification de la formulation (unique) du modele
 118 : C =====
 119 :       ITHER = 0
 120 :       ITHHY = 0
 121 :       IELEC = 0
 122 :       IDIFF = 0
 123 :       MMODEL = IPMODL
 124 :       SEGACT,MMODEL
 125 :       NSOUS = KMODEL(/1)
 126 :       DO ISOUS = 1, NSOUS
 127 :         IMODEL = KMODEL(ISOUS)
 128 :         SEGACT,IMODEL
 129 :         NFOR = FORMOD(/2)
 130 :         IF (NFOR.EQ.1) THEN
 131 :           IF (FORMOD(1).EQ.'THERMIQUE') THEN
 132 :             ITHER = 1
 133 :           ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE') THEN
 134 :             ITHHY = 1
 135 :           ELSE IF (FORMOD(1).EQ.'ELECTROSTATIQUE') THEN
 136 :             IELEC = 1
 137 :           ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
 138 :             IDIFF = 1
 139 :           ELSE
 140 :             MOTERR(1:8) = FORMOD(1)
 140 :             CALL ERREUR(193)
 141 :           ENDIF
 142 :         ELSE IF (NFOR.GT.1) THEN
 143 :           MOTERR(1:8) = FORMOD(1)
 143 :           CALL ERREUR(193)
 144 :         ENDIF
 145 :         SEGDES,IMODEL
 146 :       ENDDO
 147 :       SEGDES,MMODEL
 148 :       IF (IERR.NE.0) GOTO 10
 149 :       IF ((ITHER+ITHHY+IELEC+IDIFF).NE.1) THEN
 150 : *AV Affiner l'erreur !
 151 :         write(ioimp,*) 'Une seule formulation dans le modele !'
 151 :         CALL ERREUR(21)
 152 :         GOTO 10
 153 :       ENDIF
 154 : C =====
 155 : C  2.2 - Recuperation du modele de la formulation retenue
 156 : C =====
 156 :       IF (ITHER .EQ. 1) CALL ECRCHA('THERMIQUE')
 156 :       IF (ITHHY .EQ. 1) CALL ECRCHA('THERMOHYDRIQUE')
 156 :       IF (IELEC .EQ. 1) CALL ECRCHA('ELECTROSTATIQUE')
 156 :       IF (IDIFF .EQ. 1) CALL ECRCHA('DIFFUSION')
 156 :       CALL ECRCHA('FORM')
 156 :       CALL ECROBJ('MMODEL',IPMODL)
 156 :       CALL EXTRAI
 156 :       CALL LIROBJ('MMODEL',IPMODL,1,IRet)
 157 :       IF (IERR.NE.0) GOTO 10
 158 : C =====
 159 : C  2.3 - Adequation nom de composante source & modele
 160 : C =====
 161 :       MOCOMP = '    '
 162 :       IF (ITHER .EQ. 1) THEN
 163 :         IF (MOCOMP.EQ.'    ') MOCOMP = 'Q   '
 163 :         IF (MOCOMP.NE.'Q   ') CALL ERREUR(665)
 164 : C* A finir pour la thermohydrique
 165 :       ELSE IF (ITHHY .EQ. 1) THEN
 166 :         MOCOMP = 'Q   '
 167 :       ELSE
 168 :         IPCOMP = 0
 168 :         CALL NOVARD(IPMODL,'FORC')
 168 :         CALL LIROBJ('LISTMOTS',IPCOMP,1,IRet)
 169 :         IF (IERR.NE.0) RETURN
 170 :         MLMOTS = IPCOMP
 171 :         SEGACT,MLMOTS
 172 :         NCOMP = MOTS(/2)
 173 : * Normalement : NCOMP est non nul !
 174 : * Cas particulier de la diffusion en attendant un traitement adequat ?
 175 :         IF (IDIFF.EQ.1 .AND. NCOMP.GT.1) THEN
 176 :           write(ioimp,*) 'Modele de DIFFUSION a une seule quantite SVP'
 176 :           CALL ERREUR(21)
 177 :         ENDIF
 178 :         IF (MOCOMP.EQ.'    ') MOCOMP = MOTS(1)
 178 :         CALL PLACE(MOTS,NCOMP,IRet,MOCOMP)
 178 :         IF (IRet.EQ.0) CALL ERREUR(665)
 179 :         SEGSUP,MLMOTS
 180 :       ENDIF
 181 :       IF (IERR.NE.0) GOTO 10
 182 : 
 183 : C  3 - CALCUL DES FLUX NODAUX EQUIVALENTS
 184 : C ========================================
 185 :       IPFLUX=0
 185 :       CALL FLUX2(IPMODL,IPCHP2,NUMPOI,MOCOMP,PEAU,MLMOTX,IPFLUX)
 186 :       IF (IERR.NE.0) GOTO 10
 187 : 
 188 : C  4 - ECRITURE DU CHPOINT RESULTAT
 189 : C ==================================
 190 : C= Attribution d'une nature DISCRETE au CHPOINT resultat
 191 :       IF (IPFLUX.NE.0) THEN
 192 :         MCHPOI=IPFLUX
 193 :         SEGACT,MCHPOI*MOD
 194 :         NAT=MAX(1,JATTRI(/1))
 195 :         NSOUPO=IPCHP(/1)
 196 :         SEGADJ,MCHPOI
 197 :         JATTRI(1)=2
 198 :         SEGDES,MCHPOI
 199 :         IPFLUX=MCHPOI
 199 :         CALL ECROBJ('CHPOINT',IPFLUX)
 200 :       ENDIF
 201 : 
 202 : C  5 - MENAGE : Destruction eventuelle de CHPOINT intermediaire
 203 : C ==============
 204 :  10   CONTINUE
 204 :       IF (IPCHPO.EQ.0) CALL DTCHPO(IPCHP2)
 205 : 
 206 :       RETURN
 207 :       END
 208 : 
 209 :  
 210 :  
 211 :  

© Cast3M 2003 - All rights reserved.
Disclaimer