kfm1
C KFM1 SOURCE CB215821 20/11/25 13:31:11 10792 SUBROUTINE KFM1 C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : KFM1 C C DESCRIPTION : Subroutine appellée par KONV1 C C Modelisation 2D/3D des equations d'Euler C C Free matrix method: calcul d'un stationaire C avec un jacobi par point, un jacobi par ligne, C un jacobi avec 2 sweeps 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) : 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 UN) C C A(UN) '*' DUN_L = RES(UN) + B(UN) - B(UN_L) C C ou C C RES(UN) est calculé avec ('KONV' 'VF' 'PERFMONO') C UN_0 = UN C UN_L = UN + DUN_L C C Ici on calcule DU C C DUN = 'KONV' 'VF' 'PMON1FMM' 'JACOBI' LMOT1 C MOD1 MCHPO0 MCHPO1 MCHPO2 MCHPO3 MCHPO4 FLOT0 FLOT1 C ENT1 ('CLIM' LMOT2 MCHPO5 MCHPO7) MCHPO6 ; C C C LMOT1 : Il contient dans l'ordre suivant: le noms de la densité, C de la qdm, de l'énergie totale par unité de volume C C MOD1 : objet modele de type EULER C C MCHPO0 : CHPOINT contenant le residu explicite; composantes = C LMOT1, SPG = (DOMA MOD1 'CENTRE'). C C MCHPO1 : CHPOINT contenant la masse volumique (en kg/m^3; une C composante, 'SCAL', SPG =(DOMA MOD1 'CENTRE')). C C MCHPO2 : CHPOINT contenant les débits (en kg/s/m^2; deux C composantes en 2D, 'UX ','UY ', trois composantes C en 3D, 'UX ','UY ', 'UZ ', SPG =(DOMA MOD1 'CENTRE')). C C MCHPO3 : CHPOINT contenant l'énergie totale par unité de volume C (en J/m^3; une composante, 'SCAL', SPG =(DOMA MOD1 'CENTRE')). C C MCHPO4 : CHPOINT contenant le "gamma" du gaz (une composante, C 'SCAL', SPG =(DOMA MOD1 'CENTRE')). C C LMOT2 : Il contient dans l'ordre suivant: le noms de la densité, C de la vitesse, de la pression. C C FLOT0 : pas de temps physique C C FLOT1 : facteur de securité (double de la CFL) pour le pas de temps C dual C C ENT1 : iterations dans le jacobi C C MCHPO5 : CHPOINT contenant les conditions aux limites C (composantes en LMOT2). C C MCHPO6 : CHPOINT contenant le coeff pour le calcul du rayon C spectral visc. (une composante, C 'SCAL', SPG =(DOMA MOD1 'CENTRE')). C C MCHPO7 : CHPOINT contenant les types de conditions aux limites C C************************************************************************ C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : crée le 30/04/02 C Janvier 2003: implementation de condition aux limites C C HISTORIQUE : rajouts par T. KLOCZKO entre 2003 et 2006 C C Deux types de méthodes de relaxation disponibles C C - Point Jacobi ou PJ (kfm11.eso (2D) et kfm13.eso (3D)) C - Symmetric Gauss-Seidel ou SGS (kfm12.eso (2D) et kfm14.eso (3D)) C C************************************************************************ C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLMOTS -INC SMCHPOI 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 C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV, IFICLE, IPREFI, IREFOR, ISAFOR CC INTEGER ICOEF, IDOMA, IRET, MELEF, MELEC, MELEFL, ICHPSU, INDIC & , NBCOMP, ICHPDI, IRN, IGN, IRETN, IGAMN, ICHPVO, ILIINC & , IDU, JGN, JGM, INORM, INEFMD, ICOND, MMODEL & , ICHLIM, MELLIM, ILIINP, NSOUPO, NJAC, IRES, IPROBL & , IVCO, MELTFA, ICOEV C REAL*8 DCFL, DTPS C CHARACTER*4 MOT CHARACTER*8 TYPE, LJACO(4) CHARACTER*(40) MESERR C DATA LJACO/'PJACO ','LJACOF ','LJACOB ','LJACOFB '/ C IF(IERR .NE. 0)GOTO 9999 C C********************************** C**** Lecture de l'objet MODELE *** C********************************** C ICOND = 1 IF((IRET.EQ.0).AND.(TYPE.NE.'MMODEL'))THEN MOTERR(1:40)='MMODEL ' GOTO 9999 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 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 C 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**** Lecture du CHPOINT contenant les volumes C IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C******************************** C**** Fin table domaine ********* C******************************** C C**** La list des inconnues C TYPE='LISTMOTS' IF(IERR .NE. 0) GOTO 9999 C C**** On va lire les pointeurs des CHPOINTs C Lecture du CHPOINT residu C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C IF(IERR .NE. 0) GOTO 9999 C C**** On va lire les pointeurs des CHPOINTs C Lecture du CHPOINT centre densité C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT QDM C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Control du CHPOINT C NBCOMP = IDIM JGN = 4 JGM = IDIM SEGINI MLMOTS IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMOTS C C**** Lecture du CHPOINT centre energie totale C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT centre gamma C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT centre cutoff speed C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Lecture de DTPS C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture de le double de la CFL pour le temps dual C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture de nombre d'iterations C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture de conditions aux limites C IRET=0 IF(IERR .NE. 0) GOTO 9999 IF(IRET .NE. 0)THEN IF(MOT .EQ. 'CLIM')THEN C TYPE='LISTMOTS' IF(IERR .NE. 0) GOTO 9999 MLMOT1=ILIINP C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C MCHPOI = ICHLIM SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) IF(NSOUPO .EQ. 0) THEN ICHLIM=0 MELLIM=0 ELSEIF(NSOUPO .GT. 1)THEN MOTERR(1:8) = 'CHAMPOIN' C C**************** Message d'erreur standard C 132 2 C On veut un objet %m1:8 élémentaire C GOTO 9999 ELSE MSOUPO=MCHPOI.IPCHP(1) SEGACT MSOUPO MELLIM=MSOUPO.IGEOC SEGDES MSOUPO SEGDES MCHPOI IF(IERR.NE.0) GOTO 9999 ENDIF C ELSE CALL REFUS ENDIF ELSE ICHLIM=0 MELLIM=0 ENDIF C C**** Le coeff. pour le calcul du rayon spectral visc. C C TYPE='CHPOINT' IF(IERR.NE.0) GOTO 9999 C C**** Controle du CHPOINT C MOT = 'SCAL' IF(IERR .NE. 0) GOTO 9999 C C**** Calcul de DUN C TYPE='CHPOINT' C C*** Choix de la procédure de relaxation (PJ ou SGS) C IF(ICOEF .EQ. 1)THEN IF(IDIM .EQ. 2)THEN C C*** Procédure de relaxation PJ C & ICHPSU,ICHPDI,ICHPVO,INORM, & MELEC,MELEF,MELEFL,DTPS,DCFL, & MELLIM,ICHLIM,NJAC,ICOEV, & IDU,IPROBL) IF(IERR .NE. 0)GOTO 9999 ELSE & ICHPSU,ICHPDI,ICHPVO,INORM, & MELEC,MELEF,MELEFL,DTPS,DCFL, & MELLIM,ICHLIM,NJAC,ICOEV, & IDU,IPROBL) IF(IERR .NE. 0)GOTO 9999 c 251 2 c Tentative d'utilisation d'une option non implémentée c CALL ERREUR(251) c GOTO 9999 ENDIF ELSE IF(IDIM .EQ. 2)THEN C C*** Procédure de relaxation SGS C & ICHPSU,ICHPDI,ICHPVO,INORM, & MELEC,MELEF,MELEFL,MELTFA,DTPS,DCFL, & MELLIM,ICHLIM,NJAC,ICOEF,ICOEV, & IDU,IPROBL) IF(IERR .NE. 0)GOTO 9999 ELSE & ICHPSU,ICHPDI,ICHPVO,INORM, & MELEC,MELEF,MELEFL,MELTFA,DTPS,DCFL, & MELLIM,ICHLIM,NJAC,ICOEF,ICOEV, & IDU,IPROBL) C 251 2 C Tentative d'utilisation d'une option non implémentée C CALL ERREUR(251) C GOTO 9999 ENDIF ENDIF C TYPE='CHPOINT ' C 9999 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales