Télécharger konv_impl_murs.dgibi
* fichier : konv_impl_murs.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: VLH **** **** **** **** A. BECCANTINI DRN/DMT/SEMT/LTMF AOUT 2000 **** *********************************************************** *********************************************************** 'OPTION' 'ELEM' QUA4 ; 'OPTION' 'ECHO' 0 ; 'OPTION' 'TRAC' 'X' ; * *** GRAPH * GRAPH = FAUX ; * GRAPH = VRAI ; ERRTOL = 1.0D-3 ; *************************** ***** DOMAINE SPATIAL **** *************************** A1 = 0.0D0 0.0D0; A2 = 1.0D0 0.0D0; A3 = 1.0D0 1.0D0; A4 = 0.0D0 1.0D0; L12 = A1 'DROIT' 1 A2; L23 = A2 'DROIT' 1 A3; L34 = A3 'DROIT' 1 A4; L41 = A4 'DROIT' 1 A1; DOM10 = 'DALL' L12 L23 L34 L41 'PLANE'; * *** Etat * ro = 1.11 ; p = 1234.7; gam = 1.4D0; * *** retgd * ecin = 0.5D0 '*' ro '*' ((un '*' un ) '+' (ut '*' ut )); ret = (p '/' (gam '-' 1.0)) '+' ecin ; * *** flux en (n,t) * **************************************************** **************************************************** ******** Boucle sur les angles ********* **************************************************** **************************************************** DANGLE = (360.0 '/' 7.15) ; ANGLE = 0.0 ; 'REPETER' BLOC 8 ; * *** Rotation * ANGLE = ANGLE '+' DANGLE ; ORIG = 0.0D0 0.0D0; 'MESSAGE' ; 'MESSAGE' ('CHAINE' 'Angle de rotation= ' ANGLE); 'MESSAGE' ; DOMTOT = DOM10 'TOURNER' ANGLE ORIG; $DOMTOT = 'MODELISER' DOMTOT 'EULER'; MDOMTOT = TDOMTOT . 'QUAF' ; 'SI' GRAPH; 'FINSI' ; *********************** **** Les CHPOINTs **** *********************** ux = (un '*' ('COS' ANGLE)) '-' (ut '*' ('SIN' ANGLE)); uy = (un '*' ('SIN' ANGLE)) '+' (ut '*' ('COS' ANGLE)); ro0 = ro ; gnx0 = ro '*' ux ; gny0 = ro '*' uy ; ret0 = ret ; *************************** **** L'operateur PRIM**** *************************** *************************** **** L'operateur PRET**** *************************** ORDESP = 1; ORDTEM = 1; ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM $DOMTOT RN VITESSE PRES GAMMAN ; *************************** **** L'operateur KONV**** *************************** METO = 'VLH' ; $DOMTOT ROF VITF PF GAMF LISTINCO ; IJACO = 'KONV' 'VF' 'PERFMONO' 'JACOCONS' $DOMTOT LISTINCO METO RN VITESSE PRES GAMMAN ; *********************** ***** 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) ; * ***** Le jacobien du residu et le residu * 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET' ; 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'NATURE' 'DISCRET' ; 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'NATURE' 'DISCRET' ; '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-4 ; ro1 = ro0 '*' (1.0 '+' DELTA) ; gnx1 = gnx0 ; gny1 = gny0 ; ret1 = ret0 ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM $DOMTOT RN VITESSE PRES GAMMAN ; $DOMTOT ROF VITF PF GAMF 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) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 1'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRN '-' DGXR)) '*' 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 2'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRN '-' DGYR)) '*' 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 3'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETRN '-' DRETR)) '*' 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 4'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-4 ; ro1 = ro0 ; gny1 = gny0 ; ret1 = ret0 ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM $DOMTOT RN VITESSE PRES GAMMAN ; $DOMTOT ROF VITF PF GAMF 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 * ERR1 = ('ABS' (DRGXN '-' DRGX)) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 5'; 'ERREUR' 5 ; 'FINSI' ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 6'; 'ERREUR' 5 ; 'FINSI' ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 7'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*' (ro0 / ret0) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 8'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-4 ; ro1 = ro0 ; gnx1 = gnx0 ; ret1 = ret0 ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM $DOMTOT RN VITESSE PRES GAMMAN ; $DOMTOT ROF VITF PF GAMF 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 * ERR1 = ('ABS' (DRGYN '-' DRGY)) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 9'; 'ERREUR' 5 ; 'FINSI' ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 10'; 'ERREUR' 5 ; 'FINSI' ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 11'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*' (ro0 / ret0) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 12'; 'ERREUR' 5 ; 'FINSI' ; *************************************************************************** *************************************************************************** ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ****** *************************************************************************** *************************************************************************** DELTA = 1.0D-4 ; ro1 = ro0 ; gnx1 = gnx0 ; gny1 = gny0 ; ret1 = ret0 * (1. '+' DELTA) ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' ORDESP ORDTEM $DOMTOT RN VITESSE PRES GAMMAN ; $DOMTOT ROF VITF PF GAMF 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) ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 13'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*' 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 14'; 'ERREUR' 5 ; 'FINSI' ; ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*' 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 15'; 'ERREUR' 5 ; 'FINSI' ; 'SI' (ERR1 > ERRTOL) ; 'MESSAGE' 'Problem 16'; 'ERREUR' 5 ; 'FINSI' ; 'FIN' BLOC ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales