pre31
C PRE31 SOURCE CB215821 19/07/31 21:16:23 10277 C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : PRE31 C C DESCRIPTION : Voir PRE3 C C Cas gaz "thermally perfect" mono/multi-especes C C 1er ordre en espace, 1er ordre en temps C C Creations des object MCHAML IROF, IVITF, IPF, IYF C C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI) C C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF C C************************************************************************ C C C APPELES (Outils) : LIRTAB, ACMO, LEKTAB, QUETYP, ERREUR, LIROBJ, C QUEPO1, ECROBJ C C APPELES (Calcul) : PRE311 (2D), PRE312 (3D) C C C************************************************************************ C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : Créée le 18.12.98. C C 06.02.00 transport des scalaires passifs C C************************************************************************ C 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 C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV, IFICLE, IPREFI C C**** Les variables C IMPLICIT INTEGER(I-N) INTEGER ICOND, IRETOU, IERR0 & ,IDOMA, ICEN, IFACE, IFACEL, INORM, IROC, IVITC, IPC & ,IYC, ISCAC, IROF, IVITF, IPF, IYF, IPGAS, NESP, ISCAF & ,NSCA, INEFMD & ,MMODEL REAL*8 VALER, VAL1, VAL2 CHARACTER*(8) MTYPR, TYPE CHARACTER*(40) MESERR LOGICAL LOGAN,LOGNEG, LOGBOR C C**** Les Includes C -INC PPARAM -INC CCOPTIO INTEGER JGM, JGN -INC SMLMOTS POINTEUR MLMCOM.MLMOTS, MLMESP.MLMOTS, MLMSCA.MLMOTS POINTEUR MLMVIT.MLMOTS C C**** Initialisation des parametres d'erreur C LOGAN = .FALSE. LOGNEG = .FALSE. LOGBOR = .FALSE. MESERR = ' ' MOTERR(1:40) = MESERR(1:40) VALER = 0.0D0 VAL1 = 0.0D0 VAL2 = 0.0D0 C C**** Lecture de l'objet MODELE C ICOND = 1 IF(IERR.NE.0)GOTO 9999 IF(IERR.NE.0)GOTO 9999 C C**** Lecture du MELEME SPG des points CENTRE. C C C CALL LEKTAB(IDOMA,'CENTRE',IP) C C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas, C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL' C -> la correspondance global des noeuds saut! C C On peut utilizer ACCTAB ou ACMO C MTYPR = 'MAILLAGE' IF(IERR.NE.0)GOTO 9999 C C**** Lecture du MELEME 'FACE' C MTYPR = 'MAILLAGE' IF(IERR.NE.0)GOTO 9999 C C**** Lecture du MELEME 'FACEL' C MTYPR = 'MAILLAGE' IF(IERR.NE.0)GOTO 9999 C C**** Lecture du CHPOINT contenant les normales (tangentes) 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 MTYPR = ' ' IF (MTYPR .NE. 'CHPOINT ') THEN IF(IERR .NE. 0) GOTO 9999 ENDIF JGN = 4 JGM = 9 SEGINI MLMVIT SEGSUP MLMVIT IF(IERR.NE.0)GOTO 9999 C ENDIF C C**** Lecture de la table des proprietes du gaz C ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'TABLE ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'TABLE ' GOTO 9999 ELSE ICOND = 1 IF(IERR .NE. 0)GOTO 9999 ENDIF C C**** Les especes qui sont dans les Equations d'Euler C MTYPR = ' ' IF(MTYPR .EQ. ' ')THEN NESP = 0 IYC = 0 ELSEIF(MTYPR .NE. 'LISTMOTS')THEN C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'TAB2 . ESPEULE = ??? ' WRITE(IOIMP,*) MOTERR C C******* Message d'erreur standard C 21 2 C Données incompatibles C GOTO 9999 ELSE SEGACT MLMESP SEGDES MLMESP ENDIF C C**** Les scalaires passifs C MTYPR = ' ' IF(MTYPR .EQ. ' ')THEN NSCA = 0 ISCAC = 0 ELSEIF(MTYPR .NE. 'LISTMOTS')THEN C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'TAB2 . SCALPASS = ??? ' WRITE(IOIMP,*) MOTERR C C******* Message d'erreur standard C 21 2 C Données incompatibles C GOTO 9999 ELSE SEGACT MLMSCA SEGDES MLMSCA ENDIF C C**** Lecture du CHPOINT ROC C ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'CHPOINT ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'CHPOINT ' GOTO 9999 ELSE ICOND = 1 IF (IERR.NE.0) GOTO 9999 ENDIF C C**** Control du CHPOINT: QUEPO1 C JGN=4 JGM=1 SEGINI MLMCOM SEGSUP MLMCOM IF(IERR .NE. 0)THEN IERR0 = IERR C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'CHPO1 = ??? ' $ WRITE(IOIMP,*) MOTERR GOTO 9999 ENDIF C C**** Lecture du CHPOINT VITC C ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'CHPOINT ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'CHPOINT ' GOTO 9999 ELSE ICOND = 1 IF (IERR.NE.0) GOTO 9999 ENDIF C C**** Control du CHPOINT C JGN=4 JGM=IDIM SEGINI MLMCOM SEGSUP MLMCOM IF(IERR .NE. 0)THEN IERR0 = IERR C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'CHPO2 = ??? ' $ WRITE(IOIMP,*) MOTERR GOTO 9999 ENDIF C C**** Lecture du CHPOINT PC C ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'CHPOINT ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'CHPOINT ' GOTO 9999 ELSE ICOND = 1 IF (IERR.NE.0) GOTO 9999 ENDIF C C**** Control du CHPOINT C JGN=4 JGM=1 SEGINI MLMCOM SEGSUP MLMCOM IF(IERR .NE. 0)THEN IERR0 = IERR C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'CHPO3 = ??? ' $ WRITE(IOIMP,*) MOTERR GOTO 9999 ENDIF C C**** Lecture du CHPOINT YC C IF(NESP .GT. 0)THEN ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'CHPOINT ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'CHPOINT ' GOTO 9999 ELSE ICOND = 1 IF (IERR.NE.0) GOTO 9999 ENDIF C C**** Control du CHPOINT (on ne controlle que le maillage) C IF(IERR .NE. 0)THEN IERR0 = IERR C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'CHPO4 = ??? ' WRITE(IOIMP,*) MOTERR GOTO 9999 ENDIF ENDIF C C**** Lecture du CHPOINT ISCAC C IF(NSCA .GT. 0)THEN ICOND = 1 IF(IERR .NE. 0)GOTO 9999 IF(MTYPR .NE. 'CHPOINT ')THEN C C******* Message d'erreur standard C 37 2 C On ne trouve pas d'objet de type %m1:8 C MOTERR(1:8) = 'CHPOINT ' GOTO 9999 ELSE ICOND = 1 IF (IERR.NE.0) GOTO 9999 ENDIF C C**** Control du CHPOINT (on ne controlle que le maillage) C IF(IERR .NE. 0)THEN IERR0 = IERR C C******* Message d'erreur standard C -301 0 %m1:40 C MOTERR(1:40) = 'CHPO5 = ??? ' WRITE(IOIMP,*) MOTERR GOTO 9999 ENDIF ENDIF C C**** Centre -> Face C IF(IDIM .EQ. 2)THEN C C******* Deux Dimensions, Mono/Multi Especes, 1er ordre en espace, 1er ordre en C temps C & IROF,IVITF,IPF,IYF,ISCAF, & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2) ELSE C C******* Trois Dimensions, Mono/Multi Especes, 1er ordre en espace, C 1er ordre en temps C C & IROF,IVITF,IPF,IYF,ISCAF, & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2) ENDIF C C**** Messages d'erreur C IF(LOGAN)THEN C C******* Anomalie detectée C C C******* Message d'erreur standard C -301 0 C %m1:40 C MOTERR(1:40) = MESERR(1:40) WRITE(IOIMP,*) MOTERR C C******* Message d'erreur standard C 5 3 C Erreur anormale.contactez votre support C GOTO 9999 C ELSEIF(LOGNEG)THEN C C******* Message d'erreur standard C 41 2 C %m1:8 = %r1 inférieur à %r2 C MOTERR(1:8) = MESERR(1:8) REAERR(1) = REAL(VALER) REAERR(2) = 0.0 GOTO 9999 ELSEIF(LOGBOR)THEN C C******* Message d'erreur standard C 42 2 C %m1:8 = %r1 non compris entre %r2 et %r3 C MOTERR(1:8) = MESERR(1:8) REAERR(1) = REAL(VALER) REAERR(2) = REAL(VAL1) REAERR(3) = REAL(VAL2) GOTO 9999 ELSE C C******* Ecriture de ROF, VITF, PF, YF, GAMMAF C MTYPR = 'MCHAML ' IF(ISCAF .NE. 0) THEN ENDIF IF(IYF .NE. 0) THEN ENDIF ENDIF C 9999 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales