* fichier : slotevol.dgibi ************************************************************************ ************************************************************************ * Jeu de données GIBIANE: * Description : * ------------- * Ce jeu de données permet la discrétisation éléments finis d'un * écoulement dans une hypothèse de bas Mach. Il s'agit ici de comparer * les résultats obtenus avec CASTEM et ceux issus de l'article * Chenoweth et Paolucci (1986). * * Auteur : Franck PIGEONNEAU. * -------- * * Date : 22/06/99 * ------ *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><> DEBUT DU JEUX DE DONNEES <><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *======================================================================= * DEFINITION DE L'ESPACE PHYSIQUE: *======================================================================= 'OPTION' ECHO 0; COMPLET = FAUX; 'SI' (COMPLET); * Constantes du maillage : * ------------------------ nx = 40; ny = 40; * Nombre d'itérations : nbit = 100; * Nombre d'itérations dans la boucle de température : itmax = 5; 'SINON'; * Constantes du maillage : * ------------------------ nx = 7; ny = 7; * Nombre d'itérations : nbit = 1; * Nombre d'itérations dans la boucle de température : itmax = 1; 'FINSI'; *======================================================================= * DEFINITION DE 'TYPE' DE DISCRETISATION : *======================================================================= DISVIT = 'QUAF'; DISPRE = 'CENTREP1'; *======================================================================= * Définition des constantes du problème *======================================================================= * Eccart de température adimensionné : eps = 0.01; * Precision spatiale pour les 'ELIMINER' : * Rapport d'aspect : A = 1.; * Nombre de Prandtl : pr = 0.71; * Nombre de Rayleigh : ra = 1.E+6; * Inverse du nombre de Froude : invfr = (ra*pr)/(2.*eps); * Coefficients des lois de Sutherland pour la conductibilité thermique * et la viscosité dynamique : sk = 0.648; skp1 = 1.+sk; smu = 0.368; smup1 = 1.+smu; * Rapport des chaleurs spécifiques : gamma = 1.4; * Résilience du fluide : reli = (gamma-1.)/gamma; * Pas de temps : dt = 1.D-3; * Valeur de la précision sur la pression et la température : ecarpre = 1.D-4; * Valeur de la précision sur la vitesse, la pression et la température : ecarmax = 1.D-6; *======================================================================= * MAILLAGE *======================================================================= * Construction des points : * ------------------------- p1 = 0. 0.; p2 = 1. 0.; p3 = 1. (0.5*A); p4 = 1. A; p5 = 0. A; p6 = 0. (0.5*A); p7 = (0.5*A) 0.; p8 = (0.5*A) 1.; p9 = (0.5*A) (0.5*A); * Densités d'éléments : * --------------------- d1 = 0.8; d2 = 0.83; * Construction des lignes : * ------------------------- p1p7 = p1 d (-1*nx) dini d1 dfin d2 p7; p7p2 = p7 d (-1*nx) dini d2 dfin d1 p2; p1p2 = p1p7 et p7p2; p2p3 = p2 d (-1*ny) dini d1 dfin d2 p3; p3p4 = p3 d (-1*ny) dini d2 dfin d1 p4; p4p8 = p4 d (-1*nx) dini d1 dfin d2 p8; p8p5 = p8 d (-1*nx) dini d2 dfin d1 p5; p4p5 = p4p8 et p8p5; p5p6 = p5 d (-1*ny) dini d1 dfin d2 p6; p6p1 = p6 d (-1*ny) dini d2 dfin d1 p1; p3p9 = p3 d (-1*nx) dini d1 dfin d2 p9; p9p6 = p9 d (-1*nx) dini d2 dfin d1 p6; p3p6 = p3p9 et p9p6; p6p3 = 'INVERSE' p3p6; * Construction des contours servant à l'établissement des conditions * ------------------------------------------------------------------ * aux limites : * ------------- lgau = 'INVERSE' (p5p6 et p6p1); ldro = 'INVERSE' (p2p3 et p3p4); lbas = p1p2; lhau = p4p5; * Construction des surfaces : * --------------------------- s1 = 'DALLER' p1p2 p2p3 p3p6 p6p1; s2 = 'DALLER' p6p3 p3p4 p4p5 p5p6; 'ELIMINER' epsi s1 s2; domtot = s1 et s2; * Détermination de la surface extérieure : * ---------------------------------------- surtot = 'CONTOUR' domtot; surtot = 'ENVELOPPE' surtot; *======================================================================= * Création du modèle *======================================================================= * Transformations des éléments du maillage en QUAF : * -------------------------------------------------- £domtot = 'CHANGER' domtot 'QUAF'; £gau = 'CHANGER' lgau 'QUAF'; £dro = 'CHANGER' ldro 'QUAF'; £bas = 'CHANGER' lbas 'QUAF'; £hau = 'CHANGER' lhau 'QUAF'; £surtot = 'CHANGER' surtot 'QUAF'; * Récupération du nombre de noeuds : * ---------------------------------- * Elimination des eventuels points en doubles : * --------------------------------------------- * Création des objets MMODEL : * ---------------------------- * Modèles Navier Stokes : * ----------------------- $domtot = 'MODELE' £domtot 'NAVIER_STOKES' DISVIT; $hau = 'MODELE' £hau 'NAVIER_STOKES' DISVIT; $bas = 'MODELE' £bas 'NAVIER_STOKES' DISVIT; $gau = 'MODELE' £gau 'NAVIER_STOKES' DISVIT; $dro = 'MODELE' £dro 'NAVIER_STOKES' DISVIT; $surtot = 'MODELE' £surtot 'NAVIER_STOKES' DISVIT; * Modèles Thermique : * ------------------ modelt = 'MODELE' domtot 'THERMIQUE'; * ==================== * Calcul des volumes : * ==================== *======================================================================= * CREATION DE LA TABLE DE RESOLUTION * * A l'instant tn-1, on connait TNM1 (la température), PTNM1 (la pression * thermodynamique), MUNM1 (la viscosité dynamique), KNM1 (la conductivité * thermique), RHONM1 (la masse volumique). L'algorithme de résolution * est le suivant: * * 1- Résolution de l'équation d'énergie permettant le calcul de TN; * 2- Détermination de MUN et KN à partir des lois de Sutherland; * 3- Résolution de l'équation portant sur PTN; * 4- Détermination de RHON à l'aide de l'équation d'état; * 5- Calcul de RHOM = 0.5(RHONM1+RHON) et de ZN = Ln(RHOM); * 6- Résolution des équation de Navier-Stokes avec masse volumique * variable. * *======================================================================= * Discrétisation des équations Navier-Stokes à masse volumique variable: * ---------------------------------------------------------------------- * Discrétisation de la dérivée temporelle : 'OPTI' 'EF' 'CENTREE' 'ZONE' $domtot 'OPER' 'DFDT' 'RHOM' 'UN' 'DT' 'INCO' 'UN'; * Discrétisation du terme de convection : RVU = 'EQEX' RVU 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $domtot 'OPER' 'KONV' 'RHOM' 'UN' 'MUN' 'INCO' 'UN'; * Discrétisation du terme de diffusion visqueuse : RVU = 'EQEX' RVU 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $domtot 'OPER' 'LAPN' 'MUN' 'INCO' 'UN'; * Discrétisation du terme source de l'équation de QDM : RVU = 'EQEX' RVU 'OPTI' 'EF' 'CENTREE' 'ZONE' $domtot 'OPER' 'TOIM' 'RHOG' 'INCO' 'UN'; * Discrétisation de la pression : RVU = 'EQEX' RVU 'OPTI' 'EF' 'CENTREE' DISPRE 'ZONE' $domtot 'INCO' 'UN' 'PN'; * Ajout du terme source dans l'équation de continuité : RVU = 'EQEX' RVU 'OPTI' 'EF' 'CENTREE' 'INCOD' DISPRE 'ZONE' $domtot 'OPER' 'FIMP' 'SN' 'INCO' 'PN'; * Conditions aux limites : * ------------------------ RVU = 'EQEX' RVU 'CLIM' 'UN' 'UIMP' (£bas et £hau et £dro et £gau) 0. 'UN' 'VIMP' (£bas et £hau et £dro et £gau) 0. ; * Suppression des modes de pression constante RVU = EQEX RVU 'CLIM' 'PN' 'TIMP' bcp 0.D0 ; * Etablissement de la table des inconues et conditions initiales: * --------------------------------------------------------------- RVU.INCO = 'TABLE' INCO; * Inconnues liées à la table RVU : * Variables associées à la discrétisation des équations de * Navier-Stokes : * Variables complémentaires : RVU.INCO.'PTN' = 1.; RVU.INCO.'STN' = 0.; * Paramètres de la méthode d'inversion : RVU.'METHINV'.TYPINV = 1; RVU.'METHINV'.NITMAX = 600; RVU.'METHINV'.RESID = 1.E-7; * Pas de temps : * -------------- RVU.INCO.'DT'= dt; * Numero du pas de temps : nupadt = 0; *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><>< PROCEDURE BASMACH <><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< *<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>< 'DEBPROC' BASMACH; * ==================================================================== * DEBUT DE LA PROCEDURE BASMACH * ==================================================================== 'ARGUMENT' nbit*'ENTIER'; tps = 0.; 'REPETER' BCLTPS nbit; nupadt= nupadt + 1; mess 'Nombre de pas de temps' nupadt; * Initialisation des champs nécessaire à la résolution de l'équation * sur la température : PTNM1 = RVU.INCO.'PTN'; PT = PTNM1; TNM1 = RVU.INCO.'TN'; TT = TNM1; RHON = RVU.INCO.'RHON'; UM = RVU.INCO.'UNM'; KN = RVU.INCO.'KN'; STN = RVU.INCO.'STN'; 'REPETER' BCLTEMP itmax; * ================================================================= * ETAPE 1 : DETERMINATION DE TN * ================================================================= TN = CAL_TEMP TNM1 RHON UM KN STN; * Détermination de la convergence sur la température : * ---------------------------------------------------- errt = errt*errt; errt = 'CHANGER' 'CHAM' errt modelt 'MASSE'; errtl2 = errtl2**0.5; TT = TN; * ================================================================= * ETAPE 2 : DETERMINATION DE PTN * ================================================================= * Détermination de l'inverse de la température : * ---------------------------------------------- moyinvt = moyinvt/volt; PTN = 1./moyinvt; * Détermination de la convergence sur la pression : * ------------------------------------------------- errpre = 'ABS' (PTN-PT); PT = PTN; * ============================================================== * ETAPE 3 : CALCUL DE KN * ============================================================== * KN = 'KOPS' ('KOPS' skp1 '*' ('KOPS' TNC '**' 1.5)) '/' ('KOPS' * TNC '+' sk); * KN = 'KCHT' $domtot 'SCAL' 'CENTRE' KN; * ============================================================== * ETAPE 4 : DETERMINATIONS DE dpdt ET STN * ============================================================== * Calcul de dpdt : * ---------------- * Calcul du débit volumique : * --------------------------- phi = phi/volt; * Calcul du flux de chaleur : * --------------------------- * NOTA BENE : Attention ici, gradt est un champ par élément. * Transformation du champ par élément en champ point : * Multiplication par KN : * ----------------------- * Extraction des composantes : * Multiplication de chaque composante par KN : * -------------------------------------------- * Calcul de la div(KN GRAD T) : * ----------------------------- * 1. Composante suivant x : * ------------------------- * Extraction de la composante suivant x du gradient : * 2. Composante suivant y : * ------------------------- * Extraction de la composante suivant y du gradient : * 3. Détermination de la divergence par sommation : * ------------------------------------------------- div = UX,X+UY,Y; * Calcul de dpdt/gamma par intégration de div : * --------------------------------------------- dpdtgm1 = dpdtgm1/volt; dpdt = (dpdtgm1*gamma) + ((gamma*PTN)*phi); * Détermination du terme source de l'équation de la chaleur : * ----------------------------------------------------------- STN = (reli*dpdt); * ============================================================== * ETAPE 5 : DETERMINATION DE RHON * ============================================================== * Test de la convegence dans la boucle de température : errmax = 'MAXIMUM' erregl; mess 'L erreur est de ' errmax; 'SI' (errmax < ecarpre); 'QUITTER' BCLTEMP; 'FINSI'; 'FIN' BCLTEMP; * Détermination de la convergence sur la température : * ---------------------------------------------------- errt = errt*errt; errt = 'CHANGER' 'CHAM' errt modelt 'MASSE'; errtl2 = errtl2**0.5; * Détermination de la convergence sur la pression : * ------------------------------------------------- errpre = 'ABS' (PTN-PTNM1); * Sauvegarde pour l'itération temporelle suivante : RVU.INCO.'TN' = TN; RVU.INCO.'KN' = KN; RVU.INCO.'PTN' = PTN; RVU.INCO.'STN' = STN; mess 'La pression est égale à ' PTN; * ==================================================================== * ETAPE 6 : DETERMINATIONS DE RHOM et RHOG * ==================================================================== RHONM1 = RVU.INCO.'RHON'; RVU.INCO.'RHON' = RHON; * Calcul de la masse volumique moyenne entre les instants tn et tn-1 : RHOM = 0.5*(RHON+RHONM1); * Détermination du terme source de l'équation de QDM : (RHGX ET RHGY); * ==================================================================== * ETAPE 7 : DETERMINATION DU TERME SOURCE SN DE * L'EQUATION DE CONTINUITE * ==================================================================== * Calcul de la dérivée logarithmique de PTN divivée par gamma : * ------------------------------------------------------------- dlnpdt = dpdtgm1/PTN; * Calcul de la -div(KN GRAD T)/PTN : * ---------------------------------- div = div/(-1.*PTN); * Création du CHAML dlnpdt : dlnpdt = 'CHANGER' 'CHAM' dlnpdt modelt 'MASSE'; * Calcul de la dlnpdt - div(KN GRAD T)/PTN : * ------------------------------------------ div = div + dlnpdt; * Changement de div de CHAML en 'CHPO' : * Application de div sur le support du modèle Navier Stokes : * ==================================================================== * ETAPE 8 : CALCUL DE MUN * ==================================================================== * MUN = 'KOPS' ('KOPS' (pr*smup1) '*' ('KOPS' TNC '**' 1.5)) '/' * ('KOPS' TNC '+' smu); * RVU.INCO.'MUN' = 'KCHT' $domtot 'SCAL' 'CENTRE' MUN; * ==================================================================== * ETAPE 9 : RESOLUTION DES EQUATIONS DE NAVIER-STOKES * ==================================================================== EXEC RVU; * ==================================================================== * ETAPE 10 : CALCUL DE UNM ET SAUVEGARDE DE UNM1 * ==================================================================== UN = RVU.INCO.'UN'; UNM1 = RVU.INCO.'UNM1'; UNM = 0.5*((3.*UN)-UNM1); * Calcul de la convergence sur la vitesse : DUNS = 'CHANGER' 'CHAM' DUNS modelt 'MASSE'; errvl2 = errvl2**0.5; * Sauvegarde des champs par points dans le liste d'inconnues de RVU : * Incrémentation du pas de temps : tps = tps + RVU.INCO.'DT' ; RVU.INCO.'TPS' = RVU.INCO.'TPS' et tt; * Création de la liste de réels regroupant l'ensemble des erreurs * --------------------------------------------------------------- * sur la température et sur la pression : * --------------------------------------- errmax = 'MAXIMUM' erregl; 'SI' (errmax < ecarmax); mess 'L état stationnaire est atteint.'; 'QUITTER' BCLTPS; 'FINSI'; 'FIN' BCLTPS; * ==================================================================== * FIN DE LA PROCEDURE BASMACH * ==================================================================== 'FINPROC'; 'DEBPROC' CAL_TEMP; * ==================================================================== * DEBUT DE LA PROCEDURE TEMPERATURE * ==================================================================== 'ARGUMENT' TNM1*'CHPOINT' RHON*'CHPOINT' UM*'CHPOINT' KN*'CHPOINT' STN*'FLOTTANT'; * ============================================= * Discrétisation de l'équation sur la chaleur : * ============================================= * Discrétisation de la dérivée temporelle : * ----------------------------------------- 'OPTI' 'EF' 'CENTREE' 'ZONE' $domtot 'OPER' 'DFDT' 'RHON' 'TNM1' 'DT' 'INCO' 'TN'; * Discrétisation du terme de convection : * --------------------------------------- RVT = 'EQEX' RVT 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $domtot 'OPER' 'KONV' 'RHON' 'UM' 'KN' 'INCO' 'TN'; * Discrétisation du terme de diffusion : * -------------------------------------- RVT = 'EQEX' RVT 'OPTI' 'EF' 'CENTREE' 'IMPL' 'ZONE' $domtot 'OPER' 'LAPN' 'KN' 'INCO' 'TN'; * Discrétisation du terme source : * -------------------------------- RVT = 'EQEX' RVT 'OPTI' 'EF' 'ZONE' $domtot 'OPER' 'FIMP' 'STN' 'INCO' 'TN'; * Discrétisation de la condition au limite de type Neumann sur les * ---------------------------------------------------------------- * parois supérieure et inférieure : * --------------------------------- RVT = 'EQEX' RVT 'OPTI' 'EF' 'ZONE' ($bas et $hau) 'OPER' 'FIMP' 0. 'INCO' 'TN'; * Conditions aux limites sur l'équation de la chaleur : * ----------------------------------------------------- RVT = 'EQEX' RVT 'CLIM' 'TN' 'TIMP' £gau eps 'TN' 'TIMP' £dro (-1.*eps); * Etablissement de la table inco relative à RVT : * ----------------------------------------------- RVT.INCO = 'TABLE' INCO; RVT.INCO.'TNM1' = TNM1; RVT.INCO.'KN' = KN; RVT.INCO.'STN' = STN; RVT.INCO.'RHON' = RHON; RVT.INCO.'UM' = UM; RVT.INCO.'DT' = dt; *======================================================================= * RESOLUTION DE L'EQUATION SUR LA TEMPERATURE *======================================================================= EXEC RVT; TN = RVT.INCO.'TN'; *======================================================================= * FIN DE LA PROCEDURE TEMPERATURE *======================================================================= 'FINPROC' TN; *======================================================================= * EXECUTION DE LA RESOLUTION *======================================================================= BASMACH nbit; * 'FIN' de jeux de données: fin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales