1 : C KON17 SOURCE CHAT 06/03/29 21:24:17 5360 2 : SUBROUTINE KON17 3 : C 4 : C************************************************************************ 5 : C 6 : C PROJET : CASTEM 2000 7 : C 8 : C NOM : KON17 9 : C 10 : C DESCRIPTION : Voir KON1 11 : C Matrice de prconditionnement pour le variables 12 : C conservatives sous la forme d'un objet 13 : C elementaire de type MATRIK 14 : C 15 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI) 16 : C 17 : C AUTEUR : A. BECCANTINI, DM2S/SFME/LTMF 18 : C 19 : C************************************************************************ 20 : C 21 : C 22 : C APPELES (Outils) : 23 : C 24 : C APPELES (Calcul) : 25 : C 26 : C 27 : C************************************************************************ 28 : C 29 : C PHRASE D'APPELLE GIBIANE 30 : C 31 : C MAT1 = 'KONV' 'VF' 'PERFMONO' 'GAMMCONS' LMOT1 MAIL1 CHPO1 CHPO2 CHPO3 32 : C CHPO4 CHPO5 CHPO6 ; 33 : C 34 : C LMOT1 : objet de type LISTMOTS 35 : C Noms des variables conservatives 36 : C Il contient dans l'ordre suivant: le noms de la densité, 37 : C de la vitesse, de l'énergie totale par unité de volume 38 : C 39 : C MAIL1 : maillage, SPG des champoints suivants 40 : C 41 : C CHPO0 : CHPOINT contenant le diametre de la cellule (pour le calcule 42 : C du pas de temps local). 43 : C 44 : C CHPO1 : CHPOINT contenant la masse volumique 45 : C (SPG = MAIL1 des elts une seule composante, 46 : C 'SCAL'). 47 : C 48 : C CHPO2 : CHPOINT contenant la vitesse 49 : C (SPG = MAIL1 des elts, deux/trois composantes 50 : C 'UX', 'UY', 'UZ') 51 : C 52 : C CHPO3 : CHPOINT contenant la pression du gaz 53 : C (SPG = MAIL1 des elts, une seule composante, 54 : C 'SCAL'). 55 : C 56 : C CHPO4 : CHPOINT contenant le "gamma" du gaz 57 : C (SPG = MAIL1 des elts, une seule composante, 58 : C 'SCAL'). 59 : C 60 : C CHPO5 : CHPOINT contenant la premiere vitesse de cut-off 61 : C (SPG = MAIL1 des elts, une seule composante, 62 : C 'SCAL'). 63 : C 64 : C CHPO6 : CHPOINT contenant la deuxieme vitesse de cut-off 65 : C (SPG = MAIL1 des elts, une seule composante, 66 : C 'SCAL'). 67 : C 68 : C SORTIE 69 : C 70 : C MAT1 : objet de type MATRIK, qui contient la matrice gamma 71 : C (divisé par le pas de temps locale; 72 : C le pas de temps est calculé pour le système preconditionnné) 73 : C 74 : C************************************************************************ 75 : C 76 : C HISTORIQUE (Anomalies et modifications éventuelles) 77 : C 78 : C HISTORIQUE : 79 : C 80 : C************************************************************************ 81 : C 82 : C**** Variables de COOPTIO 83 : C 84 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR 85 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ 86 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES 87 : C & ,IECHO, IIMPI, IOSPI 88 : C & ,IDIM 89 : C & ,MCOORD 90 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE 91 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU 92 : C & ,NORINC,NORVAL,NORIND,NORVAD 93 : C & ,NUCROU, IPSAUV, IFICLE, IPREFI 94 : C 95 : IMPLICIT INTEGER(I-N) 96 : INTEGER ILIINC, IRET, NC, ICOND, IERR0, INDIC, JGN, JGM 97 : & ,IRN,NBCOMP,IVN,IPN,IGAMN,IGMAT,IUPRI1,IUPRI2 98 : & ,NBSOUS,NTYP,IGEOM,IDIAM 99 : CHARACTER*8 TYPE 100 : CHARACTER*4 MOT(1) 101 : C 102 : -INC CCOPTIO 103 : -INC SMLMOTS 104 : -INC SMCHPOI 105 : -INC SMELEME 106 : C 107 : C**** La list des inconnues 108 : C 109 : TYPE='LISTMOTS' 109 : CALL LIROBJ(TYPE,ILIINC,1,IRET) 110 : IF(IERR .NE. 0) GOTO 9999 111 : MLMOTS = ILIINC 112 : SEGACT MLMOTS 113 : NC = MLMOTS.MOTS(/2) 114 : SEGDES MLMOTS 115 : IF(NC .NE. (IDIM+2))THEN 116 : MOTERR(1:40) = 'LISTINCO = ???' 117 : WRITE(IOIMP,*) MOTERR 118 : C 119 : C******* Message d'erreur standard 120 : C 21 2 121 : C Données incompatibles 122 : C 122 : CALL ERREUR(21) 123 : GOTO 9999 124 : ENDIF 125 : C 126 : C**** Le SPG 127 : C 127 : CALL LIROBJ('MAILLAGE',IGEOM,1,IRET) 128 : IF(IERR .NE. 0) GOTO 9999 129 : C 130 : C**** On controle que le MELEME soit de type POI1 131 : C Si non changer 132 : C 133 : MELEME = IGEOM 134 : SEGACT MELEME 135 : NBSOUS = MELEME.LISOUS(/1) 136 : NTYP = MELEME.ITYPEL 137 : C 138 : IF ((NBSOUS.NE.0).OR.(NTYP.NE.1)) THEN 138 : CALL CHANGE(MELEME,1) 139 : IPT1 = IGEOM 140 : SEGDES IPT1 141 : IF (IERR.NE.0) GOTO 9999 142 : ENDIF 143 : C 144 : C**** Initialisation des MOT(1) 145 : C 146 : MOT(1) = ' ' 147 : C 148 : C**** Lecture du diametre minimum 149 : C 150 : ICOND = 1 150 : CALL LIROBJ('CHPOINT',IDIAM,ICOND,IRET) 151 : IF (IERR.NE.0) GOTO 9999 152 : C 153 : C**** Control du CHPOINT: QUEPOI 154 : C 155 : INDIC = 1 156 : NBCOMP = 1 157 : MOT(1) = 'SCAL' 157 : CALL QUEPOI(IDIAM, MELEME, INDIC, NBCOMP, MOT) 158 : IF(IERR .NE. 0)THEN 159 : IERR0 = IERR 160 : 161 : C 162 : C******** Message d'erreur standard 163 : C -301 0 %m1:40 164 : C 165 : MOTERR = 'CHPO0 = ??? ' 166 : WRITE(IOIMP,*) MOTERR(1:40) 167 : IERR = IERR0 168 : GOTO 9999 169 : ENDIF 170 : C 171 : C**** Lecture du CHPOINT RO 172 : C 173 : ICOND = 1 173 : CALL LIROBJ('CHPOINT',IRN,ICOND,IRET) 174 : IF (IERR.NE.0) GOTO 9999 175 : C 176 : C**** Control du CHPOINT: QUEPOI 177 : C 178 : C On controlle que le chpoint est non-partitione 179 : C 180 : C INDIC = 1 -> on impose le pointeur du support geometrique (MELEME) 181 : C INDIC = 0 -> on ne fait que verifier le support geometrique (MELEME) 182 : C 183 : C NBCOMP > 0 -> numero des composantes 184 : C 185 : C MOT(1) = ' ' obligatoire s'on connais pas les noms des composantes 186 : C 187 : INDIC = 1 188 : NBCOMP = 1 189 : MOT(1) = 'SCAL' 189 : CALL QUEPOI(IRN, MELEME, INDIC, NBCOMP, MOT) 190 : IF(IERR .NE. 0)THEN 191 : IERR0 = IERR 192 : IERR = 0 193 : C 194 : C******** Message d'erreur standard 195 : C -301 0 %m1:40 196 : C 197 : MOTERR = 'CHPO1 = ??? ' 198 : WRITE(IOIMP,*) MOTERR(1:40) 199 : IERR = IERR0 200 : GOTO 9999 201 : ENDIF 202 : C 203 : C**** Lecture du CHPOINT vitesse 204 : C 205 : ICOND = 1 205 : CALL LIROBJ('CHPOINT',IVN,ICOND,IRET) 206 : IF (IERR.NE.0) GOTO 9999 207 : C 208 : C**** Control du CHPOINT 209 : C 210 : INDIC = 1 211 : NBCOMP = IDIM 212 : JGN = 4 213 : JGM = IDIM 214 : SEGINI MLMOTS 215 : MLMOTS.MOTS(1) = 'UX ' 216 : MLMOTS.MOTS(2) = 'UY ' 217 : IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ ' 217 : CALL QUEPO1(IVN, MELEME, MLMOTS) 218 : IF(IERR .NE. 0)THEN 219 : IERR0 = IERR 220 : IERR = 0 221 : C 222 : C******** Message d'erreur standard 223 : C -301 0 %m1:40 224 : C 225 : MOTERR = 'CHPO2 = ??? ' 226 : WRITE(IOIMP,*) MOTERR(1:40) 227 : 228 : GOTO 9999 229 : ENDIF 230 : SEGSUP MLMOTS 231 : C 232 : C**** Lecture du CHPOINT PN 233 : C 234 : ICOND = 1 234 : CALL LIROBJ('CHPOINT',IPN,ICOND,IRET) 235 : IF (IERR.NE.0) GOTO 9999 236 : C 237 : C**** Control du CHPOINT 238 : C 239 : INDIC = 1 240 : NBCOMP = 1 241 : MOT(1) = 'SCAL' 241 : CALL QUEPOI(IPN, MELEME, INDIC, NBCOMP, MOT) 242 : IF(IERR .NE. 0)THEN 243 : IERR0 = IERR 244 : 245 : C 246 : C******** Message d'erreur standard 247 : C -301 0 %m1:40 248 : C 249 : MOTERR = 'CHPO3 = ??? ' 250 : WRITE(IOIMP,*) MOTERR(1:40) 251 : 252 : GOTO 9999 253 : ENDIF 254 : C 255 : C**** Lecture du CHPOINT GAMMA 256 : C 257 : ICOND = 1 257 : CALL LIROBJ('CHPOINT',IGAMN,ICOND,IRET) 258 : IF(IERR .NE. 0)GOTO 9999 259 : C 260 : C**** Control du CHPOINT 261 : C 262 : INDIC = 1 263 : NBCOMP = 1 264 : MOT(1) = 'SCAL' 264 : CALL QUEPOI(IGAMN, MELEME, INDIC, NBCOMP, MOT) 265 : IF(IERR .NE. 0)THEN 266 : IERR0 = IERR 267 : 268 : C 269 : C******* Message d'erreur standard 270 : C -301 0 %m1:40 271 : C 272 : MOTERR = 'CHPO4 = ??? ' 273 : WRITE(IOIMP,*) MOTERR(1:40) 274 : 275 : GOTO 9999 276 : ENDIF 277 : C 278 : C*** Reading IUPRI1 279 : C 280 : ICOND = 1 280 : CALL LIROBJ('CHPOINT',IUPRI1,ICOND,IRET) 281 : IF(IERR .NE. 0)GOTO 9999 282 : C 283 : C**** Control du CHPOINT 284 : C 285 : INDIC = 1 286 : NBCOMP = 1 287 : MOT(1) = 'SCAL' 287 : CALL QUEPOI(IUPRI1, MELEME, INDIC, NBCOMP, MOT) 288 : IF(IERR .NE. 0)THEN 289 : IERR0 = IERR 290 : 291 : C 292 : C******* Message d'erreur standard 293 : C -301 0 %m1:40 294 : C 295 : MOTERR = 'CHPO5 = ??? ' 296 : WRITE(IOIMP,*) MOTERR(1:40) 297 : 298 : GOTO 9999 299 : ENDIF 300 : C 301 : C*** Reading IUPRI2 302 : C 303 : ICOND = 1 303 : CALL LIROBJ('CHPOINT',IUPRI2,ICOND,IRET) 304 : IF(IERR .NE. 0)GOTO 9999 305 : C 306 : C**** Control du CHPOINT 307 : C 308 : INDIC = 1 309 : NBCOMP = 1 310 : MOT(1) = 'SCAL' 310 : CALL QUEPOI(IUPRI2, MELEME, INDIC, NBCOMP, MOT) 311 : IF(IERR .NE. 0)THEN 312 : IERR0 = IERR 313 : 314 : C 315 : C******* Message d'erreur standard 316 : C -301 0 %m1:40 317 : C 318 : MOTERR = 'CHPO6 = ??? ' 319 : WRITE(IOIMP,*) MOTERR(1:40) 320 : 321 : GOTO 9999 322 : ENDIF 323 : C 324 : C**** Calcul de la matrice \Gamma 325 : C 325 : CALL KON171(MELEME,IDIAM,IRN,IVN,IPN,IGAMN,ILIINC,IUPRI1,IUPRI2, 326 : & IGMAT) 327 : IF(IERR.NE.0) GOTO 9999 328 : C 329 : TYPE='MATRIK ' 329 : CALL ECROBJ(TYPE,IGMAT) 330 : C 331 : 9999 RETURN 332 : END 333 : 334 : 335 : 336 :
© Cast3M 2003 - All rights reserved.
Disclaimer