kon14
C KON14 SOURCE OF166741 24/12/13 21:16:13 12097
SUBROUTINE KON14
C************************************************************************
C
C PROJET : CASTEM 2000
C
C NOM : KON14
C
C DESCRIPTION : Subroutine appellée par KON1
C
C Modelisation 2D/3D des equations d'Euler
C Calcul du jacobien par rapport aux
C variables primitives
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) : KONJP1 (calcul du jacobien, gaz "calorically
C perfect", monoespece, 2D, VLH)
C KONJP2 (calcul du jacobien, gaz "calorically
C perfect", monoespece, 2D, AUSMplus)
C KONJP3 (calcul du jacobien, gaz "calorically
C perfect", monoespece, 3D, VLH)
C KONJP4 (calcul du jacobien, gaz "calorically
C perfect", monoespece, 3D, AUSMplus)
C KONJP5 (calcul du jacobien, gaz "calorically
C perfect", monoespece, 2D
C AUSMPLM)
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
C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' MOD1 LMOT1 LMOT2
C (MAILIM) MOT3 CHPO1 CHPO2 CHPO3 CHPO4 ;
C
C or (Bas MAch)
C
C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' MOD1 LMOT1 LMOT2
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 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 LMOT2 : objet de type LISTMOTS
C Noms de composantes des variable primales de RMAT1.
C Il contient dans l'ordre suivant: le noms de la densité,
C de la vitesse, de la pression.
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 'AUSMPLUUS' : 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 =('DOMA' MOD1 'CENTRE'), une seule composante,
C 'SCAL').
C
C CHPO2 : CHPOINT contenant la vitesse
C (SPG =('DOMA' MOD1 'CENTRE'), deux/trois composantes
C 'UX', 'UY', 'UZ')
C
C CHPO3 : CHPOINT contenant la pression du gaz
C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
C 'SCAL').
C
C CHPO4 : CHPOINT contenant le "gamma" du gaz
C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
C 'SCAL').
C
C CHPO5 : CHPOINT contenant la premiere vitesse de cut-off
C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
C 'SCAL').
C
C CHP06 : CHPOINT contenant la deuxieme vitesse de cut-off
C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
C 'SCAL').
C
C SORTIES
C
C RMAT1 : objet de type MATRIK
C (SPG =('DOMA' MOD1 'CENTRE'))
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
& ,IDOMA, MELEMC, MELEMF, MELEFE, MELTFA, ICHPSU, ICHPDI
& ,ICHPVO, INORM, INEFMD, ICOND
& ,IJACO, ILIINC, ILIINP, NC, IFLIM, MELLIM, ICACCA
& ,IIMPL, IRN, IVN, IPN, IGAMN, IUINF, IUPRI
C
PARAMETER (NBJAC=3)
CHARACTER*8 TYPE, LJACO(NBJAC)
CHARACTER*4 MOT
CHARACTER*(40) MESERR
DATA LJACO/'VLH ','AUSMPLUS','AUSMPLM '/
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 duales (variables conservatives)
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**** La list des inconnues primales (variables primitives)
C
TYPE='LISTMOTS'
IF(IERR .NE. 0) GOTO 9999
MLMOTS = ILIINP
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)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+LM
C
IF(IDIM .EQ. 2)THEN
$ ICHPVO,ICHPSU, IUINF, IUPRI, MELEMC, MELEFE,
$ MELLIM, IJACO)
IF(IERR .NE. 0) GOTO 9999
ELSE
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