* fichier : konv_implbm.dgibi ************************************************************************ ************************************************************************ *********************************************************** *********************************************************** **** APPROCHE VF "Cell-Centred Formulation" pour la **** **** solution des **** **** Equations d'Euler pour un gaz parfait **** **** OPERATEURS PRIM, PRET, KONV **** **** Implicit: calcul du jacobien du residu **** **** **** **** Cas gaz monoespece, "calorically perfect" **** **** **** **** Methodes: AUSMLM **** **** **** **** S.V. KUDRIAKOV DM2S/SFME/LTMF JUNE 2002 **** *********************************************************** *********************************************************** 'OPTION' 'ELEM' QUA4 ; 'OPTION' 'ECHO' 0 ; 'OPTION' 'TRAC' 'X' ; * *** GRAPH * GRAPH = FAUX ; * GRAPH = VRAI ; ERRTOL = 1.0D-4 ; *************************** ***** 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) ; DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ; $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 ; *************************************************** ***** Densité, pression, vitesse, gamma *********** *************************************************** 'NATU' 'DISCRET' ; CSONN = (GAMMAN '*' PN0) '/' RN0 ; UXN0 = 0.05 * CSONN ; UYN0 = 0.01 * CSONN ; *************************************************** 'NATU' 'DISCRET' ; 'NATU' 'DISCRET' ; *************************************************** ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0)) ; 'NATU' 'DISCRET' ; 'MESSAGE' 'Problem 0' ; 'ERREUR' 5 ; 'FINSI' ; 'SI' GRAPH; 'FINSI' ; * **** Les variables conservative * * RN0 (densité) * GN0 (quantité de mouvement) * RETN0 (énergie totale par unité de volume) * * sont definiés * **************************************************** * Creating a mesh WITHOUT mesh **************************************************** P1 = 0.5 0.5 ; **************************************************** **************************************************** ******* Calcul du jacobien et du residu ********** **************************************************** **************************************************** * * JACO est le jacobien * * DEBRN0 le residu concernant la densité * DEBGNX0 le residu concernant la quantité de mouvement (axe x) * DEBGNY0 le residu concernant la quantité de mouvement (axe y) * DEBRETN0 le residu concernant l'enrgie totale par unité de volume * * Noms des variables NOMDEN = 'RN ' ; NOMMOX = 'RUXN' ; NOMMOY = 'RUYN' ; NOMRET = 'RETN' ; * Metode METO = 'AUSMPLM' ; $DOMTOT RN0 VITESSE PRES GAMMAN ; $DOMTOT ROF VITF PF GAMF LISTINCO MELLIM UINF UPRI ; $DOMTOT LISTINCO MELLIM METO RN0 VITESSE PRES GAMMAN UINF UPRI ; ***************************************************** ***************************************************** ******** PROCEDURES ********************************* ***************************************************** ***************************************************** * * Derivé partielle du residu en un point par rapport * aux variable en un autre point * * PPRIM = point ou est localisé la variable primale * PDUAL = point ou est localisé la variable duale * MOTPRI = nom de la composante concernante la variable primale * MOTDUA = nom de la composante concernante la variable duale ELT1 = 'MANUEL' 'POI1' PPRIM ; 'REPETER' BL1 NDIM ; MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ; 1 MOTCEL 0.0 'NATURE' 'DISCRET') ; 'FIN' BL1 ; SCAL = 'EXTRAIRE' D_DMOT PDUAL MOTDUA ; 'FINPROC' SCAL ; RETN*'CHPOINT' GAMN*'CHPOINT' LISTINCO*'LISTMOTS' MELLIM*'MAILLAGE' UINF*'CHPOINT' UPRI*'CHPOINT' PPRIM*'POINT' PDUAL*'POINT' * PPRIM = point ou est localisé la variable primale * PDUAL = point ou est localisé la variable duale * MOTPRI = nom de la composante concernante la variable primale * MOTDUA = nom de la composante concernante la variable duale * Le valeur dans l'état non-perturbé en PDUAL ; RNCEL = 'COPIER' RN ; GNCEL = 'COPIER' GN ; RETNCEL = 'COPIER' RETN ; $MODE RNCEL VITESSE PRES GAMN ; $MODE ROF VITF PF GAMF LISTINCO MELLIM UINF UPRI ; * 'LISTE' DT ; VAL0 = 'EXTRAIRE' CHPRES0 PDUAL MOTDUA ; * EPSILON = perturbation * Adimensionalisation dens0 = 'EXTRAIRE' RN PPRIM 'SCAL' ; CN2 = GAMN '*' (PN '/' RN) ; cson0 = ('EXTRAIRE' CN2 PPRIM 'SCAL') '**' 0.5 ; ret0 = ('EXTRAIRE' RETN PPRIM 'SCAL') '**' 0.5 ; * On etabli la variable à perturber 'REPETER' BL1 NDIM ; MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ; 'SI' ('EGA' MOTCEL MOTPRI) ; ICEL = &BL1 ; 'QUITTER' BL1 ; 'FINSI' ; 'FIN' BL1 ; 'SI' (ICEL > NDIM) ; 'MESSAGE' 'Procedure JACNUM' ; 'MESSAGE' 'MOTPRI = ??? '; 'ERREUR' 21 ; 'FINSI' ; ELT1 = 'MANUEL' 'POI1' PPRIM ; * ICEL = 1 -> On perturbe la densité 'SI' ('EGA' ICEL 1) ; DELTATOT = (EPSILON * dens0) ; 'NATURE' 'DISCRET') 'ET' RN ; GNCEL = 'COPIER' GN ; RETNCEL = 'COPIER' RETN ; 'FINSI' ; * ICEL = 2 -> On perturbe la q.d.m. long l'ax x 'SI' ('EGA' ICEL 2) ; DELTATOT = (EPSILON * dens0 * cson0) ; 'NATURE' 'DISCRET') 'ET' GN ; RNCEL = 'COPIER' RN ; RETNCEL = 'COPIER' RETN ; 'FINSI' ; * ICEL = 3 -> On perturbe la q.d.m. long l'ax y 'SI' ('EGA' ICEL 3) ; DELTATOT = (EPSILON * dens0 * cson0) ; 'NATURE' 'DISCRET') 'ET' GN ; RNCEL = 'COPIER' RN ; RETNCEL = 'COPIER' RETN ; 'FINSI' ; * ICEL = 4 -> On perturbe l'énergie totale 'SI' ('EGA' ICEL 4) ; DELTATOT = (EPSILON * ret0) ; 'NATURE' 'DISCRET') 'ET' RETN ; RNCEL = 'COPIER' RN ; GNCEL = 'COPIER' GN ; 'FINSI' ; $MODE RNCEL VITESSE PRES GAMN ; $MODE ROF VITF PF GAMF LISTINCO MELLIM UINF UPRI; VAL1 = 'EXTRAIRE' CHPRES1 PDUAL MOTDUA ; 'FINPROC' ((VAL1 '-' VAL0) '/' DELTATOT) ; ***************************************************** ***************************************************** ******** FIN PROCEDURES ***************************** ***************************************************** ***************************************************** ***************************************************** ***************************************************** ******* TEST1 *************************************** ***************************************************** * * On compare le jacobien et la variation du residu * en $DOM9 'CENTRE' par rapport à une variation * infinitésimal en $DOM9 'CENTRE' * * Les grandeurs pour adimesionner les erreurs ro0 = 'EXTRAIRE' RN0 PCEN9 'SCAL' ; CN20 = GAMMAN '*' (PN0 '/' RN0) ; cson0 = ('EXTRAIRE' CN20 PCEN9 'SCAL') '**' 0.5 ; ret0 = ('EXTRAIRE' RETN0 PCEN9 'SCAL') '**' 0.5 ; * * Le jacobien exact. * DRR = d(RES_ro)/dro (variable primale en PCEN9, variable duale en PCEN9) ; * DGXR = d(RES_gx)/dro (variable primale en PCEN9, variable duale en PCEN9) ; * ... * Le jacobien numerique DELTA = 1.0D-6 ; DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMDEN NOMDEN DELTA ; DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMDEN NOMMOX DELTA ; DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMDEN NOMMOY DELTA ; DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMDEN NOMRET DELTA ; DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOX NOMDEN DELTA ; DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOX NOMMOX DELTA ; DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOX NOMMOY DELTA ; DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOX NOMRET DELTA ; DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOY NOMDEN DELTA ; DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOY NOMMOX DELTA ; DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOY NOMMOY DELTA ; DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMMOY NOMRET DELTA ; DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMRET NOMDEN DELTA ; DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMRET NOMMOX DELTA ; DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMRET NOMMOY DELTA ; DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN9 PCEN9 NOMRET NOMRET DELTA ; * Test des comparaisons jacobien exact-jacobien numerique ************************************************************** 'SI' (('ABS'(DRR)) < DELTA) ; ERR1 = ('ABS' (DRRN '-' DRR)) ; 'SINON' ; ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ; 'FINSI' ; *********************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 1'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGXR)) < DELTA) ; ERR1 = ('ABS' (DGXRN '-' DGXR)) ; 'SINON' ; ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ; 'FINSI' ; *********************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 2'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGYR)) < DELTA) ; ERR1 = ('ABS' (DGYRN '-' DGYR)) ; 'SINON' ; ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ; 'FINSI' ; ************************ 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 3'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRETR)) < DELTA) ; ERR1 = ('ABS' (DRETRN '-' DRETR)) ; 'SINON' ; ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ; 'FINSI' ; ************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 4'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRGX)) < DELTA) ; ERR1 = ('ABS' (DRGXN '-' DRGX)) ; 'SINON' ; ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX)) ; 'FINSI' ; *************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 5'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGXGX)) < DELTA) ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ; 'SINON' ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ; 'FINSI' ; ***************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 6'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGYGX)) < DELTA) ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ; 'SINON' ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ; 'FINSI' ; ****************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 7'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DRETGX)) < DELTA) ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ; 'SINON' ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ; 'FINSI' ; ******************************* 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 8'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRGY)) < DELTA) ; ERR1 = ('ABS' (DRGYN '-' DRGY)) ; 'SINON' ; ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ; 'FINSI' ; ******************************* 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 9'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGXGY)) < DELTA) ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ; 'SINON' ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' ('ABS' (DGXGY)) ; 'FINSI' ; ******************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 10'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGYGY)) < DELTA) ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ; 'SINON' ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ; 'FINSI' ; *************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 11'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DRETGY)) < DELTA) ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ; 'SINON' ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ; 'FINSI' ; **************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 12'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRRET)) < DELTA) ; ERR1 = ('ABS' (DRRETN '-' DRRET)) ; 'SINON' ; ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 13'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGXRET)) < DELTA) ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ; 'SINON' ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 14'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGYRET)) < DELTA) ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ; 'SINON' ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 15'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRETRET)) < DELTA) ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ; 'SINON' ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ; 'FINSI' ; ***************** '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 PCEN6 'SCAL' ; cson0 = ('EXTRAIRE' CN20 PCEN6 'SCAL') '**' 0.5 ; ret0 = 'EXTRAIRE' RETN0 PCEN6 'SCAL' ; * * Le jacobien exact. * * Le jacobien numerique DELTA = 1.0D-6 ; DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMDEN NOMDEN DELTA ; DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMDEN NOMMOX DELTA ; DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMDEN NOMMOY DELTA ; DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMDEN NOMRET DELTA ; DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOX NOMDEN DELTA ; DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOX NOMMOX DELTA ; DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOX NOMMOY DELTA ; DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOX NOMRET DELTA ; DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOY NOMDEN DELTA ; DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOY NOMMOX DELTA ; DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOY NOMMOY DELTA ; DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMMOY NOMRET DELTA ; DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMRET NOMDEN DELTA ; DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMRET NOMMOX DELTA ; DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMRET NOMMOY DELTA ; DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO MELLIM UINF UPRI PCEN6 PCEN9 NOMRET NOMRET DELTA ; * Test des comparaisons jacobien exact-jacobien numerique ************************************************************** 'SI' (('ABS'(DRR)) < DELTA) ; ERR1 = ('ABS' (DRRN '-' DRR)) ; 'SINON' ; ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ; 'FINSI' ; *********************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 1'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGXR)) < DELTA) ; ERR1 = ('ABS' (DGXRN '-' DGXR)) ; 'SINON' ; ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ; 'FINSI' ; *********************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 2'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGYR)) < DELTA) ; ERR1 = ('ABS' (DGYRN '-' DGYR)) ; 'SINON' ; ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ; 'FINSI' ; ************************ 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 3'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRETR)) < DELTA) ; ERR1 = ('ABS' (DRETRN '-' DRETR)) ; 'SINON' ; ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ; 'FINSI' ; ************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 4'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRGX)) < DELTA) ; ERR1 = ('ABS' (DRGXN '-' DRGX)) ; 'SINON' ; ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX)) ; 'FINSI' ; *************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 5'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGXGX)) < DELTA) ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ; 'SINON' ; ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ; 'FINSI' ; ***************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 6'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGYGX)) < DELTA) ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ; 'SINON' ; ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ; 'FINSI' ; ****************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 7'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DRETGX)) < DELTA) ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ; 'SINON' ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ; 'FINSI' ; ******************************* 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 8'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRGY)) < DELTA) ; ERR1 = ('ABS' (DRGYN '-' DRGY)) ; 'SINON' ; ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ; 'FINSI' ; ******************************* 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 9'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGXGY)) < DELTA) ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ; 'SINON' ; ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' ('ABS' (DGXGY)) ; 'FINSI' ; ******************************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 10'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGYGY)) < DELTA) ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ; 'SINON' ; ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ; 'FINSI' ; *************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 11'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DRETGY)) < DELTA) ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ; 'SINON' ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ; 'FINSI' ; **************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 12'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRRET)) < DELTA) ; ERR1 = ('ABS' (DRRETN '-' DRRET)) ; 'SINON' ; ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 13'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DGXRET)) < DELTA) ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ; 'SINON' ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 14'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************* 'SI' (('ABS'(DGYRET)) < DELTA) ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ; 'SINON' ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ; 'FINSI' ; ***************** 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 15'; 'ERREUR' 5 ; 'FINSI' ; ************************************************************** 'SI' (('ABS'(DRETRET)) < DELTA) ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ; 'SINON' ; ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ; 'FINSI' ; ***************** '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. * ro0 = 'EXTRAIRE' RN0 PCEN7 'SCAL' ; cson0 = ('EXTRAIRE' CN20 PCEN7 'SCAL') '**' 0.5 ; ret0 = 'EXTRAIRE' RETN0 PCEN7 'SCAL' ; * * Le jacobien exact. * 'SI' (('MAXIMUM' ('PROG' DRR DGXR DGYR DRETR DRGX DGXGX DGYGX DRETGX DRGY DGXGY DGYGY DRETGY DRRET DGXRET DGYRET DRETRET ) 'ABS' ) > ERRTOL) ; 'MESSAGE' 'Problem final' ; 'ERREUR' 5 ; 'FINSI' ; ***************************************************** ***************************************************** ******* TEST4 *************************************** ***************************************************** ***************************************************** * AUSMPLUS = AUSMPBM in the following cases: * 1) VN0 > CN * 2) UINF1 > CN * 3) UINF2 > CN * * Let us start from RN0, VN0, PN0, GAMMAN * $DOMTOT RN0 VN0 PN0 GAMMAN ; 'NATU' 'DISCRET' ; CN0 = (GAMMAN '*' (PN0 '/' RN0)) '**' 0.5 ; UINF1 = CN0 * 1.17 ; $DOMTOT ROF VITF PF GAMF LISTINCO MELLIM UINF1 UINF2 ; $DOMTOT LISTINCO MELLIM 'AUSMPLM' RN0 VN0 PN0 GAMMAN UINF2 UINF1 ; $DOMTOT ROF VITF PF GAMF LISTINCO MELLIM ; JACO1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONS' $DOMTOT LISTINCO MELLIM 'AUSMPLUS' RN0 VN0 PN0 GAMMAN ; ERRO = 'MAXIMUM' (CHPRES1 '-' CHPRES) 'ABS' ; 'SI' (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final 2' ; 'ERREUR' 5 ; 'FINSI' ; 'NATU' 'DISCRET') 'ET' SI (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final 2' ; 'ERREUR' 5 ; 'FINSI' ; * Redefinition of VN0 CN0 = (GAMMAN '*' (PN0 '/' RN0)) '**' 0.5 ; $DOMTOT RN0 VN0 PN0 GAMMAN ; UINF1 = UINF2 ; $DOMTOT ROF VITF PF GAMF LISTINCO MELLIM UINF1 UINF2 ; $DOMTOT LISTINCO MELLIM 'AUSMPLM' RN0 VN0 PN0 GAMMAN UINF2 UINF1 ; $DOMTOT ROF VITF PF GAMF LISTINCO MELLIM ; JACO1 = 'KONV' 'VF' 'PERFMONO' 'JACOCONS' $DOMTOT LISTINCO MELLIM 'AUSMPLUS' RN0 VN0 PN0 GAMMAN ; ERRO = 'MAXIMUM' (CHPRES1 '-' CHPRES) 'ABS' ; 'SI' (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final 2' ; 'ERREUR' 5 ; 'FINSI' ; 'NATU' 'DISCRET') 'ET' SI (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final 3' ; 'ERREUR' 5 ; 'FINSI' ; ***************************************************** ***************************************************** ******* TEST5 *************************************** ***************************************************** ***************************************************** * Primitive variables * Redefinition of VN0 * UINF1 = UINF2 ; 'NATU' 'DISCRET' ; CN0 = (GAMMAN '*' PN0) '/' RN0 ; $DOMTOT LISTCONS METO RN0 VN0 PN0 GAMMAN UINF1 UINF2; LISTCONS LISTPRIM RN0 VN0 PN0 GAMMAN ; JACOP = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' $DOMTOT LISTCONS LISTPRIM METO RN0 VN0 PN0 GAMMAN UINF1 UINF2; 'UX' 0.15 'UY' 0.19 'PN' 0.21 ; * JACOP * UNP = JACO * DUDV * UNP, \forall UNP ERRO = 'MAXIMUM' ( ) ; 'SI' (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final' ; 'ERREUR' 5 ; 'FINSI' ; * UINF2 = CN0 ; UINF1 = UINF2 ; $DOMTOT LISTCONS METO RN0 VN0 PN0 GAMMAN UINF1 UINF2; JACOP = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' $DOMTOT LISTCONS LISTPRIM METO RN0 VN0 PN0 GAMMAN UINF1 UINF2; * JACOP * UNP = JACO * DUDV * UNP, \forall UNP ERRO = 'MAXIMUM' ( ) ; 'SI' (ERRO > ERRTOL) ; 'MESSAGE' 'Problem final' ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales