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