C CLIM1     SOURCE    KK2000    14/04/10    21:15:05     8032
      SUBROUTINE CLIM1
C************************************************************************
C
C PROJET            :  CASTEM 2000
C
C NOM               :  CLIM1
C
C DESCRIPTION       :  Subroutine appellée par KON1
C
C                      Modelisation 2D/3D des equations d'Euler
C                      Conditions aux limites
C
C                      Calcul du flux/residu
C
C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
C
C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/LTMF
C
C************************************************************************
C
C*** SYNTAXE
C
C  Discrétisation en VF "cell-centered" des équations d'Euler pour
C  un gaz parfait polytropique
C  Inconnues: densités, quantité de mouvement, énergie totale par
C  unité de volumes (variables conservatives)
C  Conditions au limit
C
C  RCHPLI RCHPRE = 'KONV' 'VF' 'PERFMONO' 'CLIM'
C            'RESI' $MOD1 $MOD2 LMOTC LMOTP CHPRN CHPVN CHPPN CHPGN
C             MOT1 CHPLI ;
C
C $MOD1   : l'objet modele du domaine interieur
C           ($TAB1 est sa table domaine)
C
C $MOD2   : l'objet modele du domaine du bord
C           ($TAB2 est sa table domaine)
C
C LMOTC   : LISTMOTS, noms des variables conservatives
C
C LMOTP   : LISTMOTS, noms des variables primitives
C
C CHPRN   : densité  (SPG = 'CENTRE', une seule
C           composante, 'SCAL')
C
C CHPVN   : vitesse (SPG = $TAB1 . 'CENTRE',
C           composantes: 'UX', 'UY', ('UZ'))
C
C CHPPN   : pression  (SPG = $TAB1 . 'CENTRE', une seule
C           composante, 'SCAL')
C
C CHPGN   : gamma  (SPG = $TAB1 . 'CENTRE', une seule
C           composante, 'SCAL')
C
C CHPRNI  : densité  (SPG = $TAB2 . 'CENTRE', une seule
C           composante, 'SCAL')
C
C MOT1    : MOT, type de condition limite:
C           'INRI' : inlet, invariants de Riemann
C
C CHPLI   : condition limit imposé (SPG = $TAB2 . 'CENTRE')
C           Les composantes dependent de MOT1
C           'INRI' : on donne densité 'RN', vitesse 'UX' 'UY' ('UX')
C                    pression 'PN'
C           'OUTRI': on donne densité 'RN', vitesse 'UX' 'UY' ('UX')
C                    pression 'PN'
C           'INSS' : on donne densité 'RN', vitesse 'UX' 'UY' ('UX')
C                    pression 'PN'
C           'OUTSS': chpoint vide
C           'OUTP' : on donne la pression 'PN', on recupere la
C                    vitesse et la densité à l'interieur
C           'INSU' : on donne l'enthalpie totale 'HT', l'entropie 'S',
C                    on impose que la vitesse tangentielle est nulle,
C                    on recupere la pression à l'interieur
C           'INJE' : on donne le flux de masse et RT (temperature fois
C                    la constante de gaz); on impose que la vitesse
C                    tangentielle est nulle, on calcule la pression.
C           'INJELM' : hypothese BM: on donne le flux de masse et RT
C                     (temperature fois la constante de gaz); on impose
C                     que la vitesse tangentielle est nulle, on recupere
C                     la pression de l'interieur.
C
C SORTIES
C
C RCHPLI   : on donne densité, vitesse, pression sur le bord
C           (SPG = $TAB2 . 'CENTRE', composantes en LMOTP)
C
C RCHPRE   : residu (SPG = $TAB1 . 'CENTRE', composantes en LMOTC)
C
C************************************************************************
C
C HISTORIQUE (Anomalies et modifications éventuelles)
C
C HISTORIQUE :
C
C************************************************************************
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)


-INC PPARAM
-INC CCOPTIO
C
      INTEGER NBOPT, ICELL, IJAC
C
      PARAMETER (NBOPT=3)
      CHARACTER*8 LOPT(NBOPT)
C
      DATA LOPT/'RESI    ','JACOCONS','JACOPRIM'/
C
      CALL LIRMOT(LOPT,NBOPT,ICELL,1)
      IF(IERR .NE. 0) GOTO 9999
      IF(ICELL .EQ. 1)THEN
C        'RESI    '
         IJAC=0
         CALL CLIM11(IJAC)
         IF(IERR .NE. 0) GOTO 9999
      ELSEIF(ICELL .EQ. 2)THEN
C        'JACOCONS'
         IJAC=1
         CALL CLIM11(IJAC)
         IF(IERR .NE. 0) GOTO 9999
      ELSEIF(ICELL .EQ. 3)THEN
C        'JACOPRIM'
         IJAC=2
         CALL CLIM11(IJAC)
         IF(IERR .NE. 0) GOTO 9999
      ENDIF
 9999 CONTINUE
      RETURN
      END









