* fichier : lapn_impl.dgibi ************************************************************************ ************************************************************************ *********************************************************** *********************************************************** **** APPROCHE VF "Cell-Centred Formulation" pour la **** **** solution des **** **** Equations d'Euler pour un gaz parfait **** **** OPERATEURS PRIM, PENT, LAPN **** **** Implicit: calcul du jacobien du residu **** **** **** **** Cas gaz monoespece, "calorically perfect" **** **** **** **** Methodes: DIAMANT **** **** **** **** A. BECCANTINI DRN/DMT/SEMT/LTMF AOUT 2000 **** **** S. GOUNAND DEN/DM2S/SFME/LTMF AOUT 2001 **** *********************************************************** *********************************************************** 'OPTION' 'ELEM' QUA4 ; 'OPTION' 'ECHO' 0 ; 'OPTION' 'TRAC' 'X' ; * *** GRAPH * GRAPH = FAUX ; * GRAPH = VRAI ; ERRTOL = 1.0D-3 ; *************************** ***** DOMAINE SPATIAL **** *************************** A0 = 0.0D0 0.0D0; A1 = 1.0D0 0.0D0; A2 = 2.0D0 0.0D0; A3 = 3.0D0 0.0D0; A0A1 = A0 'DROIT' 1 A1; A1A2 = A1 'DROIT' 1 A2; A2A3 = A2 'DROIT' 1 A3; DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ; DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ; DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ; DOM9 = DOM9 'COULEUR' 'ROUG ' ; DOM6 = DOM6 'COULEUR' 'VERT' ; DOM7 = DOM7 'COULEUR' 'JAUN' ; DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ; * **** On calcule le JACOBIAN dans le centre de DOM9; * qui doit dependre de la valeur en DOM9, DOM6, mais il ne doit * pas dependre de DOM7 * $DOMTOT = 'MODELISER' DOMTOT 'EULER'; $DOM6 = 'MODELISER' DOM6 'EULER'; $DOM7 = 'MODELISER' DOM7 'EULER'; $DOM9 = 'MODELISER' DOM9 'EULER'; MDOM6 = TDOM6 . 'QUAF' ; MDOM7 = TDOM7 . 'QUAF' ; MDOM9 = TDOM9 . 'QUAF' ; **** old stuff $DOMTOT = 'DOMA' DOMTOT ; MDOMTOT = TDOMTOT . 'QUAF' ; 'ELIMINATION' (MDOMTOT ET MDOM6) 0.0001 ; 'ELIMINATION' (MDOMTOT ET MDOM7) 0.0001 ; 'ELIMINATION' (MDOMTOT ET MDOM9) 0.0001 ; CSONN = (GAMMAN '*' PN0) '/' RN0 ; UXN0 = 0.2 * CSONN ; UYN0 = 0.3 * CSONN ; 'TXX' 1.D0 'TYY' 1.D0 'TXY' 1.D0 ; * *** retgd * ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0)) ; RETN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' ((PN0 '/' (GAMMAN '-' 1.0)) '+' ECIN) ; CV=PI ; TN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' ((PN0 '/' (GAMMAN '-' 1.0)) '/' (RN0 '*' CV)) ; 'MESSAGE' 'Problem 0' ; 'ERREUR' 5 ; 'FINSI' ; 'SI' GRAPH; 'FINSI' ; * ***** Les valeurs en $DOM9 'CENTRE' * ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ; cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ; ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ; *********************** **** Les CHPOINTs **** *********************** RN = 'COPIER' RN0 ; GN = 'COPIER' GN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT * 'TAUI' tauimp LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; ***************************************************** ***************************************************** ******* TEST1 *************************************** ***************************************************** ***************************************************** * * On compare le jacobien et la variation du residu * en $DOM9 'CENTRE' par rapport à une variation * infinitésimal en $DOM9 'CENTRE' * 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'NATURE' 'DISCRET') ; * * ***** DDRHO contient: dRES_RN '/' dRN ('RN') ; * dRES_GXN '/' dRN ('RUXN') ; * dRES_GYN '/' dRN ('RUYN') ; * dRES_RETN '/' dRN ('RETN') ; * DDGX contient ... * * DRR = 'EXTRAIRE' DDRHO PCON 'RN' ; DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ; DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ; DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ; DRGX = 'EXTRAIRE' DDGX PCON 'RN' ; DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ; DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ; DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ; DRGY = 'EXTRAIRE' DDGY PCON 'RN' ; DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ; DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ; DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ; DRRET = 'EXTRAIRE' DDRET PCON 'RN' ; DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ; DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ; DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ; ********************************************************************* ********************************************************************* ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) ******* ********************************************************************* ********************************************************************* DELTA = 1.0D-6 ; ro1 = ro0 '*' (1 '+' DELTA) ; GN = 'COPIER' GN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT * 'TAUI' tauimp LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ; DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ; DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ; DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ; ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 1'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRN '-' DGXR)) '*' (ro0 '/' (ro0 '*' cson0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 2'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRN '-' DGYR)) '*' (ro0 '/' (ro0 '*' cson0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 3'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETRN '-' DRETR)) '*' (ro0 '/' (ret0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 4'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) ***** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ; gny0 = 'EXTRAIRE' GN0 PCON 'UY' ; gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ; RN = 'COPIER' RN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT * 'TAUI' tauimp LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ; DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ; DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ; DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ; ERR1 = ('ABS' (DRGXN '-' DRGX)) ; 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 5'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 6'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 7'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*' (ro0 / ret0) ; 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 8'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ; gny0 = 'EXTRAIRE' GN0 PCON 'UY' ; gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ; RN = 'COPIER' RN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT * 'TAUI' tauimp LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ; DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ; DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ; DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ; ERR1 = ('ABS' (DRGYN '-' DRGY)) ; 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 9'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 10'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 11'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*' (ro0 / ret0) ; 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 12'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; ret1 = ret0 '*' (1. '+' DELTA) ; RN = 'COPIER' RN0 ; GN = 'COPIER' GN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT * 'TAUI' tauimp LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ; DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ; DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ; DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ; ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 13'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*' (ret0 '/' (ro0 '*' cson0 * cson0)) ; 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 14'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' (ret0 '/' (ro0 '*' cson0 * cson0)) ; 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 15'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 16'; 'ERREUR' 5 ; 'FINSI' ; ***************************************************** ***************************************************** ******* TEST2 *************************************** ***************************************************** ***************************************************** * * On compare le jacobien et la variation du residu * en $DOM9 'CENTRE' par rapport à une variation * infinitésimal en $DOM6 'CENTRE' * ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ; cson0 = 'EXTRAIRE' CSONN PCELL 'SCAL' ; ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'NATURE' 'DISCRET') ; * * ***** DDRHO contient: dRES_RN '/' dRN ('RN') ; * dRES_GXN '/' dRN ('RUXN') ; * dRES_GYN '/' dRN ('RUYN') ; * dRES_RETN '/' dRN ('RETN') ; * DDGX contient ... * * DRR = 'EXTRAIRE' DDRHO PCON 'RN' ; DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ; DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ; DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ; DRGX = 'EXTRAIRE' DDGX PCON 'RN' ; DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ; DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ; DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ; DRGY = 'EXTRAIRE' DDGY PCON 'RN' ; DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ; DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ; DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ; DRRET = 'EXTRAIRE' DDRET PCON 'RN' ; DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ; DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ; DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ; ********************************************************************* ********************************************************************* ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) ******* ********************************************************************* ********************************************************************* DELTA = 1.0D-6 ; ro1 = ro0 '*' (1 '+' DELTA) ; GN = 'COPIER' GN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ; DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ; DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ; DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ; ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 1'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRN '-' DGXR)) '*' (ro0 '/' (ro0 '*' cson0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 2'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRN '-' DGYR)) '*' (ro0 '/' (ro0 '*' cson0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 3'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETRN '-' DRETR)) '*' (ro0 '/' (ret0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 4'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) ***** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ; gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ; gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ; RN = 'COPIER' RN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ; DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ; DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ; DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ; ERR1 = ('ABS' (DRGXN '-' DRGX)) ; 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 5'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 6'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 7'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*' (ro0 / ret0) ; 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 8'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ; gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ; gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ; RN = 'COPIER' RN0 ; RETN = 'COPIER' RETN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ; DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ; DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ; DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ; ERR1 = ('ABS' (DRGYN '-' DRGY)) ; 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 9'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 10'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 11'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*' (ro0 / ret0) ; 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 12'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-6 ; ret1 = ret0 '*' (1. '+' DELTA) ; RN = 'COPIER' RN0 ; GN = 'COPIER' GN0 ; CV = PI ; MU = '*' PI PI ; KAPPA = '*' ('*' PI PI) PI ; T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' * * * $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT LISTINCO ; *********************** ***** Le residu ******* *********************** DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ; DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ; DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ; DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ; * **** On calcule le jacobien numeriquement * DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ; DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ; DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ; DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ; ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ; 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 13'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*' (ret0 '/' (ro0 '*' cson0 * cson0)) ; 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 14'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' (ret0 '/' (ro0 '*' cson0 * cson0)) ; 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 15'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ; 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 16'; 'ERREUR' 5 ; 'FINSI' ; ***************************************************** ***************************************************** ******* TEST3 *************************************** ***************************************************** ***************************************************** * * On observe que la variation du residu * en $DOM9 'CENTRE' par rapport à une variation * infinitésimal en $DOM7 'CENTRE' doit etre nulle. * Donc les elements du jacobien relatifs à ça * doivent etre nuls. * 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'NATURE' 'DISCRET') ; 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET') 'ET' 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'NATURE' 'DISCRET') ; * * ***** DDRHO contient: dRES_RN '/' dRN ('RN') ; * dRES_GXN '/' dRN ('RUXN') ; * dRES_GYN '/' dRN ('RUYN') ; * dRES_RETN '/' dRN ('RETN') ; * DDGX contient ... * * DRR = 'EXTRAIRE' DDRHO PCON 'RN' ; DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ; DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ; DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ; DRGX = 'EXTRAIRE' DDGX PCON 'RN' ; DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ; DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ; DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ; DRGY = 'EXTRAIRE' DDGY PCON 'RN' ; DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ; DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ; DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ; DRRET = 'EXTRAIRE' DDRET PCON 'RN' ; DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ; DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ; DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ; 'MESSAGE' ('CHAINE' 'DRR =' DRR ' DGXR =' DGXR) ; 'MESSAGE' ('CHAINE' 'DGYR=' DGYR ' DRETR=' DRETR) ; 'MESSAGE' ('CHAINE' 'DRGX =' DRGX ' DGXGX =' DGXGX) ; 'MESSAGE' ('CHAINE' 'DGYGX=' DGYGX ' DRETGX=' DRETGX) ; 'MESSAGE' ('CHAINE' 'DRGY =' DRGY ' DGXGY =' DGXGY) ; 'MESSAGE' ('CHAINE' 'DGYGY=' DGYGY ' DRETGY=' DRETGY) ; 'MESSAGE' ('CHAINE' 'DRRET =' DRRET ' DGXRET =' DGXRET) ; 'MESSAGE' ('CHAINE' 'DGYRET=' DGYRET ' DRETRET=' DRETRET) ; 'SI' (('MAXIMUM' ('PROG' DRR DGXR DGYR DRETR DRGX DGXGX DGYGX DRETGX DRGY DGXGY DGYGY DRETGY DRRET DGXRET DGYRET DRETRET ) 'ABS' ) > ERRTOL) ; 'MESSAGE' 'Problem 17' ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales