1 : C FLUX2 SOURCE BP208322 13/07/30 21:15:08 7809 2 : 3 : C======================================================================= 4 : C= F L U X 2 = 5 : C= --------- = 6 : C= = 7 : C= Fonction : = 8 : C= ---------- = 9 : C= Calcul des flux nodaux equivalents aux conditions de flux imposes = 10 : C= = 11 : C= Parametres : (E)=Entree (S)=Sortie = 12 : C= ------------ = 13 : C= IPMODE (E) Pointeur sur le segment MMODEL de la structure = 14 : C= IPCHPO (E) Pointeur sur le CHPOINT (ou le MCHAML) de flux = 15 : C= imposes aux noeuds de la structure = 16 : C= (champ variable ou constant) = 17 : C= NUMPOI (E) Vaut -1 si le flux impose est normal a la surface, = 18 : C= sinon pointeur sur un POINT correspondant a la = 19 : C= direction du flux (par rapport au repere global) = 20 : C= MOCOMP (E) Nom de la composante de flux = 21 : C= PEAU (E) Indique la peau consideree (elements COQUES) = 22 : C= MLMOTX (E) Pointeur MLMOTS de la liste des composantes de = 23 : C= IPCHPO associees aux 3 directions x,y,z. = 24 : C= IPFLUX (S) Pointeur sur le champ des flux nodaux equivalents = 25 : C= = 26 : C= Variables locales : = 27 : C= ------------------- = 28 : C= IMASSI Tableau contenant les numeros dans NOMTP des elements = 29 : C= thermiques de type MASSIF = 30 : C= LMASSI Longueur du tableau IMASSI = 31 : C= ICOQUE Tableau contenant les numeros dans NOMTP des elements = 32 : C= thermiques de type COQUE = 33 : C= LCOQUE Longueur du tableau ICOQUE = 34 : C= = 35 : C= Remarque : Le MODELE doit contenir exclusivement un seul type = 36 : C= ---------- d'elements, soit MASSIFs, soit COQUEs. = 37 : C= = 38 : C= Denis ROBERT, le 29 janvier 1988. = 39 : C======================================================================= 40 : 41 : SUBROUTINE FLUX2 (IPMODE,IPCHPO,NUMPOI,MOCOMP,PEAU,MLMOTX, IPFLUX) 42 : 43 : IMPLICIT INTEGER(I-N) 44 : IMPLICIT REAL*8 (A-H,O-Z) 45 : 46 : -INC CCOPTIO 47 : -INC SMMODEL 48 : -INC SMCHPOI 49 : -INC SMCHAML 50 : -INC SMELEME 51 : 52 : CHARACTER*(*) MOCOMP,PEAU 53 : 54 : PARAMETER (LMASSI=16,LCOQUE=5) 55 : INTEGER IMASSI(LMASSI),ICOQUE(LCOQUE) 56 : 57 : LOGICAL ltelq 58 : 59 : C ---------- 60 : C Elements TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10 61 : C MASSIFs PYR5 PY13 T1D2 T1D3 M1D2 M1D3 62 : C ---------- 63 : DATA IMASSI / 4, 6, 8, 10, 14, 15, 16, 17, 23, 24, 64 : . 25, 26, 191, 192, 193, 194 / 65 : C ------------- 66 : C Elts COQUEs COQ2 COQ3 COQ8 COQ4 COQ6 67 : C ------------- 68 : DATA ICOQUE / 44, 27, 41, 49, 56 / 69 : 70 : C 1 - VERIFICATIONS SUR LE MODELE 71 : C ================================= 72 : C ERREUR si l'objet MODELE ne contient pas uniquement un seul type 73 : C d'elements soit MASSIF, soit COQUE. 74 : C ERREUR si la PEAU n'est pas indiquee dans le cas d'elements COQUE. 75 : C ===== 76 : jMASSi=0 77 : jCOQue=0 78 : MMODEL=IPMODE 79 : SEGACT,MMODEL 80 : NSOU=KMODEL(/1) 81 : DO i=1,NSOU 82 : IMODEL=KMODEL(i) 83 : SEGACT,IMODEL 83 : CALL PLACE2(IMASSI,LMASSI,iOK,NEFMOD) 84 : IF (iOK.NE.0) THEN 85 : jMASSi=jMASSi+1 86 : ELSE 86 : CALL PLACE2(ICOQUE,LCOQUE,iOK,NEFMOD) 87 : IF (iOK.NE.0) jCOQue=jCOQue+1 88 : ENDIF 89 : SEGDES,IMODEL 90 : ENDDO 91 : SEGDES,MMODEL 92 : IF (jMASSi.NE.NSOU.AND.jCOQue.NE.NSOU) THEN 92 : CALL ERREUR(409) 93 : RETURN 94 : ENDIF 95 : IF (jCOQue.EQ.NSOU) THEN 96 : IF (PEAU.EQ.' ') THEN 96 : CALL ERREUR(513) 97 : RETURN 98 : ENDIF 99 : MOCOMP(1:4)='Q'//PEAU(1:3) 100 : ENDIF 101 : 102 : C 2 - PREPARATION DES DONNEES POUR LE CALCUL 103 : C ============================================ 104 : C= Creation d'un objet MAILLAGE contenant une seule fois tous les points 105 : 106 : C= 2.1 du CHAMELEM -IPCHPO 107 : if(IPCHPO.lt.0) then 108 : 109 : MCHELM=-1*IPCHPO 110 : segact,MCHELM 111 : N1=IMACHE(/1) 112 : if(N1.eq.0)then 113 : moterr(1:8)='CHAMELEM' 114 : interr(1)=MCHELM 114 : CALL ERREUR(356) 115 : RETURN 116 : endif 117 : c verif que l'on est sur les points de gauss pour la thermique 118 : ISUPPO=INFCHE(1,6) 119 : if(ISUPPO.ne.6) then 119 : call CHASUP(IPMODE,MCHELM,MCHEL2,IRET,6) 119 : if(IRET.NE.0) call erreur(IRET) 120 : MCHELM=MCHEL2 121 : segact,MCHELM 122 : endif 123 : MELEME=IMACHE(1) 124 : segact,MELEME 124 : call CHANGE(MELEME,1) 125 : segdes,MELEME 126 : IPGEOM = MELEME 127 : if(N1.gt.1) then 128 : do i=2,N1 129 : MELEME=IMACHE(2) 130 : segact,MELEME 130 : call CHANGE(MELEME,1) 131 : segdes,MELEME 132 : ltelq=.FALSE. 132 : CALL FUSE(IPGEOM,MELEME,IRET,ltelq) 133 : IF (IERR.NE.0) RETURN 134 : IPGEOM=IRET 135 : enddo 136 : endif 137 : segdes,MCHELM 138 : 139 : C= 2.2 du CHPOINT IPCHPO (fusion des maillages supports de tous les MSOUPO) 140 : else 141 : 142 : MCHPOI=IPCHPO 143 : SEGACT,MCHPOI 144 : NSOUPO=IPCHP(/1) 145 : IF (NSOUPO.EQ.0) THEN 145 : CALL ERREUR(156) 146 : RETURN 147 : ENDIF 148 : MSOUPO=IPCHP(1) 149 : SEGACT,MSOUPO 150 : IPGEOM=IGEOC 151 : SEGDES,MSOUPO 152 : DO i=2,NSOUPO 153 : MSOUPO=IPCHP(i) 154 : SEGACT,MSOUPO 155 : IGEO1=IGEOC 156 : SEGDES,MSOUPO 157 : ltelq=.FALSE. 157 : CALL FUSE(IPGEOM,IGEO1,IRET,ltelq) 158 : IF (IERR.NE.0) RETURN 159 : IPGEOM=IRET 160 : ENDDO 161 : SEGDES,MCHPOI 162 : 163 : endif 164 : 165 : C 3 - CALCUL DES FLUX EQUIVALENTS 166 : C ================================= 167 : C 3.1 - Cas des elements MASSIFS (1D,2D,3D) 168 : C ===== 169 : IF (jMASSi.EQ.NSOU) THEN 169 : CALL FLUMAS(IPMODE,IPGEOM,IPCHPO,NUMPOI,MOCOMP,MLMOTX, IPFLUX) 170 : C ===== 171 : C 3.2 - Cas des elements de COQUE 172 : C ===== 173 : C* ELSE IF (jCOQue.EQ.NSOU) THEN 174 : ELSE 174 : CALL FLUCOQ(IPMODE,IPGEOM,IPCHPO,NUMPOI,MOCOMP,MLMOTX, IPFLUX) 175 : ENDIF 176 : 177 : RETURN 178 : END 179 : 180 : 181 : 182 :
© Cast3M 2003 - All rights reserved.
Disclaimer