1 : C KON18 SOURCE CHAT 05/01/13 00:59:13 5004 2 : SUBROUTINE KON18 3 : C************************************************************************ 4 : C 5 : C PROJET : CASTEM 2000 6 : C 7 : C NOM : KON17 8 : C 9 : C DESCRIPTION : Subroutine appellée par KON1 10 : C 11 : C Modelisation 2D/3D des equations d'Euler 12 : C 13 : C Calcul de la Matrix de preconditionnement 14 : C pour les variables primitives (rho, u,v,p) 15 : C 16 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI) 17 : C 18 : C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF 19 : C S. Kudriakov , DRN/DMT/SEMT/LTMF 20 : C************************************************************************ 21 : C 22 : C APPELES (Calcul) : 23 : C 24 : C************************************************************************ 25 : C 26 : C*** SYNTAXE 27 : C 28 : C Discrétisation en VF "cell-centered" des équations d'Euler pour 29 : C un gaz parfait mono-constituent polytropique 30 : C 31 : C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'GAMPRIM' MAIL1 LMOT1 LMOT2 32 : C CHPO1 CHPO2 CHPO3 CHPO4 CHPO5 CHPO6 ; 33 : C 34 : C ENTREES 35 : C 36 : C LMOT1 : objet de type LISTMOTS 37 : C Noms de composantes des variable duales de RMAT1. 38 : C Il contient dans l'ordre suivant: le noms de la densité, 39 : C du momentum, de l'énergie totale par unité de volume 40 : C 41 : C LMOT2 : objet de type LISTMOTS 42 : C Noms de composantes des variable primales de RMAT1. 43 : C Il contient dans l'ordre suivant: le noms de la densité, 44 : C de la vitesse, de la pression. 45 : C 46 : C MAIL1 : SPG 47 : C 48 : C CHPO0 : CHPOINT contenant le diametre de la cellule (pour le calcul 49 : C du pas de temps local). 50 : C 51 : C CHPO1 : CHPOINT contenant la masse volumique 52 : C (SPG = MAIL1, une seule composante, 53 : C 'SCAL'). 54 : C 55 : C CHPO2 : CHPOINT contenant la vitesse 56 : C (SPG = MAIL1, deux/trois composantes 57 : C 'UX', 'UY', 'UZ') 58 : C 59 : C CHPO3 : CHPOINT contenant la pression du gaz 60 : C (SPG = MAIL1, une seule composante, 61 : C 'SCAL'). 62 : C 63 : C CHPO4 : CHPOINT contenant le "gamma" du gaz 64 : C (SPG = MAIL1, une seule composante, 65 : C 'SCAL'). 66 : C 67 : C CHPO5 : CHPOINT contenant la vitesse de "cut-off" 68 : C (SPG = MAIL1, une seule composante, 69 : C 'SCAL'). 70 : C 71 : C CHPO6 : CHPOINT contenant la deuxieme vitesse de "cut-off" 72 : C (SPG = MAIL1, une seule composante, 73 : C 'SCAL'). 74 : C 75 : C SORTIES 76 : C 77 : C RMAT1 : objet de type MATRIK 78 : C (SPG = MAIL1) 79 : C 80 : C************************************************************************ 81 : C 82 : C HISTORIQUE (Anomalies et modifications éventuelles) 83 : C 84 : C HISTORIQUE : 85 : C 86 : C************************************************************************ 87 : C 88 : IMPLICIT INTEGER(I-N) 89 : -INC CCOPTIO 90 : -INC SMLMOTS 91 : -INC SMCHPOI 92 : -INC SMELEME 93 : POINTEUR MLMVIT.MLMOTS 94 : C 95 : C**** Variables de COOPTIO 96 : C 97 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR 98 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ 99 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES 100 : C & ,IECHO, IIMPI, IOSPI 101 : C & ,IDIM, IFICLE, IPREFI 102 : C & ,MCOORD 103 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE 104 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU 105 : C & ,NORINC,NORVAL,NORIND,NORVAD 106 : C & ,NUCROU, IPSAUV 107 : C 108 : INTEGER IRET, INDIC, NBCOMP, NESP, JGN, JGM 109 : & ,MELEMC, IDIAM 110 : & ,IJACO, ILIINC, ILIINP, NC 111 : & ,IRN, IVN, IPN, IGAMN, IUPRI, IUPRI2 112 : C 113 : CHARACTER*8 TYPE 114 : CHARACTER*4 MOT 115 : CHARACTER*(40) MESERR 116 : C 117 : C******************************* 118 : C**** La table domaine ********* 119 : C******************************* 120 : C 120 : CALL LIROBJ('MAILLAGE',MELEMC,1,IRET) 121 : IF(IERR .NE. 0)GOTO 9999 122 : C 123 : NESP=0 124 : C 125 : C**** La list des inconnues duales (variables conservatives) 126 : C 127 : TYPE='LISTMOTS' 127 : CALL LIROBJ(TYPE,ILIINC,1,IRET) 128 : IF(IERR .NE. 0) GOTO 9999 129 : MLMOTS = ILIINC 130 : SEGACT MLMOTS 131 : NC = MLMOTS.MOTS(/2) 132 : SEGDES MLMOTS 133 : IF(NC .NE. (IDIM+2+NESP))THEN 134 : MOTERR(1:40) = 'LISTINCO = ???' 135 : WRITE(IOIMP,*) MOTERR 136 : C 137 : C******* Message d'erreur standard 138 : C 21 2 139 : C Données incompatibles 140 : C 140 : CALL ERREUR(21) 141 : GOTO 9999 142 : ENDIF 143 : C 144 : C**** La list des inconnues primales (variables primitives) 145 : C 146 : TYPE='LISTMOTS' 146 : CALL LIROBJ(TYPE,ILIINP,1,IRET) 147 : IF(IERR .NE. 0) GOTO 9999 148 : MLMOTS = ILIINP 149 : SEGACT MLMOTS 150 : NC = MLMOTS.MOTS(/2) 151 : SEGDES MLMOTS 152 : IF(NC .NE. (IDIM+2+NESP))THEN 153 : MOTERR(1:40) = 'LISTINCO = ???' 154 : WRITE(IOIMP,*) MOTERR 155 : C 156 : C******* Message d'erreur standard 157 : C 21 2 158 : C Données incompatibles 159 : C 159 : CALL ERREUR(21) 160 : GOTO 9999 161 : ENDIF 162 : C 163 : C**** Lecture du diametre minimum 164 : C 164 : CALL LIROBJ('CHPOINT',IDIAM,1,IRET) 165 : IF (IERR.NE.0) GOTO 9999 166 : C 167 : C**** Control du CHPOINT: QUEPOI 168 : C 169 : INDIC = 1 170 : NBCOMP = 1 171 : MOT = 'SCAL' 171 : CALL QUEPOI(IDIAM, MELEMC, INDIC, NBCOMP, MOT) 172 : C 173 : C**** La densité au centre 174 : C 175 : TYPE = 'CHPOINT ' 175 : CALL LIROBJ(TYPE,IRN,1,IRET) 176 : IF(IERR .NE. 0) GOTO 9999 177 : C 178 : C**** Control du CHPOINT: QUEPOI 179 : C 180 : C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN) 181 : C N.B. Le CHPOINT peut changer de structure pour 182 : C avoir SPG = ICEN!!!! 183 : C INDIC = 0 -> on ne fait que verifier le support geometrique 184 : C (ICEN). Si le SPG sont differents INDIC = -4 en sortie 185 : C 186 : C NBCOMP > 0 -> numero des composantes 187 : C 188 : C MOT = ' ' obligatoire s'on connais pas les noms des composantes 189 : C 190 : INDIC = 1 191 : NBCOMP = 1 192 : MOT = 'SCAL' 192 : CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT) 193 : IF(IERR .NE. 0) GOTO 9999 194 : C 195 : C******* La vitesse au centre 196 : C 197 : TYPE = 'CHPOINT ' 197 : CALL LIROBJ(TYPE,IVN,1,IRET) 198 : IF(IERR .NE. 0) GOTO 9999 199 : JGN = 4 200 : JGM = IDIM 201 : SEGINI MLMVIT 202 : MLMVIT.MOTS(1) = 'UX ' 203 : MLMVIT.MOTS(2) = 'UY ' 204 : IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ ' 204 : CALL QUEPO1(IVN, MELEMC, MLMVIT) 205 : SEGSUP MLMVIT 206 : IF(IERR .NE. 0) GOTO 9999 207 : C 208 : C******* La pression au centre 209 : C 210 : TYPE = 'CHPOINT ' 210 : CALL LIROBJ(TYPE,IPN,1,IRET) 211 : IF(IERR .NE. 0) GOTO 9999 212 : INDIC = 1 213 : NBCOMP = 1 214 : MOT = 'SCAL' 214 : CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT) 215 : IF(IERR .NE. 0) GOTO 9999 216 : C 217 : C******* Gamma au centre 218 : C 219 : TYPE = 'CHPOINT ' 219 : CALL LIROBJ(TYPE,IGAMN,1,IRET) 220 : IF(IERR .NE. 0) GOTO 9999 221 : INDIC = 1 222 : NBCOMP = 1 223 : MOT = 'SCAL' 223 : CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT) 224 : IF(IERR .NE. 0) GOTO 9999 225 : C---------------------------------------------------- 226 : C******* Vitess de "cut-off" au centre 227 : C---------------------------------------------------- 228 : TYPE = 'CHPOINT ' 228 : CALL LIROBJ(TYPE,IUPRI,1,IRET) 229 : IF(IERR .NE. 0) GOTO 9999 230 : INDIC = 1 231 : NBCOMP = 1 232 : MOT = 'SCAL' 232 : CALL QUEPOI(IUPRI, MELEMC, INDIC, NBCOMP, MOT) 233 : IF(IERR .NE. 0) GOTO 9999 234 : C---------------------------------------------------- 235 : C******* Vitess de "cut-off" au centre 236 : C---------------------------------------------------- 237 : TYPE = 'CHPOINT ' 237 : CALL LIROBJ(TYPE,IUPRI2,1,IRET) 238 : IF(IERR .NE. 0) GOTO 9999 239 : INDIC = 1 240 : NBCOMP = 1 241 : MOT = 'SCAL' 241 : CALL QUEPOI(IUPRI2, MELEMC, INDIC, NBCOMP, MOT) 242 : IF(IERR .NE. 0) GOTO 9999 243 : 244 : C 245 : C******* Calcul du jacobien 246 : C 247 : IF(IDIM .EQ. 2)THEN 247 : CALL KON181(MELEMC,IDIAM, ILIINC,ILIINP,IRN,IVN,IPN,IGAMN, 248 : & IUPRI,IUPRI2,IJACO) 249 : IF(IERR .NE. 0) GOTO 9999 250 : ELSE 250 : CALL ERREUR(251) 251 : GOTO 9999 252 : ENDIF 253 : C 254 : C**** Ecriture des resultats 255 : C 256 : TYPE='MATRIK ' 256 : CALL ECROBJ(TYPE,IJACO) 257 : 9999 CONTINUE 258 : RETURN 259 : END 260 : 261 : 262 :
© Cast3M 2003 - All rights reserved.
Disclaimer