* fichier : precmat.dgibi ************************************************************ **** OPERATEUR 'KOPS' **** **** Matrice de preconditionnement écoulements bas mach **** **** divisé par le pas de temps locale. **** **** **** **** A. BECCANTINI, S. V. KUDRIAKOV, LTMF **** **** NOVEMBRE 2001 **** ************************************************************ 'OPTION' 'ECHO' 1 ; 'OPTION' 'ELEM' 'TRI3' ; 'OPTION' 'TRAC' 'X' ; GRAPH = FAUX ; * GRAPH = VRAI ; * *** MAILLAGE * P0 = 0.0D0 0.0D0 ; P1 = 3.0D0 0.0D0 ; P2 = 3.0D0 3.0D0 ; P3 = 0.0D0 3.0D0 ; P4 = 6.0D0 0.0D0 ; P5 = 6.0D0 3.0D0 ; RAF = 1 ; N1 = 2 '*' RAF ; N2 = 2 '*' RAF ; N3 = 2 '*' RAF ; N4 = 2 '*' RAF ; N5 = 1 '*' RAF ; N6 = 2 '*' RAF ; N7 = 2 '*' RAF ; LINEXT1 = ((P0 'DROIT' N1 P1) 'ET' (P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N3 P3) 'ET' (P3 'DROIT' N4 P0)) ; LINEXT2 = ((P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N5 P5) 'ET' (P5 'DROIT' N6 P4) 'ET' (P4 'DROIT' N7 P1)) ; 'OPTION' 'ELEM' QUA4 ; DOM1 = 'SURFACE' LINEXT1 'PLAN' ; 'OPTION' 'ELEM' TRI3 ; DOM2 = 'SURFACE' LINEXT2 'PLAN' ; DOMTOT = DOM1 'ET' DOM2; 'ELIMINATION' 1D-6 DOMTOT; 'NATU' 'DISCRET') 'ET' 'NATU' 'DISCRET') ; 'FORME' CHPBRU ; 'SI' GRAPH ; 'TRACER' DOMTOT ; 'FINSI' ; * **** 'KONV' pour la creation de la matrice identité * CN = GAMN '*' (PN '/' RN) ; CN = CN '**' 0.5 ; * Supersonic case 'NATU' 'DISCRET') 'ET' 'NATU' 'DISCRET') ; * En ce cas particulier, MAT2 = matrice identité '/' dt * et DT = DIAMIN '/' (QQ '+' CN) DIAMIN RN VN PN GAMN UINF UINF1 ; QQ = QQ ** 0.5 ; UNSDT = (QQ '+' CN) '/' DIAMIN ; 'R' 11.0 'UX' 12.0 'UY' 13.0 'RET' 14.0 'NATU' 'DISCRET') ; UTEST1 = UTEST '*' UNSDT ; ERRO = 'MAXIMUM' 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 5 ; 'FINSI' ; * Dans de vitesse subsonique, on calcules les elts de la matrice dans * l'elt3 ; ; 'DISCRET' ; CN3 = GAMN3 '*' (PN3 '/' RN3) ; CN3 = CN3 '**' 0.5 ; 'NATU' 'DISCRET' ; DIAMIN RN VN PN GAMN UINF UINF1 ; 'R' 0.0 'UX' 0.0 'UY' 0.0 'RET' 0.0 'NATU' 'DISCRET') ; 'R' 1.0 'NATU' 'DISCRET') 'ET' UNZERO ; 'UX' 1.0 'NATU' 'DISCRET') 'ET' UNZERO ; 'UY' 1.0 'NATU' 'DISCRET') 'ET' UNZERO ; 'RET' 1.0 'NATU' 'DISCRET') 'ET' UNZERO ; * * \Gamma(1,1) = 1.19000000000000394 * \Gamma(1,2) = -0.252726909164141866 * \Gamma(1,3) = -0.505453818328283733 * \Gamma(1,4) = 0.840406455469216551 * \Gamma(2,1) = 0.571367728421105434E-01 * \Gamma(2,2) = 0.924000000000000044 * \Gamma(2,3) = -0.151999999999999941 * \Gamma(2,4) = 0.252726909164141866 * \Gamma(3,1) = 0.114273545684221087 * \Gamma(3,2) = -0.151999999999999941 * \Gamma(3,3) = 0.696000000000000063 * \Gamma(3,4) = 0.505453818328283733 * \Gamma(4,1) = 4.33849594594603438 * \Gamma(4,2) = -5.77081405705304729 * \Gamma(4,3) = -11.5416281141060946 * \Gamma(4,4) = 20.1899999999999906 * * We have to divide them by DT * In this case uref = qq * * QQ = QQ ** 0.5 ; CN = ((GAMN * PN) '/' RN) ** 0.5 ; ur = qq ; mref=ur '/' a ; mref2=mref '*' mref ; mach=qq '/' a ; mach2=mach '*' mach ; lambda=(1.0D0 '-' mref2) '**' 2 ; lambda=(lambda '*' mach2) '+' (4.0D0 '*' mref2) ; lambda=(lambda '**' 0.5) * a ; lambda=( (1.0D0 '+' mref2) '*' qq) '+' lambda ; lambda=lambda '*' 0.5D0 ; dtau= ('EXTRAIRE' DIAMIN 'SCAL' ERRTOL = 1.0D-8 ; * 'XTY' UNR3 donne la premiére ligne 'SI' (('ABS' (GAMMA11 '-' 1.19000000000000)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA11' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA12 = GAMMA12 * dtau ; 'SI' (('ABS' (GAMMA12 '-' -0.25272690916414)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA12²' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA13 = GAMMA13 * DTAU ; 'SI' (('ABS' (GAMMA13 '-' -0.50545381832828)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA13' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA14 = GAMMA14 * DTAU ; 'SI' (('ABS' (GAMMA14 '-' 0.840406455469217)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA14' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; * 'XTY' UVNX3 donne la deuxieme ligne GAMMA21 = GAMMA21 * DTAU ; 'SI' (('ABS' (GAMMA21 '-' 0.571367728421105434E-01)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA21' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA22 = GAMMA22 * DTAU ; 'SI' (('ABS' (GAMMA22 '-' 0.924000000000000044)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA22²' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA23 = GAMMA23 * DTAU ; 'SI' (('ABS' (GAMMA23 '-' -0.151999999999999941)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA23' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA24 = GAMMA24 * DTAU ; 'SI' (('ABS' (GAMMA24 '-' 0.252726909164141866)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA24' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; * 'XTY' UNVY3 donne la deuxieme ligne GAMMA31 = GAMMA31 * DTAU ; 'SI' (('ABS' (GAMMA31 '-' 0.114273545684221087)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA31' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA32 = GAMMA32 * DTAU ; 'SI' (('ABS' (GAMMA32 '-' -0.151999999999999941)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA32' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA33 = GAMMA33 * DTAU ; 'SI' (('ABS' (GAMMA33 '-' 0.696000000000000063)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA33' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA34 = GAMMA34 * DTAU ; 'SI' (('ABS' (GAMMA34 '-' 0.505453818328283733)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA34' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; * 'XTY' UNVY3 donne la deuxieme ligne GAMMA41 = GAMMA41 * DTAU ; 'SI' (('ABS' (GAMMA41 '-' 4.33849594594603438)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA41' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA42 = GAMMA42 * DTAU ; 'SI' (('ABS' (GAMMA42 '-' -5.77081405705304729)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA42' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA43 = GAMMA43 * DTAU ; 'SI' (('ABS' (GAMMA43 '-' -11.5416281141060946)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA43' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; GAMMA44 = GAMMA44 * DTAU ; 'SI' (('ABS' (GAMMA44 '-' 20.1899999999999906)) '>' ERRTOL) ; 'MESSAGE' ; 'MESSAGE' 'GAMMA44' ; 'MESSAGE' ; 'ERREUR' 5 ; 'FINSI' ; * Gamma with respect to primitive variables LMOT1 = LMOT ; DIAMIN RN VN PN GAMN UINF UINF1 ; LMOT1 LMOT2 DIAMIN RN VN PN GAMN UINF UINF1 ; LMOT1 LMOT2 RN VN PN GAMN ; * MATGP = MAT2 * MATJAC * 'KOPS' 'MULT' ne marche pas avec deux matrik * Mais MAT2 * MATJAC * UN = MATGP * UN 'RN' 0.10 'UX2' 11.0 'UY2' 31.0 'PN' 41.0 'NATU' 'DISCRET') ; ERRO = 'MAXIMUM' (UN2 '-' UN3) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 5 ; 'FINSI' ; * What happens if UINF = CSON CN = ((GAMN '*' PN) '/' RN) '**' 0.5 ; MACHN = MACHN '**' 0.5 ; MACHN = MACHN '/' CN ; UINF = CN ; DIAMIN RN VN PN GAMN UINF UINF1 ; * UREF = UINF = CN -> DT = DIAMIN '/' (QQ '+' CN) QQ = QQ ** 0.5 ; UNSDT = (QQ '+' CN) '/' DIAMIN ; 'R' 11.0 'UX' 12.0 'UY' 13.0 'RET' 14.0 'NATU' 'DISCRET') ; UTEST1 = UTEST '*' UNSDT ; ERRO = 'MAXIMUM' 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 5 ; 'FINSI' ; * What happens if UINF > CSON CN = ((GAMN '*' PN) '/' RN) '**' 0.5 ; MACHN = MACHN '**' 0.5 ; MACHN = MACHN '/' CN ; UINF = 2. '*' CN ; DIAMIN RN VN PN GAMN UINF1 UINF ; QQ = QQ ** 0.5 ; UNSDT = (QQ '+' CN) '/' DIAMIN ; 'R' 11.0 'UX' 12.0 'UY' 13.0 'RET' 14.0 'NATU' 'DISCRET') ; UTEST1 = UTEST '*' UNSDT ; ERRO = 'MAXIMUM' 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 5 ; 'FINSI' ; * Gamma for primitive = jacobian for primitive LMOT2 = LMOT ; LMOT1 LMOT2 DIAMIN RN VN PN GAMN UINF1 UINF ; LMOT1 LMOT2 RN VN PN GAMN ; 'RN' 1.0 'UX1' 1.0 'UY1' 1.0 'PN' 1.0 'NATU' 'DISCRET') ; ERRO = 'MAXIMUM' RIS1 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales