Télécharger pod_flui_cyl.dgibi
* fichier : pod_flui_cyl.dgibi ************************************************************************ * NOM : pod_flui_cyl * DESCRIPTION : Determination de bases POD issues d'un calcul CFD * d'ecoulement fluide autour d'un cylindre fixe puis * projection des resultats CFD sur les vecteurs de base ************************************************************************ SMALL = 1.E-5 ; * * * Affichages graphiques ? GRAPH = FAUX ; * * Frequence de la sortie VTK (le dossier "pod_flui_cyl" doit exister) * [0 => PAS DE SORTIE VTK] FVTK = 0 ; * * * * ======================== * PARAMETRES DU CALCUL CFD * ======================== * * Refaire le calcul CFD ? * (sinon, on restitue le resultat sauvegarde des que NOSAUV=FAUX) RECALC = VRAI ; * Sauvegarde en fin de calcul ? NOSAUV = VRAI ; * * Diametre du tube DIATUB = 0.01 ; * Hauteur totale du domaine DIADOM = 0.03 ; * Longueur du domaine amont LAMONT = 0. ; * Longueur du domaine aval LAVAL = 0.04 ; * Nombre d'elements sur un huitieme de cylindre NBELEM = 2 ; * * Nombre de Reynolds RE = 100 ; * Type d'elements finis utilises DISCR = 'QUAF' ; KPRES = 'CENTREP1' ; * Decentrement DCENTR = 'SUPG' ; KCMD = 0. ; * Formulation des contraintes visqueuses ('FTAU' ou 'MUCONS') CVISQ = 'MUCONS' ; * * Pas de temps DT = 0.01 ; * Duree totale TFINAL = 3. ; * Instant a partir duquel les objets CHPOINT sont sauvegardes TSAUV = 2. ; * Duree (en secondes) de la perturbation UY en entree du domaine * [0. => PAS DE PERTURBATION] TPERTURB = 0.2 ; * Intensite (en % relativement a la vitesse axiale) IPERTURB = 0.1 ; * * * ============================= * PARAMETRES DU POST-TRAITEMENT * ============================= * * Nombre de modes POD demandes NBMODES = 5 ; * * * ************************************************************************ ************************************************************************ * * * SI (NON RECALC) ; REST ; * SINON ; * * * +-------------------------------------------------------------------+ * | | * | C R E A T I O N D U M A I L L A G E | * | | * +-------------------------------------------------------------------+ * * * P6 P5 * ############################### A * # # | * # # # | * # # # | * # # # | * # # # | * # # # | * # # # | DIATUB / 2 * ###### # # | * P3 ### # # | * ## # # | * # # | * P2 # # | * # # | * # # | * # ################## V * P0 P1 P4 * * <-----------> * RAYTUB * * * * * P23 P22 P5 = P13 P12 * **************************************************** * * * * * * * * * * * * * ***** * * * * * * * * * * * * * * * * * * * * * * * * * * ***** * * * * * * * * * * * * * **************************************************** * P20 P21 P10 P11 * * <----------> <---------------------> * LAMONT LAVAL * * SI (DIADOM <EG (1.1*DIATUB)) ; ERRE 'LE CYLINDRE EST TROP GROS, DONNEES D'$$'ENTREE INVALIDES' ; FIN ; FINS ; * RAYTUB = 0.5*DIATUB ; RAYDOM = 0.5*DIADOM ; * P0 = 0. 0. ; P1 = RAYTUB 0. ; P2 = (RAYTUB RAYTUB)*(0.5**0.5) ; P3 = 0. RAYTUB ; P4 = RAYDOM 0. ; P5 = RAYDOM RAYDOM ; P6 = 0. RAYDOM ; * * * * ********************************************************************* * M A I L L A G E D U T U B E * ********************************************************************* * * * On fait des mailles presque carrees autour du cylindre DINI1 = 0.8 * (0.25*PI*RAYTUB / NBELEM) ; DFIN1 = 0.8 * (RAYDOM / NBELEM) ; * DOMTOT = DOMCYL ; * * * * ********************************************************************* * M A I L L A G E D U D O M A I N E A V A L * ********************************************************************* * SI (LAVAL > 0.) ; P10 = RAYDOM (-1.*RAYDOM) ; P11 = (RAYDOM + LAVAL) (-1.*RAYDOM) ; P12 = (RAYDOM + LAVAL) RAYDOM ; P13 = RAYDOM RAYDOM ; * * On fait des mailles presque carrees dans le domaine aval NBEL2 = ENTI 'SUPERIEUR' (LAVAL / (1.2 * (RAYDOM / NBELEM))) ; NBEL4 = 2*NBELEM ; DOMTOT = DOMTOT ET DOMAVAL ; SINON ; P11 = RAYDOM (-1.*RAYDOM) ; P12 = RAYDOM RAYDOM ; FINS ; * * * * ********************************************************************* * M A I L L A G E D U D O M A I N E A M O N T * ********************************************************************* * SI (LAMONT > 0.) ; P20 = (-1.*RAYDOM - LAMONT) (-1.*RAYDOM) ; P21 = (-1.*RAYDOM) (-1.*RAYDOM) ; P22 = (-1.*RAYDOM) RAYDOM ; P23 = (-1.*RAYDOM - LAMONT) RAYDOM ; * * On fait des mailles presque carrees dans le domaine amont NBEL2 = ENTI 'SUPERIEUR' (LAMONT / (1.2 * (RAYDOM / NBELEM))) ; NBEL4 = 2*NBELEM ; DOMTOT = DOMTOT ET DOMAMONT ; SINON ; P20 = (-1.*RAYDOM) (-1.*RAYDOM) ; P23 = (-1.*RAYDOM) RAYDOM ; FINS ; * * * * ********************************************************************* * E L E M E N T S P O U R L E S F L U I D E S * ********************************************************************* * ELIM DOMTOT SMALL ; * * PAROIS = PAROIB ET PAROIH ; * * Trace du domaine et des frontieres SI GRAPH ; FINS ; * * * * +-------------------------------------------------------------------+ * | | * | C A L C U L D E L ' E C O U L E M E N T | * | | * +-------------------------------------------------------------------+ * * Determination automatique des parametres de l'ecoulement RHO = 1. ; MU = 1.E-5 ; NU = MU/RHO ; U0 = RE*NU/DIATUB ; * * * * ********************************************************************* * C O N S E R V A T I O N D E L A Q U A N T I T E D E M V T * ********************************************************************* * * Creation de la table pour EXEC 'ZONE' $DOMTOT 'OPER' 'NS' 'RHO' 'UN' 'MU' 'INCO' 'UN' 'OPTI' 'EFM1' 'IMPL' 'CENTREE' 'ZONE' $DOMTOT 'OPER' 'DFDT' 'RHO' 'UNM' 'DT' 'INCO' 'UN' ; * * Param\E8tres du solveur pour la vitesse RV.'NITER' = 1 ; RV.'OMEGA' = 1. ; RV.'FIDT' = 100 ; RV.'METHINV'.'TYPINV' = 1 ; RV.'METHINV'.'IMPINV' = 0 ; RV.'METHINV'.'NITMAX' = 700 ; RV.'METHINV'.'PRECOND' = 3 ; RV.'METHINV'.'ILUTLFIL' = 4 ; RV.'METHINV'.'ILUTDTOL' = 0. ; RV.'METHINV'.'RESID' = 1.E-9 ; RV.'METHINV'.'FCPRECT' = 1 ; RV.'METHINV'.'FCPRECI' = 1 ; * * * * ********************************************************************* * C O N S E R V A T I O N D E L A M A S S E * ********************************************************************* * ; * * Param\E8tres du solveur pour la pression RVP.'METHINV'.'TYPINV' = 1 ; RVP.'METHINV'.'IMPINV' = 0 ; RVP.'METHINV'.'NITMAX' = 800 ; RVP.'METHINV'.'PRECOND' = 3 ; RVP.'METHINV'.'ILUTLFIL' = 10 ; RVP.'METHINV'.'ILUTDTOL' = 0. ; RVP.'METHINV'.'RESID' = 1.E-10 ; RVP.'METHINV'.'FCPRECT' = 1 ; RVP.'METHINV'.'FCPRECI' = 1 ; * * Traitement du couplage vitesse-pression par projection * * * * ********************************************************************* * C O N D I T I O N S A U X F R O N T I E R E S * ********************************************************************* * * RV = EQEX RV 'CLIM' 'UN' 'UIMP' ENTREE1 U0 'UN' 'UIMP' (PAROIS ET CYLIND) 0. 'UN' 'VIMP' (PAROIS ET CYLIND) 0. ; * * * * ********************************************************************* * C O N D I T I O N S I N I T I A L E S * ********************************************************************* * * RV.'INCO'.'UN' = UN0 ; RV.'INCO'.'UNM' = UN0 ; RV.'INCO'.'PN' = PN0 ; RV.'INCO'.'RHO' = RHO ; RV.'INCO'.'MU' = MU ; RV.'INCO'.'DT' = DT ; * * * * ********************************************************************* * S O R T I E V T K * ********************************************************************* * SI (FVTK > 0) ; FINS ; * FINS ; * DEBP SORT_VTK RX*'TABLE' ; * IPDT1 = RV.'PASDETPS'.'NUPASDT' ; FPDT1 = RX.'ARG1' ; * * Sauvegardes VTK a intervalle regulier QUIT SORT_VTK ; FINS ; * UN1 = RV.'INCO'.'UN' ; SINON ; PN1 = PN0 ; FINS ; TPS1 = RV.'PASDETPS'.'TPS' ; * FINP CHP1 MAT1 ; * SI RECALC ; * * * * ********************************************************************* * S A U V E G A R D E D E S D O N N E E S * ********************************************************************* * * SAUVEGARDE DE L'EVOLUTION DU CHAMP DE VITESSE DANS RV.'INCO'.'HIST' * * SAUVEGARDE DE L'EVOLUTION DE LA VITESSE EN UN POINT DANS RV.'HIST' RV.'NISTO' = 1 ; * * * * ********************************************************************* * P E R T U R B A T I O N I N I T I A L E * ********************************************************************* * SI (TPERTURB > TSAUV) ; 'PERTURBATION EST ACTIVE') ; FIN ; FINS ; * FINS ; * DEBP PERTURB RX*'TABLE' ; * IPDT1 = RV.'PASDETPS'.'NUPASDT' ; TPS1 = RV.'PASDETPS'.'TPS' ; DT1 = RV.'PASDETPS'.'DELTAT' ; TMAX1 = RX.'ARG1' ; AMPL1 = RX.'ARG2' ; * KPERTURB = (TMAX1 > (SMALL*DT1)) ; * * DEBUT DE LA PERTURBATION SI ((IPDT1 EGA 1) ET KPERTURB) ; RV.'CLIM' = RV.'CLIM' + UY1 ; FINS ; * * FIN DE LA PERTURBATION SI ((TPS1 >EG TMAX1) ET KPERTURB) ; RV.'CLIM' = RV.'CLIM' - UY1 ; FINS ; * FINP CHP1 MAT1 ; * SI RECALC ; * * * * ********************************************************************* * E X E C U T I O N * ********************************************************************* * NBITER = ENTI 'SUPERIEUR' (TFINAL / DT) ; * * RV.'ITMA' = NBITER ; * EXEC RV ; * SI (NON NOSAUV) ; GRAPH1 = GRAPH ; FVTK1 = FVTK ; RECALC1 = RECALC ; NBMODES1 = NBMODES ; OUBL GRAPH ; OUBL FVTK ; OUBL RECALC ; OUBL NBMODES ; SAUV ; GRAPH = GRAPH1 ; FVTK = FVTK1 ; RECALC = RECALC1 ; NBMODES = NBMODES1 ; FINS ; * FINS ; * * * * * +-------------------------------------------------------------------+ * | | * | P O S T - T R A I T E M E N T | * | | * +-------------------------------------------------------------------+ * * * * ====================================================== * DETERMINATION DE LA FREQUENCE DU SILLAGE DE VON KARMAN * ====================================================== * * T_VK = 1./F_VK ; * LIPOD1 = ENTI 'PROC' LIPOD1 ; * * * * ========================================== * GRAPHIQUE DES DIFFERENTES PHASES DU CALCUL * ========================================== * NVKSIMU = TFINAL/T_VK ; NVKFORC = TPERTURB/T_VK ; NVKSAUV = (TFINAL - TSAUV) / T_VK ; * * * * ON VA DECOMPOSER EVOL1 EN 3 OU 4 SOUS-PARTIES : * 1) INTERVALLE OU LES DONNEES SONT SAUVEGARDEES * 2) PAS DE TEMPS RETENUS POUR CALCULER LA BASE POD * 3) INTERVALLE OU L'ECOULEMENT S'ETABLIT APRES LA PERTURBATION * 4) INTERVALLE INITIAL OU L'ECOULEMENT EST PERTURBE (OPTIONNEL) * SI GRAPH ; * NDTFORC = ENTI 'PROC' (TPERTURB / DT) ; * * * SAUVEGARDES TAB1 . 'INITIAL' . 1 = NBITER - NDTSAUV + 1 ; * * SNAPSHOTS TAB1 . 'INITIAL' . 2 = NBITER - NDTSNAP + 1 ; * * APRES PERTURBATION TAB1 . 'INITIAL' . 3 = NDTFORC ; * * AVANT PERTURBATION SI (NDTFORC > 0) ; TAB1 . 'FINAL' . 4 = NDTFORC ; FINS ; * * DESS EVTOT 'TITX' 'TEMPS (S)' 'TITY' 'VITESSE (M/S)' 'POSY' 'EXCE' 'GRIL' 'GRIS' 'LEGE' TAB1 ; FINS ; * * * * ==================== * CALCUL DES MODES POD * ==================== * OPTI 'INCO' LMO1 LMO1 ; * * LVITE1/LTEMP1 => tous les pas de temps sauvegardes * * ON ENLEVE LA VALEUR MOYENNE REPE KK NBTPS1 ; FIN KK ; CHPTOT = CHPTOT * (1./NBTPS1) ; REPE KK NBTPS1 ; FIN KK ; * * LSNAP1/LTEMP2 => les pas de temps pour la POD (derniere periode slt.) * * * CREATION D'UNE MATRICE MASSE CONSISTENTE * A = ININLIN 1 1 0 0 2 ; * A . 'VAR' . 1 . 'NOMDDL' = MOTS '1UN' ; * A . 'VAR' . 1 . 'DISC' = 'QUAF' ; * A . 1 . 1 . 0 = 'LECT' ; * B = ININLIN 1 1 0 0 2 ; * B . 'VAR' . 1 . 'NOMDDL' = MOTS '1UN' ; * B . 'VAR' . 1 . 'DISC' = 'QUAF' ; * B . 1 . 1 . 0 = 'LECT' ; * RIG1A = NLIN 'QUAF' DOMTOT A B 'GAU4' ; * A . 'VAR' . 1 . 'NOMDDL' = MOTS '2UN' ; * B . 'VAR' . 1 . 'NOMDDL' = MOTS '2UN' ; * RIG1B = NLIN 'QUAF' DOMTOT A B 'GAU4' ; * MASS1 = RIG1A ET RIG1B ; * MASS1 = CHAN MASS1 'INCO' LMO1 LMO1 LMO1 LMO1 'SYME' ; * * CREATION D'UNE MATRICE MASSE DIAGONALE * * CALCUL DE LA BASE AVEC DIFFERENTES METHODES * * NORMALISATION EUCLIDIENNE * * * * ========================================== * VISUALISATION DES MODES ET VALEURS PROPRES * ========================================== * ************************************************************************ * TAB2LIST = EXTRAIT DE LA TABLE TAB1 DE SOUS-TYPE 'BASE_MODALE' LE * LISTCHPO DES NB1 PREMIERS VECTEURS PROPRES ET LE LISTREEL * DES NB1 PREMIERES VALEURS PROPRES DEBP TAB2LIST TAB1*'TABLE' NB1*'ENTIER' ; REPE K NB1 ; VEC1 = TAB1.'MODES'.&K.'DEFORMEE_MODALE' ; VAL1 = (2.*PI*TAB1.'MODES'.&K.'FREQUENCE') ** 2 ; LVEC1 = LVEC1 ET VEC1 ; LVAL1 = LVAL1 ET VAL1 ; FIN K ; FINP LVEC1 LVAL1 ; ************************************************************************ * LMOD1 LAMB1 = TAB2LIST TPOD1 NBMODES ; LMOD2 LAMB2 = TAB2LIST TPOD2 NBMODES ; LMOD3 LAMB3 = TAB2LIST TPOD3 NBMODES ; LMOD4 LAMB4 = TAB2LIST TPOD4 NBMODES ; * MESS ' ' ; MESS ' ' ; MESS ' ' ; MESS ' ' ; * * SI GRAPH ; REPE K NBMODES ; THIST.'NOMS'.&K = &K ; FIN K ; * * 'TITX' ' ' 'TITY' 'VALEUR PROPRE' 'LOGY' 'YBOR' YMIN1 YMAX1 'XBOR' 0. NBMODES 'XGRA' NBMODES * 'TITX' ' ' 'TITY' 'VALEUR PROPRE' 'LOGY' 'YBOR' YMIN2 YMAX2 'XBOR' 0. NBMODES 'XGRA' NBMODES FINS ; * * ************************************************************************ * VISU_POD = AFFICHAGE GRAPHIQUE DES MODES POD FLUIDES REPE BLOC1 NBMODES ; ' / VAL. PROPRE = ' LAM1) ; FIN BLOC1 ; FINP ; ************************************************************************ * SI GRAPH ; VISU_POD '"SNAPSHOTS" MASS1' LMOD1 LAMB1 ; VISU_POD '"CLASSIQUE" MASS1' LMOD2 LAMB2 ; VISU_POD '"SNAPSHOTS" ' LMOD3 LAMB3 ; VISU_POD '"SNAPSHOTS" ' LMOD4 LAMB4 ; FINS ; * * * * ================================ * VERIFICATION DE L'ORTHONORMALITE * ================================ * ************************************************************************ * TESTBAS1 = AFFICHE LES PRODUITS SCALAIRES (AVEC OU SANS MATRICE MATR1) * ENTRE LES VECTEURS DE BASE LVEC1 PRIS DEUX A DEUX SI (NON ZRIGI1) ; FINS ; REPE I NVEC1 ; REPE J NVEC1 ; SI ZRIGI1 ; SINON ; FINS ; LPS1 = LPS1 ET XPS1 ; FIN J ; FIN I ; * * TABLO3D NVEC1 NVEC1 LPS1 MTIT1 ; FINP ; ************************************************************************ * * EN THEORIE : (PHI_i,PHI_j)=d_ij SI GRAPH ; TESTBAS1 LMOD1 MASS1 'POD "SNAPSHOTS" MASS1' ; TESTBAS1 LMOD2 MASS1 'POD "CLASSIQUE" MASS1' ; TESTBAS1 LMOD3 'POD "SNAPSHOTS"' ; TESTBAS1 LMOD4 'POD "CLASSIQUE"' ; FINS ; * * * * ============================================= * VERIFICATION DE LA NON-CORRELATION TEMPORELLE * ============================================= * ************************************************************************ * TESTBAS2 = AFFICHE LE COEFFICIENT DE CORRELATION ENTRE LES EVOLUTIONS * TEMPORELLES DES COEFFICIENTS DE PROJECTION PRIS DEUX A DEUX DEBP TESTBAS2 TBAS1*'TABLE' RIGI1/'RIGIDITE' ZERO1*'FLOTTANT' SINON ; FINS ; REPE I NMOD1 ; REPE J NMOD1 ; LPS1 = LPS1 ET COR12 ; FIN J ; FIN I ; * * TABLO2D 'LOGA' NMOD1 NMOD1 LPS1 (CHAI MTIT2 MTIT1) ; FINP LPS1 ; ************************************************************************ * * EN THEORIE (POUR LA POD) : moyt(ALPHA_i(t)*ALPHA_j(t))=d_ij*lambda_i SI GRAPH ; FINS ; * * * * ========================================================== * RECONSTRUCTION DE LA VITESSE AVAL SUR LES N PREMIERS MODES * ========================================================== * * SI GRAPH ; TLEG4 . 3 = 'TIRR' ; TLEG4 . 5 = 'TIRR' ; * PT1 = P4 ; * REPE II NBMODES ; * 'TITX' 'TEMPS (S)' 'TITY' 'Uy AVAL (M/S)' 'POSX' 'EXCE' 'POSY' 'EXCE' 'LEGE' TLEG4 ; FIN II ; FINS ; * * * * ============================================================== * RECONSTRUCTION DE L'ENERGIE CINETIQUE SUR LES N PREMIERS MODES * ============================================================== * NMOD1 = NBMODES + 1 ; NBAR1 = (NMOD1*4) + 1 ; NBAR2 = (3*NBMODES) + 1 ; * REPE II NBMODES ; * * CALCUL DE L'ENERGIE EN FONCTION DU TEMPS REPE IT NBTPS1 ; * * LXVIT1 = LXVIT1 ET XVIT1 ; LXPOD1 = LXPOD1 ET XPOD1 ; LXPOD2 = LXPOD2 ET XPOD2 ; LXPOD3 = LXPOD3 ET XPOD3 ; LXPOD4 = LXPOD4 ET XPOD4 ; FIN IT ; * * SI GRAPH ; 'TITX' 'TEMPS (S)' 'TITY' 'ENERGIE CINET. (J)' 'POSX' 'EXCE' 'POSY' 'EXCE' 'LEGE' TLEG4 ; FINS ; * * INTEGRATION TEMPORELLE ET MISE A JOUR DES HISTOGRAMMES FIN II ; * * * * ====================== * ENERGIE TOTALE CUMULEE * ====================== * * SI GRAPH ; * * GRAPHIQUE 1 * *********** * * NMOD1*'VERT' NMOD1*'OCEA' ; THIS1.'ESPA' = 0. ; THIS1.'NOMS' = TNOM1 ; * * * 'NOMBRE DE MODES RETENUS') 'TITY' 'ENERGIE (%)' 'YBOR' 0. 150. 'XBOR' 0. NBAR1 'XGRA' NBAR1 'YGRA' 10. * * * GRAPHIQUE 2 * *********** * REPE KK NBMODES ; K1 = (&KK - 1) * 3 ; TNOM2.(K1 + 2) = &KK ; TNOM2.(K1 + 3) = &KK ; FIN KK ; * THIS2.'ESPA' = 0. ; THIS2.'NOMS' = TNOM2 ; * * REPE KK NBAR2 ; SI ((&KK >EG 2) ET (&KK <EG 3)) ; ITER KK ; FINS ; FIN KK ; * DESS EVOL2 'NOMBRE DE MODES RETENUS') 'TITY' 'ENERGIE (%)' 'YBOR' 0. 100. 'XBOR' 0. NBAR2 'XGRA' NBAR2 'YGRA' 10. * FINS ; * * MESS 'LE SIGNAL RECONSTRUIT SUR ' NBMODES ' MODES CONTIENT :' ; * * * * * * * +-------------------------------------------------------------------+ * | | * | T E S T S D E V A L I D A T I O N | * | | * +-------------------------------------------------------------------+ * * 1) POD "SNAPSHOTS" ET "CLASSIQUE" DOIVENT DONNER LES MEMES RESULTATS FINS ; FINS ; * * 2) LA RECONSTRUCTION POD SUR 10 MODES DOIT CONTENIR AU MOINS 98% DE * L'ENERGIE SI (XNRJPOD2 < 98.) ; FINS ; * * * FIN ; *
© Cast3M 2003 - Tous droits réservés.
Mentions légales