* fichier : tube3D.dgibi ************************************************************************ * Section : Fluides Darcy ************************************************************************ ****************************************************************** * CALCUL DU TUBE A CHOC * * FORMULATION VF COMPRESSIBLE EXPLICITE * * DIFFERENTS SOLVEURS * * * * A. BECCANTINI TTMF MARS 1998 * * Remise à jours : JUIILETT 2001 * * Remise à jours : SEPTEMBRE 2002 (syntaxe de 'KONV' changé) * ****************************************************************** 'OPTION' 'DIME' 3 ; 'OPTION' 'ELEM' 'CUB8' ; 'OPTION' 'ISOV' 'SULI' ; 'OPTION' 'ECHO' 1 ; 'OPTION' 'TRAC' 'X' ; GRAPH = VRAI ; GRAPH = FAUX ; * *** Methodes possibles : * * 'VANLEER' * 'VLH ' * 'HUSVLH ' * 'GODUNOV' * 'AUSMPLUS' METO = 'VLH' ; LOGSO = VRAI ; SAFFAC = 0.7 ; NITER = 1000 ; TFINAL = 0.2 ; ************ * MAILLAGE * ************ RAF = 1 ; NX=25 '*' RAF ; NY=2 '*' RAF ; NZ=2 '*' RAF ; L = 1.0D0 ; DX = L/NX/2.0D0; H = NY*DX ; P = NZ*DX ; xD = 0.5D0*L ; xG = -1.0D0*xD ; yH = 0.5D0*H ; yB = -1.0D0*yH ; zV = 0.5D0*P ; zR = -1.0D0*zV ; A1 = xG yB zR ; A2 = 0.0D0 yB zR; A3 = xD yB zR; A4 = xD yH zR; A5 = 0.0D0 yH zR; A6 = xG yH zR; A7 = xG yB zV ; A8 = 0.0D0 yB zV; A9 = xD yB zV; A10 = xD yH zV; A11 = 0.0D0 yH zV; A12 = xG yH zV; VECTG = XG 0.0D0 zV; VECTD = XD 0.0D0 zV; xBG = xG-DX; XBD = xD+DX; B1 = xBG yB zR; B2 = xBG yH zR; B3 = xBD yB zR; B4 = xBD yH zR; B5 = xBG yB zV; B6 = xBG yH zV; B7 = xBD yB zV; B8 = xBD yH zV; BAS1 = A1 'DROI' NX A2 ; BAS2 = A2 'DROI' NX A3 ; BAS3 = A7 'DROI' NX A8 ; BAS4 = A8 'DROI' NX A9 ; BAS5 = A1 'DROI' NZ A7 ; BAS6 = A2 'DROI' NZ A8 ; BAS7 = A3 'DROI' NZ A9 ; BAS8 = B1 'DROI' NZ B5 ; BAS9 = B3 'DROI' NZ B7 ; BAS10 = B5 'DROI' 1 A7 ; BAS11 = B1 'DROI' 1 A1 ; BAS12 = B7 'DROI' 1 A9 ; BAS13 = B3 'DROI' 1 A3 ; HAU2 = A4 'DROI' NX A5 ; HAU1 = A5 'DROI' NX A6 ; HAU4 = A10 'DROI' NX A11 ; HAU3 = A11 'DROI' NX A12 ; HAU7 = A4 'DROI' NZ A10 ; HAU6 = A5 'DROI' NZ A11 ; HAU5 = A6 'DROI' NZ A12 ; HAU8 = B2 'DROI' NZ B6 ; HAU9 = B4 'DROI' NZ B8 ; HAU10 = B6 'DROI' 1 A12 ; HAU11 = A6 'DROI' 1 B2 ; HAU12 = B8 'DROI' 1 A10 ; HAU13 = B4 'DROI' 1 A4 ; AVA5 = A7 'DROI' NY A12; AVA6 = A8 'DROI' NY A11; AVA7 = A9 'DROI' NY A10; AVA8 = B5 'DROI' NY B6; AVA9 = B7 'DROI' NY B8; ARR5 = A1 'DROI' NY A6; ARR6 = A2 'DROI' NY A5; ARR7 = A3 'DROI' NY A4; ARR8 = B1 'DROI' NY B2; ARR9 = B3 'DROI' NY B4; 'OPTI' 'ELEM' 'QUA4'; S1 = 'DALL' AVA8 HAU8 ARR8 BAS8; S2 = 'DALL' AVA5 HAU5 ARR5 BAS5; S3 = 'DALL' AVA6 HAU6 ARR6 BAS6; S4 = 'DALL' AVA7 HAU7 ARR7 BAS7; S5 = 'DALL' AVA9 HAU9 ARR9 BAS9; S6 = 'DALL' BAS10 AVA5 HAU10 AVA8; S7 = 'DALL' BAS3 AVA6 HAU3 AVA5; S8 = 'DALL' BAS4 AVA7 HAU4 AVA6; S9 = 'DALL' BAS12 AVA9 HAU12 AVA7; S10 = 'DALL' BAS10 BAS5 BAS11 BAS8 ; S11 = 'DALL' BAS3 BAS6 BAS1 BAS5; S12 = 'DALL' BAS4 BAS7 BAS2 BAS6; S13 = 'DALL' BAS12 BAS9 BAS13 BAS7; S14 = 'DALL' BAS11 ARR5 HAU11 ARR8; S15 = 'DALL' BAS1 ARR6 HAU1 ARR5; S16 = 'DALL' BAS2 ARR7 HAU2 ARR6; S17 = 'DALL' BAS13 ARR9 HAU13 ARR7; S18 = 'DALL' HAU10 HAU5 HAU11 HAU8 ; S19 = 'DALL' HAU3 HAU6 HAU1 HAU5; S20 = 'DALL' HAU4 HAU7 HAU2 HAU6; S21 = 'DALL' HAU12 HAU9 HAU13 HAU7; 'OPTI' 'ELEM' 'CUB8'; DOM1 = (S7 et S11 et S15 et S19 et S2 et S3) 'VOLU'; DOM2 = (S8 et S12 et S16 et S20 et S3 et S4) 'VOLU'; FRONTG = (S6 et S10 et S14 et S18 et S1 et S2) 'VOLU'; FRONTD = (S9 et S13 et S17 et S21 et S4 et S5) 'VOLU'; * *** Rotation * ANGLE = 30.0D0; ORIG1 = 0.0D0 0.0D0 0.0D0; ORIG2 = 0.0D0 0.0D0 1.0D0; 'MESSAGE'; 'MESSAGE' (CHAIN 'ANGLE = ' ANGLE); 'MESSAGE'; DOM1 = DOM1 'TOURNER' ANGLE ORIG1 ORIG2; DOM2 = DOM2 'TOURNER' ANGLE ORIG1 ORIG2; FRONTG = FRONTG 'TOURNER' ANGLE ORIG1 ORIG2; FRONTD = FRONTD 'TOURNER' ANGLE ORIG1 ORIG2; DOMINT = DOM1 'ET' DOM2 ; 'ELIMINATION' DOMINT 1D-6; FRONT = FRONTG 'ET' FRONTD ; 'ELIMINATION' FRONT 1D-6; FRONT = FRONT 'COULEUR' 'ROUGE'; DOMTOT = DOMINT 'ET' FRONT; 'ELIMINATION' DOMTOT 1D-6; $DOMTOT = 'MODE' DOMTOT 'EULER' ; $DOMINT = 'MODE' DOMINT 'EULER' ; $DOM1 = 'MODE' DOM1 'EULER' ; $DOM2 = 'MODE' DOM2 'EULER' ; $FRONTG = 'MODE' FRONTG 'EULER' ; $FRONTD = 'MODE' FRONTD 'EULER' ; $FRONT = 'MODE' FRONT 'EULER' ; TDOMTOT = 'DOMA' $DOMTOT 'VF' ; TDOMINT = 'DOMA' $DOMINT 'VF' ; TDOM1 = 'DOMA' $DOM1 'VF' ; TDOM2 = 'DOMA' $DOM2 'VF' ; TFRONTG = 'DOMA' $FRONTG 'VF' ; TFRONTD = 'DOMA' $FRONTD 'VF' ; TFRONT = 'DOMA' $FRONT 'VF' ; MDOMTOT = TDOMTOT . 'QUAF' ; MDOMINT = TDOMINT . 'QUAF' ; MDOM1 = TDOM1 . 'QUAF' ; MDOM2 = TDOM2 . 'QUAF' ; MFRONTG = TFRONTG . 'QUAF' ; MFRONTD = TFRONTD . 'QUAF' ; MFRONT = TFRONT . 'QUAF' ; 'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1 'ET' MDOM2 'ET' MFRONTG 'ET' MFRONTD 'ET' MFRONT) 1.E-5 ; * ******* Creation de la ligne Utilisée pour le Post-Traitement * reliant les points centres * XINIT = XG + (0.5D0*DX); YINIT = YB + (0.5D0*DX); ZINIT = ZV - (0.5D0*DX); XFIN = XD - (0.5D0*DX) ; YFIN = YINIT ; ZFIN = ZINIT ; PINI = XINIT YINIT ZINIT; PFIN = XFIN YFIN ZFIN; IAUX = (2 * NX) - 1 ; COURB = PINI 'DROIT' IAUX PFIN; COURB = COURB 'TOURNER' ANGLE ORIG1 ORIG2; P1 = ('DOMA' $DOMTOT 'CENTRE') 'POIN' 'PROC' (COURB 'POIN' 1); 'REPETER' BLOC1 (IAUX-1); P2 = ('DOMA' $DOMTOT 'CENTRE') 'POIN' 'PROC' (COURB 'POIN' (&BLOC1+1)); SI (&BLOC1 'EGA' 1); COUR='MANU' 'SEG2' P1 P2; SINON; LL='MANU' 'SEG2' P1 P2; COUR=COUR 'ET' LL; FINSI; P1 = P2; 'FIN' BLOC1; COURB = COUR 'COULEUR' 'VERT'; 'ELIMINATION' (1.0D-6) Courb ('DOMA' $DOMTOT 'MAILLAGE'); ************************************************************ * CONDITIONS INITIALES ET LIMITES. * ************************************************************ gamgd = 1.4D0; * *** Etat gauche * rog = 1.0 ; ung = 0.0 ; utg = 0.0 ; uvg = 0.0 ; pg = 1.0 ; rouxg = ((ung '*' ('COS' ANGLE)) '-' (utg '*' ('SIN' ANGLE))) '*' rog ; rouyg = ((ung '*' ('SIN' ANGLE)) '+' (utg '*' ('COS' ANGLE))) '*' rog; rouzg = uvg '*' rog; recing = 0.5D0 '*' rog '*' ((ung '*' ung) '+' (utg '*' utg) '+' (uvg '*' uvg)); retg = (pg '/' (gamgd '-' 1.0)) '+' recing; * *** Etat droite * rod = 1.0D-1 ; und = 0.0D0 ; utd = 0.0; uvd = 0.0; pd = 1.0D-1; rouxd = ((und '*' ('COS' ANGLE)) '-' (utd '*' ('SIN' ANGLE))) '*' rod; rouyd = ((und '*' ('SIN' ANGLE)) '+' (utd '*' ('COS' ANGLE))) '*' rod; rouzd = uvd '*' rod; recind = 0.5D0 '*' rod '*' ((und '*' und) '+' (utd '*' utd)); retd = (pd '/' (gamgd '-' 1.0)) '+' recind; * *** gamma * GAMN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' gamgd; * *** ro * RO_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' rog ; RO_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' rod ; RO_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RO_f1 'ET' RO_f2) ; RO_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rog; RO_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rod; RO_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RO_i1 'ET' RO_i2); RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RO_i 'ET' RO_f) ; * *** ro u, ro v * GN_f1 = 'KCHT' $FRONTG 'VECT' 'CENTRE' (rouxg rouyg rouzg); GN_f2 = 'KCHT' $FRONTD 'VECT' 'CENTRE' (rouxd rouyd rouzd); GN_f = 'KCHT' $FRONT 'VECT' 'CENTRE' (GN_f1 'ET' GN_f2); GN_i1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (rouxg rouyg rouzg); GN_i2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (rouxd rouyd rouzd); GN_i = 'KCHT' $DOMINT 'VECT' 'CENTRE' (GN_i1 'ET' GN_i2); GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (GN_i 'ET' GN_f) ; * *** ro e * RE_f1 = 'KCHT' $FRONTG 'SCAL' 'CENTRE' retg ; RE_f2 = 'KCHT' $FRONTD 'SCAL' 'CENTRE' retd ; RE_f = 'KCHT' $FRONT 'SCAL' 'CENTRE' (RE_f1 'ET' RE_f2) ; RE_i1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' retg ; RE_i2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' retd ; RE_i = 'KCHT' $DOMINT 'SCAL' 'CENTRE' (RE_i1 'ET' RE_i2); RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RE_i ET RE_f) ; ******************************************************** *** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM *** ******************************************************** MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE'; * **** Les debits dans le repaire tube * GNX = 'EXCO' 'UX' GN; GNY = 'EXCO' 'UY' GN; GNZ = 'EXCO' 'UZ' GN; GNN = (GNX * ('COS' ANGLE)) '+' (GNY * ('SIN' ANGLE)); GNT = (GNY * ('COS' ANGLE)) '-' (GNX * ('SIN' ANGLE)); GNV = GNZ; * *** GRAPHIQUE DES C.I. * 'SI' GRAPH ; * *** CREATION DE CHAMELEM * CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ; CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ; CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ; CHM_GNV = 'KCHA' $DOMTOT 'CHAM' GNV ; CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ; TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' 0.0); TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' 0.0); TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' 0.0); TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' 0.0); TRAC CHM_GNV MOD1 'TITR' ('CHAINE' 'ROUV at t=' 0.0); 'FINSI' ; * **** Les variables primitives * VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ; * **** Les gradients * CACCA CHLIM COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE' ('MOTS' 'SCAL') RN ; CACCA CHLIM COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') VN ; * **** Le calcul * TPS = 0.0 ; ZERO = 1.0D-12 ; 'TEMPS' 'ZERO' ; 'REPETER' BL1 NITER ; * **** Primitive variables * VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ; 'SI' LOGSO ; GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR' ('MOTS' 'SCAL') RN 'GRADGEO' COEFSCAL ; GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR' ('MOTS' 'SCAL') PN 'GRADGEO' COEFSCAL ; GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') VN 'GRADGEO' COEFVECT ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' 2 1 $DOMTOT RN GRADR ALR VN GRADV ALV PN GRADP ALP GAMN ; 'SINON' ; ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1 $DOMTOT RN VN PN GAMN ; 'FINSI' ; RESIDU DELTAT = 'KONV' 'VF' 'PERFMONO' 'RESI' METO $DOMTOT ('MOTS' 'RN' 'RUX' 'RUY' 'RUZ' 'RETN') ROF VITF PF GAMF ; DT_CON = SAFFAC '*' DELTAT ; * **** The time step linked to tps * DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ; * **** Total time step * DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS) ; * **** Increment of the variables (convection) * RESIDU = DTMIN '*' RESIDU ; DRN = 'EXCO' 'RN' RESIDU 'SCAL' ; DGN = 'EXCO' ('MOTS' 'RUX' 'RUY' 'RUZ') RESIDU ('MOTS' 'UX' 'UY' 'UZ') ; DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ; TPS = TPS '+' DTMIN ; RN = RN '+' DRN ; GN = GN '+' DGN ; RETN = RETN '+' DRETN ; 'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ; 'MESSAGE' ('CHAINE' 'ITER =' &BL1 ' TPS =' TPS) ; 'FINSI' ; 'SI' (TPS > TFINAL) ; 'QUITTER' BL1 ; 'FINSI' ; 'FIN' BL1 ; 'TEMPS' ; * ***** On calcule les variables primitive * VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ; * **** La vitesse dans le repaire tube * VNX = 'EXCO' 'UX' VN; VNY = 'EXCO' 'UY' VN; VNZ = 'EXCO' 'UZ' VN; VNN = (VNX * ('COS' ANGLE)) '+' (VNY * ('SIN' ANGLE)); VNT = (VNY * ('COS' ANGLE)) '-' (VNX * ('SIN' ANGLE)); VNV = VNZ; GNN = VNN * RN; GNT = VNT * RN; GNV = VNV * RN; * *** GRAPHIQUE DES SOLUTIONS * 'SI' (GRAPH); * *** CREATION DE CHAMELEM * CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN; CHM_GNN = 'KCHA' $DOMTOT 'CHAM' GNN ; CHM_GNT = 'KCHA' $DOMTOT 'CHAM' GNT ; CHM_GNV = 'KCHA' $DOMTOT 'CHAM' GNV ; CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN; TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' TPS); TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' TPS); TRAC CHM_GNN MOD1 'TITR' ('CHAINE' 'ROUN at t=' TPS); TRAC CHM_GNT MOD1 'TITR' ('CHAINE' 'ROUT at t=' TPS); 'FINSI' ; * *** Objects evolutions * 'SI' LOGSO ; IE = 2 ; 'SINON' ; IE = 1 ; 'FINSI' ; IT = 1 ; xx yy zz= 'COORDONNEE' Courb; ss = 'KOPS' ('KOPS' ('COS' ANGLE) '*' xx) '+' ('KOPS' ('SIN' ANGLE) '*' yy) ; evxx = 'EVOL' 'CHPO' ss Courb ; lxx = 'EXTRAIRE' evxx 'ORDO' ; x0 = 'MINIMUM' lxx; x1 = 'MAXIMUM' lxx; evro = 'EVOL' 'CHPO' RN Courb ; lro = 'EXTRAIRE' evro 'ORDO' ; evro = 'EVOL' 'MANU' 'x' lxx 'ro' lro; tro = CHAINE '1D ' METO ' : RO IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; evu = 'EVOL' 'CHPO' VNN Courb ; lu = 'EXTRAIRE' evu 'ORDO' ; evu = 'EVOL' 'MANU' 'x' lxx 'u' lu ; tu = CHAINE '1D ' METO ' : U IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; evv = 'EVOL' 'CHPO' VNT Courb ; lv = 'EXTRAIRE' evv 'ORDO' ; evv = 'EVOL' 'MANU' 'x' lxx 'v' lv ; tv = CHAINE '1D ' METO ' : V IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; SI GRAPH; 'DESSIN' evv 'TITRE' tv 'XBOR' x0 x1; FINSI; evw = 'EVOL' 'CHPO' VNV Courb ; lw = 'EXTRAIRE' evw 'ORDO' ; evw = 'EVOL' 'MANU' 'x' lxx 'w' lw ; tw = CHAINE '1D ' METO ' : W IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; SI GRAPH; 'DESSIN' evw 'TITRE' tw 'XBOR' x0 x1; FINSI; evp = 'EVOL' 'CHPO' PN Courb ; lp = 'EXTRAIRE' evp 'ORDO' ; evp = 'EVOL' 'MANU' 'x' lxx 'p' lp ; tp = CHAINE '1D ' METO ' : P IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; ls = lro '**' gamgd; ls = lp '/' ls; evs = 'EVOL' 'MANU' 'x' lxx 's' ls ; ts = CHAINE '1D ' METO ' : s IT ' IT ' IE ' IE ' tmps ' TPS ' elem ' 'CUB8' ; * *** Solution analytique * lxxa = 'PROG' -0.49000 -0.47000 -0.45000 -0.43000 -0.41000 -0.390 -0.37000 -0.35000 -0.33000 -0.31000 -0.29000 -0.27000 -0.25000 -0.23000 -0.21000 -0.19000 -0.17000 -0.15000 -0.13000 -0.11000 -9.00000E-2 -7.00000E-2 -5.00000E-2 -3.00000E-2 -1.00000E-2; lxxa = lxxa 'ET' ('PROG' 1.00000E-02 3.00000E-02 5.00000E-02 7.00000E-02 9.00000E-02 0.11000 0.13000 0.15000 0.17000 0.19000 0.21000 0.23000 0.25000 0.27000 0.29000 0.31000 0.33000 0.35000 0.37000 0.39000 0.41000 0.43000 0.45000 0.47000) ; lpa = 'PROG' 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 .99193 .85405 .79151 .69598 .64297 .57841 .51997 .45356 .41754 .37307 .33114 .29475 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .28482 .10000 .10000 .10000 .10000 .10000; lroa = 'PROG' 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 .99423 .89343 .84619 .77192 .72945 .67635 .62680 .56851 .53588 .49447 .45410 .41786 .40776 .40776 .40776 .40776 .40776 .40776 .40776 .40776 .40776 .40776 .20444 .20444 .20444 .20444 .20444 .20444 .20444 .20444 .20444 .10000 .10000 .10000 .10000 .10000; lua = 'PROG' 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.84663E-03 .13185 .19435 .29851 .36173 .44507 .52768 .63185 .69395 .77728 .86406 .94740 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 .97167 0.0 0.0 0.0 0.0 0.0; EPSI=0.26; lsa = lroa '**' gamgd; lsa = lpa '/' lsa; evroa = 'EVOL' 'MANU' 'x' lxxa 'ro' lroa; evpa = 'EVOL' 'MANU' 'x' lxxa 'p' lpa; evua = 'EVOL' 'MANU' 'x' lxxa 'ua' lua; evsa = 'EVOL' 'MANU' 'x' lxxa 's' lsa; *PM du fait de la précision du SIN et du COS, (de l'ordre de 10-10) * l'intervalle lxx est plus petit que lxxa. * Comme IPOL fait une erreur dans ce cas, on restreint lxxa 'REMPLACER' lxxa 1 ('EXTR' lxx 1) ; 'REMPLACER' lxxa ('DIME' lxxa) ('EXTR' lxx ('DIME' lxx)) ; lper = 'IPOL' lxxa lxx lp ; luer = 'IPOL' lxxa lxx lu ; lroer = 'IPOL' lxxa lxx lro ; dlp = 'MAXIMUM' (ABS ( lper '-' lpa)); dlu = 'MAXIMUM' (ABS ( luer '-' lua)); dlro = 'MAXIMUM' (ABS ( lroer '-' lroa)); dl = (dlp '+' dlu '+' dlro) '/' 3.0D0; * *** Quelque DESSIN * TAB1=TABLE; TAB1.'TITRE'= TABLE ; TAB1.1='MARQ TRIB REGU'; TAB1.'TITRE' . 1 = MOT 'Numerique'; TAB1.2='MARQ CROI REGU'; TAB1.'TITRE' . 2 = MOT 'Exacte'; SI GRAPH; 'DESSIN' (evro 'ET' evroa) 'TITRE' tro 'XBOR' x0 x1 'LEGE' TAB1; 'DESSIN' (evp 'ET' evpa) 'TITRE' tp 'XBOR' x0 x1 'LEGE' TAB1; 'DESSIN' (evu 'ET' evua) 'TITRE' tu 'XBOR' x0 x1 'LEGE' TAB1; 'DESSIN' (evs 'ET' evsa) 'TITRE' ts 'XBOR' x0 x1 'LEGE' TAB1; FINSI; SI (DL > EPSI); MESSAGE 'Erreur calcul du tube a choc'; MESSAGE dl; ERREUR 5; FINSI; ERRO1 = 'MAXIMUM' (lv 'ET' lw) 'ABS' ; 'SI' (ERRO1 '>' 1.0D-6); MESSAGE 'Erreur calcul du tube a choc'; MESSAGE dl; ERREUR 5; 'FINSI' ; FIN;