1 : C TOWA1 SOURCE CHAT 09/10/09 21:25:34 6519 2 : SUBROUTINE TOWA1 (REDIR,NOCOPO,NOMDU1,IPINW,NOMPR1, 3 : & MPOVD1,MPOVC1,MPOVR1,MPOVL1,MPOVT1, 4 : & XDT1,DESCR,xMATRI,MCHPOI) 5 : C 6 : C*********************************************************************** 7 : C 8 : C 9 : C Subroutine appelée par TOWA. 10 : C Création de la matrice élémentaire et du second membre associés 11 : C à l'opération de thermique 1D dans un mur. 12 : C 13 : C 14 : C ENTREES : 15 : C -------- 16 : C 17 : C REDIR : Segment des tableaux de correspondances 18 : C NOCOPO : Segment des tableaux de positions des noms de composantes 19 : C NOMDU1 : Nom de l'inconnue duale définie sur les points de 20 : C tous les murs. 21 : C IPINW : Support géométrique associé au mur 22 : C NOMPR1 : Nom de l'inconnue ou de la donnée flux de chaleur. 23 : C MPOVD1 : Pointeur sur le segment MPOVAL des valeurs de l'inconnue 24 : C duale à l'itération précédente. 25 : C MPOVC1 : Pointeur sur le segment MPOVAL des valeurs des chaleurs 26 : C spécifiques. 27 : C MPOVR1 : Pointeur sur le segment MPOVAL des valeurs des masses 28 : C volumiques. 29 : C MPOVL1 : Pointeur sur le segment MPOVAL des valeurs des 30 : C conductivités spécifiques. 31 : C MPOVT1 : Pointeur sur le segment MPOVAL des valeurs des 32 : C épaisseurs. 33 : C XDT1 : Valeur du pas de temps 34 : C 35 : C SORTIE : 36 : C ------- 37 : C 38 : C DESCR : Pointeur sur le segment descriptif de la matrice 39 : C élémentaire. 40 : C IMATRI : Pointeur sur le segment contenant le pointeur de 41 : C la matrice élémentaire. 42 : C MCHPOI : Pointeur sur le champ second membre. 43 : C 44 : C 45 : C AUTEUR, DATE DE CREATION: 46 : C ------------------------- 47 : C 48 : C Laurent DADA décembre 1996 49 : C 50 : C 51 : C LANGAGE: 52 : C -------- 53 : C 54 : C ESOPE + FORTRAN77 55 : C 56 : C*********************************************************************** 57 : C 58 : IMPLICIT INTEGER(I-N) 59 : IMPLICIT REAL*8 (A-H,O-Z) 60 : C 61 : -INC CCOPTIO 62 : -INC SMCHPOI 63 : POINTEUR MPOVC1.MPOVAL,MPOVR1.MPOVAL,MPOVD1.MPOVAL 64 : POINTEUR MPOVL1.MPOVAL,MPOVT1.MPOVAL 65 : -INC SMELEME 66 : POINTEUR IPINW.MELEME 67 : -INC SMRIGID 68 : -INC TMTRAV 69 : C 70 : SEGMENT REDIR 71 : INTEGER IPOSC1(NNGOT) 72 : INTEGER IPOSR1(NNGOT) 73 : INTEGER IPOSL1(NNGOT) 74 : INTEGER IPOST1(NNGOT) 75 : INTEGER IPOSQ1(NNGOT) 76 : INTEGER IPOSD1(NNGOT) 77 : ENDSEGMENT 78 : C 79 : SEGMENT NOCOPO 80 : INTEGER NOCOC1(2) 81 : INTEGER NOCOR1(2) 82 : INTEGER NOCOL1(2) 83 : INTEGER NOCOT1(2) 84 : ENDSEGMENT 85 : C 86 : CHARACTER*8 NOMDU1,NOMPR1 87 : REAL*8 LGAU,LDRO 88 : C 89 : SEGACT IPINW 90 : NBELW1 = IPINW.NUM(/2) 91 : C 92 : C Remplissage du descripteur de l'objet RIGIDITE 93 : C 94 : NLIGRP = NBELW1 95 : NLIGRD = NBELW1 96 : SEGINI DESCR 97 : C 98 : DO 20 I20=1,NBELW1 99 : NOELEP(I20) = I20 100 : LISINC(I20) = NOMDU1 101 : NOELED(I20) = I20 102 : LISDUA(I20) = NOMDU1 103 : 20 CONTINUE 104 : C 105 : SEGDES DESCR 106 : C 107 : NELRIG = 1 108 : * SEGINI IMATRI 109 : SEGINI XMATRI 110 : C 111 : * IMATTT(1) = XMATRI 112 : * SEGDES IMATRI 113 : C 114 : C Initialisation du segment de travail 115 : C 116 : NNIN = 1 117 : NNNOE = NBELW1 118 : SEGINI MTRAV 119 : INCO(1) = NOMDU1 120 : NHAR(1) = NIFOUR 121 : C Boucle sur les points internes du mur 122 : SEGACT REDIR 123 : SEGACT NOCOPO 124 : SEGACT MPOVC1 125 : SEGACT MPOVR1 126 : SEGACT MPOVL1 127 : SEGACT MPOVT1 128 : SEGACT MPOVD1 129 : C 130 : DO 40 I40=2,(NBELW1-1) 131 : NUMW1 = IPINW.NUM(1,I40) 132 : IGEO(I40) = NUMW1 133 : IBIN(1,I40) = 1 134 : JPOSC1 = IPOSC1(NUMW1) 135 : JPOSR1 = IPOSR1(NUMW1) 136 : JPOSL1 = IPOSL1(NUMW1) 137 : JPOST1 = IPOST1(NUMW1) 138 : JPOSD1 = IPOSD1(NUMW1) 139 : CGAU = MPOVC1.VPOCHA(JPOSC1,NOCOC1(1)) 140 : RGAU = MPOVR1.VPOCHA(JPOSR1,NOCOR1(1)) 141 : LGAU = MPOVL1.VPOCHA(JPOSL1,NOCOL1(1)) 142 : TGAU = MPOVT1.VPOCHA(JPOST1,NOCOT1(1)) 143 : CDRO = MPOVC1.VPOCHA(JPOSC1,NOCOC1(2)) 144 : RDRO = MPOVR1.VPOCHA(JPOSR1,NOCOR1(2)) 145 : LDRO = MPOVL1.VPOCHA(JPOSL1,NOCOL1(2)) 146 : TDRO = MPOVT1.VPOCHA(JPOST1,NOCOT1(2)) 147 : AI = - LGAU / TGAU 148 : BI = (0.5D0*TGAU*RGAU*CGAU+0.5D0*TDRO*RDRO*CDRO) / XDT1 149 : & + LGAU / TGAU + LDRO / TDRO 150 : CI = - LDRO / TDRO 151 : DI = ((0.5D0*TGAU*RGAU*CGAU+0.5D0*TDRO*RDRO*CDRO) / XDT1) 152 : & * (MPOVD1.VPOCHA(JPOSD1,1)) 153 : RE(I40,I40-1,1) = AI 154 : RE(I40,I40,1) = BI 155 : RE(I40,I40+1,1) = CI 156 : BB(1,I40) = DI 157 : 40 CONTINUE 158 : C Le premier point du mur 159 : NUMW1 = IPINW.NUM(1,1) 160 : IGEO(1) = NUMW1 161 : IBIN(1,1) = 1 162 : JPOSC1 = IPOSC1(NUMW1) 163 : JPOSR1 = IPOSR1(NUMW1) 164 : JPOSL1 = IPOSL1(NUMW1) 165 : JPOST1 = IPOST1(NUMW1) 166 : JPOSD1 = IPOSD1(NUMW1) 167 : CDRO = MPOVC1.VPOCHA(JPOSC1,NOCOC1(2)) 168 : RDRO = MPOVR1.VPOCHA(JPOSR1,NOCOR1(2)) 169 : LDRO = MPOVL1.VPOCHA(JPOSL1,NOCOL1(2)) 170 : TDRO = MPOVT1.VPOCHA(JPOST1,NOCOT1(2)) 171 : BI = 0.5D0*TDRO*RDRO*CDRO / XDT1 + LDRO / TDRO 172 : CI = - LDRO / TDRO 173 : DI = (0.5D0*TDRO*RDRO*CDRO / XDT1) * (MPOVD1.VPOCHA(JPOSD1,1)) 174 : RE(1,1,1) = BI 175 : RE(1,2,1) = CI 176 : BB(1,1) = DI 177 : C Le dernier point du mur 178 : NUMW1 = IPINW.NUM(1,NBELW1) 179 : IGEO(NBELW1) = NUMW1 180 : IBIN(1,NBELW1) = 1 181 : JPOSC1 = IPOSC1(NUMW1) 182 : JPOSR1 = IPOSR1(NUMW1) 183 : JPOSL1 = IPOSL1(NUMW1) 184 : JPOST1 = IPOST1(NUMW1) 185 : JPOSD1 = IPOSD1(NUMW1) 186 : CGAU = MPOVC1.VPOCHA(JPOSC1,NOCOC1(1)) 187 : RGAU = MPOVR1.VPOCHA(JPOSR1,NOCOR1(1)) 188 : LGAU = MPOVL1.VPOCHA(JPOSL1,NOCOL1(1)) 189 : TGAU = MPOVT1.VPOCHA(JPOST1,NOCOT1(1)) 190 : AI = - LGAU / TGAU 191 : BI = 0.5D0*TGAU*RGAU*CGAU / XDT1 + LGAU / TGAU 192 : DI = (0.5D0*TGAU*RGAU*CGAU / XDT1) * (MPOVD1.VPOCHA(JPOSD1,1)) 193 : RE(NBELW1,NBELW1-1,1) = AI 194 : RE(NBELW1,NBELW1,1) = BI 195 : BB(1,NBELW1) = DI 196 : C 197 : C Création du second membre 198 : C 198 : CALL CRECHP (MTRAV,MCHPOI) 199 : C 200 : SEGDES MPOVD1 201 : SEGDES IPINW 202 : SEGDES XMATRI 203 : SEGDES MPOVC1 204 : SEGDES MPOVR1 205 : SEGDES MPOVL1 206 : SEGDES MPOVT1 207 : C 208 : SEGDES REDIR 209 : SEGDES NOCOPO 210 : SEGSUP MTRAV 211 : C 212 : C 213 : END 214 : 215 :
© Cast3M 2003 - All rights reserved.
Disclaimer