kon12
C KON12 SOURCE CB215821 20/11/25 13:31:49 10792 SUBROUTINE KON12 C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : KON12 C C DESCRIPTION : Subroutine appellée par KON1 C C Modelisation 2D/3D des equations d'Euler C C Calcul du jacobien C C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI) C C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF C C************************************************************************ C C APPELES (Calcul) : KONJA1 (calcul du jacobien, gaz "calorically C perfect", monoespece, 2D, VLH) C KONJA3 (calcul du jacobien, gaz "calorically C perfect", monoespece, 3D, VLH) C C KONJA2 (calcul du jacobien, gaz "calorically C perfect", monoespece, 2D, AUSMplus) C KONJA4 (calcul du jacobien, gaz "calorically C perfect", monoespece, 3D, AUSMplus) C C KONJA6 (calcul du jacobien, gaz "calorically C perfect", monoespece, 2D C AUSMPLM) C KONJA7 (calcul du jacobien, gaz "calorically C perfect", monoespece, 3D C AUSMPLM) C C KONJC1 (calcul du jacobien, gaz "calorically C perfect", monoespece, 2D C CENTERED) C C KONJR1 (calcul du jacobien, gaz "calorically C perfect", monoespece, 2D C RUSANOLM) C C************************************************************************ C C*** SYNTAXE C C Discrétisation en VF "cell-centered" des équations d'Euler pour C un gaz parfait mono-constituent polytropique C Inconnues: densité, quantité de mouvement, énergie totale par C unité de volumes (variables conservatives) C C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONV' MOD1 LMOT1 C (MAILIM) MOT3 CHPO1 CHPO2 CHPO3 CHPO4 ; C C or (Bas MAch) C C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONV' MOD1 LMOT1 C (MAILIM) MOT3 CHPO1 CHPO2 CHPO3 CHPO4 C CHPO5 CHPO6 ; C C ENTREES C C LMOT1 : objet de type LISTMOTS C Noms de composantes des variable primales et duales de RMAT1. C Il contient dans l'ordre suivant: le noms de la densité, C du momentum, de l'énergie totale par unité de volume C C MOD1 : objet modele de type Navier_Stokes C C MOT3 : objet de type MOT C 'VLH' : jacobien du residu pour la methode VLH C 'AUSMPLUS' : jacobien du residu pour la methode AUSM+ C 'AUSMPLM' : jacobien du residu pour la methode AUSM+ low C Mach C C MAILIM : MAIILAGE de POI1 ou on ne veut pas calculer le FLUX convective C C CHPO1 : CHPOINT contenant la masse volumique C (SPG = TAB1 . 'CENTRE', une seule composante, C 'SCAL'). C C CHPO2 : CHPOINT contenant la vitesse C (SPG = TAB1 . 'CENTRE', deux/trois composantes C 'UX', 'UY', 'UZ') C C CHPO3 : CHPOINT contenant la pression du gaz C (SPG = TAB1 . 'CENTRE', une seule composante, C 'SCAL'). C C CHPO4 : CHPOINT contenant le "gamma" du gaz C (SPG = TAB1 . 'CENTRE', une seule composante, C 'SCAL'). C C CHPO5 : CHPOINT contenant la premiere vitesse de cut-off C (SPG = TAB1 . 'CENTRE', une seule composante, C 'SCAL'). C C CHP06 : CHPOINT contenant la deuxieme vitesse de cut-off C (SPG = TAB1 . 'CENTRE', une seule composante, C 'SCAL'). C C SORTIES C C RMAT1 : objet de type MATRIK C (SPG = TAB1 . 'CENTRE') C (inconnues primales = inconnues duales = LMOT1) C C************************************************************************ C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : C C************************************************************************ C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLMOTS -INC SMCHPOI -INC SMELEME POINTEUR MLMVIT.MLMOTS C C**** Variables de COOPTIO C C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES C & ,IECHO, IIMPI, IOSPI C & ,IDIM, IFICLE, IPREFI C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV, IREFOR, ISAFOR C & ,IDOMA, MELEMC, MELEMF, MELEFE, MELTFA, ICHPSU, ICHPDI & ,ICHPVO, INORM & ,IJACO, ILIINC, NC, IFLIM, MELLIM, ICACCA & ,IIMPL, IRN, IVN, IPN, IGAMN, IUINF, IUPRI, INEFMD, ICOND C PARAMETER (NBJAC=5) CHARACTER*8 TYPE, LJACO(NBJAC) CHARACTER*4 MOT CHARACTER*(40) MESERR DATA LJACO/'VLH ','AUSMPLUS','AUSMPLM ','CENTERED','RUSANOLM'/ C C********************************** C**** Lecture de l'objet MODELE *** C********************************** C ICOND = 1 IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN WRITE(6,*)' On attend un objet MMODEL' RETURN ENDIF IF(IERR.NE.0)GOTO 9999 IF(IERR.NE.0)GOTO 9999 C C**** Centre, FACE, FACEL, ELTFA C IF(IERR .NE. 0) GOTO 9999 C IF(IERR .NE. 0) GOTO 9999 C IF(IERR .NE. 0) GOTO 9999 C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les surfaces des faces. C IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les diametres minimums. C IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les volumes C IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Les normales aux faces C IF(IDIM .EQ. 2)THEN C Que les normales IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM = 2 SEGINI MLMVIT SEGSUP MLMVIT IF(IERR .NE. 0) GOTO 9999 ELSE C Les normales et les tangentes TYPE = ' ' IF (TYPE .NE. 'CHPOINT ') THEN IF(IERR .NE. 0) GOTO 9999 ENDIF JGN = 4 JGM = 9 SEGINI MLMVIT SEGSUP MLMVIT ENDIF C C******************************** C**** Fin table domaine ********* C******************************** C NESP=0 C C**** La list des inconnues C TYPE='LISTMOTS' IF(IERR .NE. 0) GOTO 9999 MLMOTS = ILIINC SEGACT MLMOTS SEGDES MLMOTS IF(NC .NE. (IDIM+2+NESP))THEN MOTERR(1:40) = 'LISTINCO = ???' WRITE(IOIMP,*) MOTERR C C******* Message d'erreur standard C 21 2 C Données incompatibles C GOTO 9999 ENDIF C C**** Boundary condition C IRET=0 TYPE='MAILLAGE' IF(IERR.NE.0)GOTO 9999 IF(IRET .EQ. 0)THEN MELLIM = 0 ELSE MELEME=IFLIM SEGACT MELEME ICACCA=MELEME.NUM(/2) IF(ICACCA .EQ. 0)THEN MELLIM = 0 ELSE MELLIM = IFLIM ENDIF SEGDES MELEME ENDIF C C**** Type of Jacobian C IF(IERR .NE. 0)GOTO 9999 C C******* La densité au centre C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 C C**** Control du CHPOINT: QUEPOI C C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN) C N.B. Le CHPOINT peut changer de structure pour C avoir SPG = ICEN!!!! C INDIC = 0 -> on ne fait que verifier le support geometrique C (ICEN). Si le SPG sont differents INDIC = -4 en sortie C C NBCOMP > 0 -> numero des composantes C C MOT = ' ' obligatoire s'on connais pas les noms des composantes C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C******* La vitesse au centre C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM = IDIM SEGINI MLMVIT SEGSUP MLMVIT IF(IERR .NE. 0) GOTO 9999 C C******* La pression au centre C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C******* Gamma au centre C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Bas Mach C IF((IIMPL .EQ. 3) .OR. (IIMPL .EQ. 5))THEN TYPE = 'CHPOINT ' C C******* Cut off 1 C IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C******* Cut off 2 C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C ELSE IUINF=0 IUPRI=0 ENDIF C C******* Calcul du jacobien C IF(IIMPL .EQ. 1)THEN C C********** VLH C IF(IDIM .EQ. 2)THEN $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO) IF(IERR .NE. 0) GOTO 9999 ELSE $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO) IF(IERR .NE. 0) GOTO 9999 ENDIF ELSEIF(IIMPL .EQ. 2)THEN C C********** AUSM+ C IF(IDIM .EQ. 2)THEN $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO) IF(IERR .NE. 0) GOTO 9999 ELSE $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO) IF(IERR .NE. 0) GOTO 9999 ENDIF ELSEIF(IIMPL .EQ. 3)THEN C C********** AUSM+ low Mach C IF(IDIM .EQ. 2)THEN C $ ICHPVO,ICHPSU, IUINF, IUPRI, MELEMC, MELEFE, $ MELLIM,IJACO) ELSE $ ICHPVO,ICHPSU, IUINF, IUPRI, MELEMC, MELEFE, $ MELLIM,IJACO) ENDIF ELSEIF(IIMPL .EQ. 4)THEN C C********** Centered C IF(IDIM .EQ. 2)THEN C $ ICHPVO,ICHPSU, MELEMC, MELEFE, $ MELLIM,IJACO) ELSE C Tentative d'utilisation d'une option non implémentée GOTO 9999 ENDIF ELSEIF(IIMPL .EQ. 5)THEN C C********** RUSANOLM C IF(IDIM .EQ. 2)THEN C $ ICHPVO,ICHPSU, IUINF, IUPRI, MELEMC, MELEFE, $ MELLIM,IJACO) ELSE C Tentative d'utilisation d'une option non implémentée GOTO 9999 ENDIF ELSE C Tentative d'utilisation d'une option non implémentée GOTO 9999 ENDIF C C**** Ecriture des resultats C TYPE='MATRIK ' 9999 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales