Télécharger villers_platten.dgibi
* fichier : villers_platten.dgibi ************************************************************************ ************************************************************************ *************************************************************** * * * NOM : villers_platten.dgibi * * DESCRIPTION : fiche de validation CASTEM2000 * * Mécanique des Fluides * * Convection naturelle laminaire + * * convection thermocapillaire (Marangoni) * * en cavité rectangulaire (2D) * * FONCTIONS * * TESTEES : 'NS' algorithme semi-implicite * * option SUPG * * approximation de Boussinesq * * éléments QUA8 'MACRO' * * 'TSCA' option SUPG * * 'TOIMP' pour imposer la contrainte * * tangentielle de Marangoni en surface * * 'KOPS' 'GRAD' pour le calcul de cette * * contrainte (éléments SEG2) * * * * AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) * * e-mail : gounand@semt2.smts.cea.fr * * * *************************************************************** * * * VERSION : v1, 09/10/97, version initiale * * HISTORIQUE : v1, 09/10/97, création * * HISTORIQUE : * * HISTORIQUE : * * HISTORIQUE : * * * *************************************************************** * * * Priere de completer la partie HISTORIQUE apres modification * * du jeu de donnees afin de faciliter la maintenance * * * *************************************************************** * * DESCRIPTION DETAILLEE : * * ---- Convection naturelle laminaire + convection * thermocapillaire (Marangoni) sur la surface libre * (supposée plane). * Algorithme semi implicite * opérateur NS (option SUPG) * * phi = 0 * - - - - - - - - - - - - * | | * T1 = 0 | H | T2 = A = L/H * | L | * ------------------------ * phi = 0 * * U = 0 sur les parois sauf sur la surface ou on applique * la condition de Levich : * rho nu (dUx/dz) = (dsigma/dT) (dT/dx). * * La structure de l'écoulement ne dépend que des 4 nombres * adimensionnés suivants : * - le rapport d'allongement A = L / H ; * - le nombre de Prandtl : Pr = nu / kappa ; * - le nombre de Rayleigh : * Ra = (g beta (T2 - T1) h**3) / (kappa nu) * = Gr * (A Pr) Gr : nombre de Grashof * - le nombre de Marangoni : * Ma = -( dsigma/dT (T2 - T1) h) / (rho alpha nu) * = Ma2 * (A Pr) Ma2 : autre définition du * nb de Marangoni ************************************************************* * Références : - Gounand, S. 1997 * Simulation Numérique de cellules * thermoconvectives. * Rapport CEA/DMT 97/357. * - Villers, D. & Platten, J.K. 1991 * Coupled buoyancy and Marangoni convection * in acetone : experiments and comparison * with numerical simulations * J. Fluid Mech. Vol. 234 pp. 487-510. * *************************************************************** * * JEU DE DONNEE : * prg = ('CHAINE' 'Villers & Platten') ; **** Options * court = VRAI : le cas-test s'effectue en une quinzaine * de secondes. * Les paramètres sont les suivants : * A = 4 ; Pr = 4 ; * Ra = 0 ; Ma = 1000 * => une cellule stationnaire * La comparaison s'effectue sur le profil * Ux(y) le long de la médiane verticale. * Il doit se rapprocher de la solution * obtenue pour une cavité infinie, lorsque * l'effet Maragoni est la seule cause du mvt : * * Ux(z) proportionnel à z(z-2/3) * * court = FAUX : maillage raffiné ; on utilise les * paramètres suivants : * A = 12 ; Pr = 4.24 ; * Ra = 4300 ; Ma = 7600 * configuration à une cellule + (1-2) * rouleaux périphériques. * La comparaison s'effectue sur le profil * Ux(y) le long de la médiane verticale. * Il doit se rapprocher des solutions * numériques et expérimentales obtenue par * Villers et Platten (voir références) * environ 2h CPU avec les graphiques * * graph = VRAI : on trace les graphiques (historiques, champs) * On a plus de calculs avec cette option * (fonction de courant, convergence...) * On mettra donc graph = faux pour la fiche * de validation * * inta = VRAI si on est en interactif ; 0 sinon * * discconv : option de discrétisation des termes de * convection pour les équations de Navier-Stokes * choix possibles : 'CENTREE', 'SUPG' ou 'SUPGCC' * court = VRAI ; graph = FAUX ; inta = FAUX ; typelem = 'QUA8' ; discconv = 'SUPG' ; 'SI' ('NON' inta) ; 'OPTION' 'TRAC' 'PS' ; 'OPTION' 'ECHO' 0 ; 'SINON' ; **od = 'TEXTE' 'OPTION DONN 3' ; 'FINSI' ; ************************************************************* **** Définition de quelques procédures : ** -> SUMMARY : affiche un résumé des paramètres ** -> CALCMAR : calcul de la contrainte de Marangoni ** (cisaillement) sur la surface. ** (appelée par 'EXEC' via la table 'EQEX') ** -> MAJHIST : mise à jour d'historiques ** (appelée par 'EXEC' via la table 'EQEX') ** -> TRHIST : tracé des historiques ** -> TRCHAMP : tracé des différents champs incluant ** la fonction de courant (qui est calculee) ** (appelée par 'EXEC' via la table 'EQEX') ** NB : pour simplifier, on ne transmet pas les paramètres à ** SUMMARY. C'est de la mauvaise programmation... ** Les autres procédures sont correctes ** sous toutes réserves * ** SUMMARY 'DEBPROC' SUMMARY ; 'MESSAGE' ('CHAINE' 'Programme : ' prg) ; 'SAUTER' 'LIGNE' ; 'MESSAGE' ('CHAINE' '*** GEOMETRIE :') ; 'MESSAGE' ('CHAINE' ' soient : ' nl 'x' nh '=' (nl '*' nh) ' éléments ' typelem) ; 'MESSAGE' ('CHAINE' ' soient : ' (nl '*' nh '*' 4) ' éléments linéaires') ; 'SAUTER' 'LIGNE' ; 'MESSAGE' ('CHAINE' '*** PHYSIQUE :') ; 'MESSAGE' ('CHAINE' 'Rapport d_aspect : ' ('ENTIER' aspect)) ; 'MESSAGE' ('CHAINE' 'Nombre de Prandtl : ' Pr ) ; 'MESSAGE' ('CHAINE' 'Nombre de Rayleigh : ' ('ENTIER' Ra) ) ; 'MESSAGE' ('CHAINE' 'Nombre de Marangoni : ' ('ENTIER' Ma) ) ; 'MESSAGE' ('CHAINE' 'Nombre de Grashof : ' Gr ) ; 'MESSAGE' ('CHAINE' 'Nombre de Marangon2 : ' Ma2) ; 'MESSAGE' ('CHAINE' 'Température de référence : ' tref ' comprise entre 0 et ' ('ENTIER' aspect)) ; 'SAUTER' 'LIGNE' ; 'MESSAGE' ('CHAINE' '*** NUMERIQUE :') ; 'MESSAGE' ('CHAINE' 'Discrétisation ' discconv ' des termes de convection.') ; 'MESSAGE' ('CHAINE' ' Alfa = ' alpha) ; 'MESSAGE' ('CHAINE' ' Béta = ' beta) ; 'SAUTER' 'LIGNE' ; rvpdt = rv . 'PASDETPS' ; 'MESSAGE' ('CHAINE' '*** TEMPS :') ; 'MESSAGE' ('CHAINE' 'Nb. itérations : ' ((rvpdt . 'NUPASDT') '-' 1)) ; 'MESSAGE' ('CHAINE' 'Temps physique : ' (rvpdt . 'TPS')) ; 'MESSAGE' ('CHAINE' 'Temps CPU : ' ('ENTIER' (thist . 'tpscpu')) ' centième(s) de seconde') ; 'FINPROC' ; ** CALCMAR 'DEBPROC' CALCMAR ; 'ARGUMENT' trx*'TABLE ' ; tinco = (trv . 'INCO') ; $surf = (trx . 'DOMZ') ; clevich = (-1.0D0 '*' (tinco . 'CLEV')) ; tn = (rv . 'INCO' . 'TN') ; * On restreint le champ de température à la surface 'FINPROC' trx ; ** MAJHIST 'DEBPROC' MAJHIST ; 'ARGUMENT' trx*'TABLE ' ; tinco = (trv . 'INCO') ; th = (trv . 'HISTOIRE') ; tp = (trv . 'PASDETPS') ; vit = (tinco . 'UN') ; vitm1 = (tinco . 'UN-1') ; vitref = (tinco . 'UREF') ; npdt = (tp . 'NUPASDT') ; * Calcul de l'erreur relative (norme Linfini) entre deux * champs de vitesse successifs errrel = ('MAXIMUM' (vit '-' vitm1) 'ABS') '/' vitref ; 'MESSAGE' ('CHAINE' 'Pdt : ' npdt ' |Un - Un_1| Linf = ' errrel) ; 'FINSI' ; tinco . 'UN-1' = 'COPIER' vit ; * Mise à jour des différentes listes thl = (th . 'lpdt') ; 'FINPROC' trx ; ** TRHIST 'DEBPROC' TRHIST ; 'ARGUMENT' th*'TABLE ' ; * On enlève le premier indice des listes hltps = 'ENLEVER' (th . 'ltps') 1 ; hlerr = 'ENLEVER' (th . 'lerr') 1 ; thl = (th . 'lpdt') ; hlpdt = 'ENLEVER' (thl . 'min') 1 ; * Et meme les deux premiers pour l'erreur sur les vitesses hltp2 = 'ENLEVER' hltps 1 ; hler2 = 'ENLEVER' hlerr 1 ; * Pas de temps = fn(t) 'DESSIN' evpdt 'MIMA' 'TITR' 'Pas de temps' ; * LOG10(pas de temps) = fn(t) ltco = ('LOG' (hlconv '*' alpha)) '/' ('LOG' 10.0D0) ; ltdi = ('LOG' (hldiff '*' alpha)) '/' ('LOG' 10.0D0) ; ltmi = ('LOG' hlpdt) '/' ('LOG' 10.0D0) ; tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ; tabt . 1 = 'TIRC' ; tabt . 2 = 'TIRL' ; tabt . 3 = 'NOLI' ; tabt . 'TITRE' . 1 = 'CHAINE' 'Pdt convection' ; tabt . 'TITRE' . 2 = 'CHAINE' 'Pdt diffusion' ; * Max |Erreur Linf Vit.| = fn(t) (convergence) 'FINPROC' ; ** TRCHAMP 'DEBPROC' TRCHAMP ; 'ARGUMENT' trx*'TABLE ' ; 'QUITTER' TRCHAMP ; 'FINSI' ; tinco = (trv . 'INCO') ; $dom = (trx . 'DOMZ') ; dom = ($dom . 'MAILLAGE') ; cdom = 'CONTOUR' dom ; ** On calcule tout d'abord la fonction de courant vitesse = (tinco . 'UN') ; rk . 'INCO' = 'TABLE' 'INCO' ; *-*-*-*- A remplacer par EXEC qd ca marchera... EXIC rk ; *-*-*-*- psi = (rk . 'INCO' . 'PSI') ; ** On effectue une affinité si la cavité est trop allongée augmen = ((tinco . 'ASPECT') '>' 6.0D0) ; 'SI' augmen ; dy = 'NOMC' 'UY' (('COORDONNEE' 2 ($dom . 'SOMMET')) 'ET' ('COORDONNEE' 2 ($dom . 'CENTRE'))) 'NATU' 'DISCRET' ; dv = 2.0D0 '*' (dx 'ET' dy) ; svform = 'FORME' ; 'FORME' dv ; 'FINSI' ; ** Puis on trace les différents champs : tphy = (trv . 'PASDETPS' . 'TPS') ; * Vitesses vref = (tinco . 'UREF') ; tphy) ; vv = 'VECTEUR' vitesse (2.0D0 '/' vref) 'UX' 'UY' 'JAUNE' ; 'TRACER' vv cdom 'TITR' titv ; * Fonction de courant 'OPTION' 'ISOV' 'SULI' ; titpsi = ('CHAINE' 'Fonction de courant (SCAL SOMMET) à t = ' tphy) ; * température tn = (tinco . 'TN') ; tphy) ; * Pression * NB : On n'utilise pas 'ELNO' : on dessine une pression * constante sur un élément. pression = (trv . 'PRESSION' . 'PRESSION') ; modelp = 'MODELISER' dom 'THERMIQUE' ; titpres = ('CHAINE' 'Pression (SCAL CENTRE) à t = ' tphy) ; 'TRACER' elemp modelp cdom 'TITR' titpres ; ** On rétablit le rapport d'aspect initial 'SI' augmen ; 'FORME' svform ; 'FINSI' ; 'FINPROC' ; * ** Fin de la définition des procédures ************************************************************** ************************************************************** ** Début du 'main' * **** Définition des constantes * l, h, nl, nh : données pour la boite. * egeom : erreur géométrique pour 'ELIMINATION' * aspect : rapport d'aspect de la boite * nu, g : paramètres du fluide * tg, td : températures sur les murs gauches et droits h = 1.0D0 ; 'SI' court ; nh = 3 ; aspect = 4.0D0 ; 'SINON' ; nh = 15 ; aspect = 12.0D0 ; 'FINSI' ; nl = 'ENTIER' (nh '*' 4) ; l = h '*' aspect ; egeom = 1.0D-4 ; g = (0.D0 -1.D0) ; tg = 0.D0 ; td = aspect ; **** Création des maillages lp = l '/' 2.0D0 ; hp = h '/' 2.0D0 ; mlp = (-1.0D0) '*' lp ; mhp = (-1.0D0 '*' hp) ; pmil = lp hp ; pA = 0.0D0 0.0D0 ; pB = l 0.0D0 ; pC = l h ; pD = 0.0D0 h ; pAB = lp 0.0D0 ; pCD = lp h ; bas = pA 'DROIT' nl pB ; haut = pD 'DROIT' nl pC ; rwall = pB 'DROIT' nh pC ; lwall = pA 'DROIT' nh pD ; mediany = pAB 'DROIT' nh pCD ; mt = 'DALLER' haut rwall bas lwall ; mt = ($mt . 'MAILLAGE') ; 'TASSER' mt ; haut = 'CHANGER' haut SEG2 ; bas = 'CHANGER' bas SEG2 ; lwall = 'CHANGER' lwall SEG2 ; rwall = 'CHANGER' rwall SEG2 ; mediany = 'CHANGER' mediany SEG2 ; cmt = (lwall 'ET' bas 'ET' rwall 'ET' haut) ; 'ELIMINATION' (mt 'ET' bas 'ET' rwall 'ET' haut 'ET' haut2 'ET' lwall 'ET' cmt 'ET' mediany) egeom ; **** Initialisation de la table des historiques * thist . 'tpscpu' = TABTPS.'TEMPS_CPU'.'INITIAL'; * Listes thist . 'lpdt' = 'TABLE' 'LPDT' ; thl = (thist . 'lpdt') ; **** Initialisation des tables rv et rvp * Conditions aux limites : * traitement special pour pA et pB communs respectivement * à lwall-bas et a bas-rwall sinon les temperatures valent * deux fois la valeur qu'on veut leur donner * On utilise 'MANUEL' car 'CLIM' ne prend que les objets de * type 'MAILLAGE' * rv = 'EQEX' rv 'CLIM' 'UN' 'UIMP' (lwall 'ET' rwall 'ET' bas) 0.0D0 'CLIM' 'UN' 'VIMP' (lwall 'ET' rwall 'ET' haut 'ET' bas) 0.0D0 'CLIM' 'TN' 'TIMP' lwall tg 'CLIM' 'TN' 'TIMP' ('MANUEL' 'POI1' pA) (-1.0D0 '*' tg) 'CLIM' 'TN' 'TIMP' rwall td 'CLIM' 'TN' 'TIMP' ('MANUEL' 'POI1' pB) (-1.0D0 '*' td) 'CLIM' 'TN' 'TIMP' bas tbas ; 'SI' graph ; 'FINSI' ; rv . 'INCO' = 'TABLE' 'INCO' ; rv . 'PRESSION' = rvp ; rv . 'HISTOIRE' = thist ; **** Initialisation des inconnues * V -> 0 ; T gradient constant avec tg sur lwall, td sur rwall rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' (tg '+' ((('COORDONNEE' 1 mt) '/' l) '*' (td '-' tg)) ) ; **** Valeurs des paramètres : * ** Physiques * * Pr : Nombre de Prandtl * Ra : Nombre de Rayleign (Gr : Grashof) * Ma : Nombre de Marangoni (Ma2 : autre définition) * tref : température de référence (approx. de Boussinesq) * uref : échelle de vitesse (cf. adimensionnement) * ampvit : facteur d'amplification pour le tracé des vitesses 'SI' court ; Pr = 4.0D0 ; Ra = 0.0D0 ; Ma = 1000.0D0 ; 'SINON' ; Pr = 4.24D0 ; Ra = 4300.0D0 ; Ma = 7600.0D0 ; 'FINSI' ; Gr = Ra '/' (Pr '*' aspect) ; Ma2 = Ma '/' (Pr '*' aspect) ; sMa2 = (Ma2 '**' 0.5D0) ; clpu = 1.0D0 '/' sMa2 ; cbou = Gr '/' Ma2 ; clpt = 1.0D0 '/' (sMa2 '*' Pr) ; clev = 1.0D0 ; uref = sMa2 ; tref = (tg + td) / 2.0D0 ; ampvit = 2.0D0 '/' uref ; * ** Numériques * * nbiter : nombre d'itérations * nptrc : fréquence pour le tracé des champs (.ps ou à l'écran) * fidt : fréquence d'affichage des messages à l'écran * alpha : multiplicateur du pas de temps * beta : paramètre de stabilisation de la pression * pour les éléments MACRO 'SI' court ; nbiter = 250 ; nptrc = 125 ; fidt = 10 ; alpha = 0.9D0 ; beta = 1.0D0 ; 'SINON' ; *nbiter = 10 ; nptrc = 500 ; fidt = 100 ; nbiter = 10000 ; nptrc = 2000 ; fidt = 100 ; alpha = 0.5D0 ; beta = 1.0D0 ; 'FINSI' ; * ** Remplissage des tables * rv . 'INCO' . 'ASPECT' = aspect ; rv . 'INCO' . 'CLPU' = clpu ; rv . 'INCO' . 'CBOU' = g '*' cbou ; rv . 'INCO' . 'TREF' = tref ; rv . 'INCO' . 'UREF' = uref ; rv . 'INCO' . 'CLPT' = clpt ; rv . 'INCO' . 'CLEV' = clev ; rv . 'ALFA' = alpha ; rv . 'PRESSION' . 'BETA' = beta ; rv . 'FIDT' = fidt ; rv . 'NPTRC' = nptrc ; rv . 'ITMA' = nbiter ; * ** *** **** Exécution SUMMARY ; 'SI' inta ; 'OPTION' 'DONN' 5 ; 'FINSI' ; EXEC rv ; thist . 'tpscpu' = (thist . 'tpscpu') '+' TABTPS.'TEMPS_CPU'.'INITIAL'; 'SI' graph ; TRHIST thist ; 'FINSI' ; **** *** ** * vit = (rv . 'INCO' . 'UN') ; ** Le cas-test donne-t-il un résultat correct ?? 'OPTION' 'ECHO' 0 ; 'SI' court ; 'OPTION' 'ECHO' 1 ; * ** Vérification : ** La composante horizontale de la vitesse le long de la ** médiane verticale doit etre prop. à z(z-2/3) * cfprop = (cfpoly . 2) ; cflin = (cfpoly . 1) '/' cfprop ; cfcte = (cfpoly . 0) '/' cfprop ; cflana = -2.0D0 '/' 3.0D0 ; * Résultat obtenu le 14/10/97 : cfpref = -.3128910770680292D+01 ; critere1 = 'ABS' ((cfprop '-' cfpref) '/' cfpref) ; critere2 = 'ABS' ((cflin '-' cflana) '/' cflana) ; critere3 = 'ABS' cfcte ; * Résultats obtenus le 14/10/97 : * cflref = -.6784204323293079D+00 ; * cfcref = .5876882831320513D-02 ; * correspondant à : * critere1 = 2.83861D-16 * critere2 = 1.76306D-02 * critere3 = 5.87688D-03 limite1 = 1.D-07 ; limite2 = 2.D-02 ; limite3 = 1.D-02 ; 'SI' graph ; tabg = 'TABLE' ; tabg . 'TITRE' = 'TABLE' ; tabg . 1 = 'NOLI MARQ CROI' ; tabg . 'TITRE' . 1 = 'CHAINE' 'Résultat Castem2000' ; tabg . 'TITRE' . 2 = 'CHAINE' 'Parabole théorique' ; evpoly = ('COULEUR' evpoly 'JAUN') ; titg = 'CHAINE' 'Ux(z) sur la médiane verticale' ; 'FINSI' ; * Tps CPU (le 10/10/97) ; 1797 centièmes de secondes * (court = VRAI ; graph = FAUX ; inta = FAUX ;) thist .'tpscpu' = (thist . 'tpscpu') '+' TABTPS.'TEMPS_CPU'.'INITIAL'; * ** Affichage des messages et des erreurs éventuelles * 'OPTION' 'ECHO' 0 ; 'SAUTER' 2 'LIGNE' ; 'MESSAGE' 'Debriefing :' ; 'MESSAGE' '------------' ; 'MESSAGE' 'Comparaison de ux(z) sur la médiane verticale à : ' ; 'MESSAGE' 'alpha (z**2 - 2/3 z + 0)' ; 'SAUTER' 'LIGNE' ; 'MESSAGE' ('CHAINE' 'Erreur/Limite sur le coefficient alpha :') ; 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere1 ' / ' limite1) ; 'MESSAGE' ('CHAINE' 'Erreur/Limite sur le coefficient de z (2/3)') ; 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere2 ' / ' limite2) ; 'MESSAGE' ('CHAINE' 'Erreur/Limite sur le coefficient constant (0)') ; 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere3 ' / ' limite3) ; 'MESSAGE' ('CHAINE' 'Temps CPU / Temps CPU (10/10/97) : ') ; 'MESSAGE' ('CHAINE' ('ENTIER' (thist . 'tpscpu')) ' / ~1800' ' centième(s) de secondes') ; 'SI' ('OU' ('OU' (critere1 '>' limite1) (critere2 '>' limite2)) (critere3 '>' limite3)) ; 'ERREUR' 5 ; 'FINSI' ; 'MESSAGE' 'Tout s_est bien passé' ; 'SINON' ; 'OPTION' 'ECHO' 1 ; ** ** Vérification pour le cas long : ** on compare ux(z) sur la médiane avec des résultats ** experimentaux (attention, l'expérience n'est pas 2D => ** vitesse plus faible a cause des parois latérales) ** et une autre simulation numérique (effectuée avec les ** memes parametres que la notre).. ** Voir l'article de Villers et Platten pour plus de précisions ** uxexp = 'PROG' 0.0D0 0.6D0 0.75D0 0.95D0 1.05D0 0.95D0 0.8D0 0.4D0 -0.4D0 -1.0D0 -2.0D0 -2.5D0 -3.6D0 ; zpas = (2.5D0 '/' 32) ; uxsvp = 'PROG' 0.0D0 0.22D0 0.4D0 0.6D0 0.75D0 0.86D0 0.98D0 1.05D0 1.13D0 1.15D0 1.16D0 1.15D0 1.13D0 1.08D0 1.02D0 0.92D0 0.81D0 0.7D0 0.55D0 0.4D0 0.2D0 0.01D0 -0.2D0 -0.43D0 -0.7D0 -0.95D0 -1.2D0 -1.5D0 -1.8D0 -2.15D0 -2.5D0 -2.85D0 -3.25D0 ; * * On remet l'évolution obtenu avec C2000 en dimensionné * * mu à 20°C densité nuacet = 0.3265D-3 '/' 870.0D0 ; lref = 2.5D0 ; uref = ((nuacet '*' 1.0D6) '/' lref) '*' sMa2 ; zdim = ('EXTRAIRE' evvm 'ABSC') '*' lref ; * Comparaison des profils : * on les remet sur zdim par interpolation linéaire echux = 'MINIMUM' lmux ; critere1 = ('MAXIMUM' (uxdim '-' uxvpi) 'ABS') '/' echux ; critere2 = ('MAXIMUM' (uxdim '-' uxexpi) 'ABS') '/' echux ; * Résultats obtenus le 15/10/97 : * critere1 = .7530548488495176D-01 * critere2 = .3228687516012702D+00 limite1 = 0.08D0 ; limite2 = 0.35D0 ; * trace eventuel 'SI' graph ; titd = 'CHAINE' 'Profil Ux(z) sur la médiane verticale' ; tabd = 'TABLE' ; tabd . 'TITRE' = 'TABLE' ; tabd . 'TITRE' . 1 = 'CHAINE' 'Expérience' ; tabd . 'TITRE' . 2 = 'CHAINE' 'Numérique (V&P)' ; tabd . 'TITRE' . 3 = 'CHAINE' 'Exp. (interpolé)' ; tabd . 'TITRE' . 4 = 'CHAINE' 'V&P (interpolé)' ; tabd . 'TITRE' . 5 = 'CHAINE' 'Castem 2000' ; 'FINSI' ; * Tps CPU (le 10/10/97) ; 7043 secondes * (court = FAUX ; graph = VRAI ; inta = FAUX ;) thist .'tpscpu' = (thist . 'tpscpu') '+' TABTPS.'TEMPS_CPU'.'INITIAL'; * ** Affichage des messages et des erreurs éventuelles * 'OPTION' 'ECHO' 0 ; 'SAUTER' 2 'LIGNE' ; 'MESSAGE' 'Debriefing :' ; 'MESSAGE' '------------' ; 'MESSAGE' 'Comparaison de ux(z) sur la médiane verticale' ; 'SAUTER' 'LIGNE' ; 'MESSAGE' 'par rapport à la simulation numérique de V&P' ; 'MESSAGE' 'Erreur / Limite :' ; 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere1 ' / ' limite1) ; 'SAUTER' 'LIGNE' ; 'MESSAGE' 'par rapport à l_expérience de V&P' ; 'MESSAGE' 'Erreur / Limite :' ; 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere2 ' / ' limite2) ; 'SAUTER' 'LIGNE' ; 'MESSAGE' ('CHAINE' 'Temps CPU / Temps CPU (15/10/97) (moy2 queue) : ') ; 'MESSAGE' ('CHAINE' ('ENTIER' ((thist . 'tpscpu') '/' 100.0D0)) ' / ~7040' ' secondes') ; 'SI' ('OU' (critere1 '>' limite1) (critere2 '>' limite2)) ; 'ERREUR' 5 ; 'FINSI' ; 'MESSAGE' 'Tout s_est bien passé' ; 'FINSI' ; SUMMARY ; 'OPTION' 'ECHO' 1 ; 'SI' inta ; 'OPTION' 'DONN' 5 ; 'FINSI' ; 'FIN' ; * ** Fin du 'main' **************************************************************
© Cast3M 2003 - Tous droits réservés.
Mentions légales