* POSTVIBR PROCEDUR BP208322 22/02/15 21:15:01 11284 *======================================================================= * * POSTVIBR * VISUalisation selon le mot cle : * 'TABL' : ecrit le tableau des donnees d'une base modale * 'DEFO' : trace les deformees modales * 'DEF0' : trace du maillage non deforme * 'VTK' : sortie du maillage + deformees * 'LIST' : creation des listchpo des deformees, des listreel des * frequences, des masses generalisees... * 'MAIL' : creation du maillage des point_repere * creation : BP 06/01/2015 * *======================================================================= * TBAS1 : table de type BASE_MODALE ou LIAISONS_STATIQUES * . MODES . i . 'ISOVALEUR' : si on veut une isovaleur personnalisee * LMOC1 : mots-cles definissant les actions a produire * TOPT1 : table d'options contenant : * . 'LISTE_MODES' : liste des modes a traiter * . 'MAILLAGE' : maillage sur lequel tracer les deformees * . 'TITRE' : debut de titre lors du trace des deformees * . 'LEGENDES' : legendes a ajouter a la fin du titre * lors du trace des deformees * . 'FICHIER_VTK' : repertoire + nom de fichier de sortie VTK * . 'MAILLAGE_2' : maillage supplementaire a utiliser (ex: ARET) * . 'MAILLAGE_VECTEUR' : maillage support de vecteur a afficher * . 'AMPLIFICATION_RELATIVE': valeur de l'amplification relative de la deformee (5% par defaut) * . 'OPTIONS_TRAC': liste des options a passer a TRAC (CHAINE) *======================================================================= * VERIF et RECUP DES DONNEES D'ENTREE *======================================================================= * TABLE DES MODES * --------------- MESS 'LA TABLE D ENTREE DOIT AVOIR UN SOUSTYPE !'; FINSI; FLBMOD = EGA TBAS1 . 'SOUSTYPE' 'BASE_DE_MODES'; FLMODA = EGA TBAS1 . 'SOUSTYPE' 'BASE_MODALE'; FLSTAT = EGA TBAS1 . 'SOUSTYPE' 'LIAISONS_STATIQUES'; SI ((NON FLBMOD) ET (NON FLMODA) ET (NON FLSTAT)); MESS 'LA TABLE D ENTREE DOIT ETRE DE SOUSTYPE '; 'BASE_DE_MODES ou BASE_MODALE ou LIAISONS_STATIQUES !'; FINSI; SI (FLMODA); TMOD1 = TBAS1 . 'MODES'; SI (NEG TMOD1 . 'SOUSTYPE' 'BASE_DE_MODES'); MESS 'L INDICE MODES DE LA TABLE D ENTREE DOIT ETRE DE SOUSTYPE ' 'BASE_DE_MODES !'; FINSI; SINON; TMOD1 = TBAS1; FINSI; SI (nmod1 < 1); MESS 'ABSENCE DE MODES !'; FINSI; nbou1 = nmod1; * s'agit-il de modes complexes calcules par VIBC ? * LISTE DES MOTS-CLES * ------------------- * valeurs par defaut FINSI; * logiques * attention DEF0 avec "zero" et pas DEFO avec un "o" * TABLE DES OPTIONS * ----------------- * valeurs par defaut MESH1 = TMOD1 . 'MAILLAGE'; FINSI; * ficvtk = mot 'VTK/DEFORMEE_MODALE'; * on recupere tout ce qu'on peut si la table existe vraiment FLOPT1 = FAUX; FMESH2 = FAUX; FMESHvect = FAUX; FLLEGE = FAUX; xamp0 = 0.05; SI FLOPT1; LENT1 = TOPT1 . 'LISTE_MODES'; FINSI; MESH1 = TOPT1 . 'MAILLAGE'; FINSI; MESH2 = TOPT1 . 'MAILLAGE_2'; FINSI; MESHvect = TOPT1 . 'MAILLAGE_VECTEUR'; FINSI; cha20 = TOPT1 . 'TITRE'; FINSI; ficvtk = TOPT1 . 'FICHIER_VTK'; FINSI; xamp0 = TOPT1 . 'AMPLIFICATION_RELATIVE'; FINSI; FINSI; FINSI; * eventuelles erreurs FINSI; FINSI; FINSI; * ajout de UNIQ pour le cas des mulitcouches FINSI; FINSI; FINSI; FINSI; FAMPROG = EGA TYPXAMP 'LISTREEL'; SI ((NON FAMPROG) ET (NEG TYPXAMP 'FLOTTANT')); FINSI; SI (FLDEF0 ET FMESH2); FINSI; *======================================================================= * PREPARATION *======================================================================= * recup des noms de composantes * ----------------------------- si (ega idime 3); sinon; si ((ega momode 'AXIS') ou (ega momode 'FOUR')); sinon; finsi; finsi; modeplC = modepl et modeplI; * cas TABL * -------- SI FLTABL; SI (FLMODA ou FLBMOD); * modes C de VIBC SI FLVIBC; chaline = chai '+------+--------------+--------------+'; mess chaline; mess chaline; * modes R ou C de VIBR SINON; chaline = chai '+------+--------------+--------------+--------------+' '----------------------------------------+'; mess chaline; ' ||U||_2 |'; modepl1*63 modepl2*76 modepl3*89 '|'*95; mess chaline; FINSI; SINON; chaline = chai '+------+-------------+----------------+--------------+'; mess chaline; MESS '| Ustat| Deplacement unitaire impose | POINT_REPERE |'; mess chaline; FINSI; FINSI; * cas DEFO * -------- SI FLDEFO; * amplification relative (definie + haut) * xamp0 = 0.05; * calcul d'une longueur caracteristique si (ega idime 3); AMPL0 = ((XA0**2) + (YA0**2) + (ZA0**2))**0.5 ; sinon; AMPL0 = ((XA0**2) + (YA0**2))**0.5 ; finsi; FINSI; * cas LIST * -------- SI FLLIST; FINSI; * cas MAIL * -------- SI FLMAIL; FINSI; * options de TRAC * --------------- *======================================================================= * BOUCLE SUR LES MODES *======================================================================= imod1 = 0; REPE BMOD1 nbou1; imod1 = imod1 + 1; * RECUP DES DONNEEES DU "MODE" * ---------------------------- ITER BMOD1; FINSI; FLI = FAUX; OUBL phi1I; * cas d'une base modale * """"""""""""""""""""" SI (FLMODA ou FLBMOD); num1 = TMOD1 . i1 . 'NUMERO_MODE'; sino; num1 = i1; finsi; * + modes C de VIBC SI FLVIBC; frq1R = TMOD1 . i1 . 'FREQUENCE_REELLE'; frq1I = TMOD1 . i1 . 'FREQUENCE_IMAGINAIRE'; phi1R = TMOD1 . i1 . 'DEFORMEE_MODALE_REELLE'; phi1I = TMOD1 . i1 . 'DEFORMEE_MODALE_IMAGINAIRE'; xFMT1 = ABS frq1R; xFMT2 = ABS frq1I; * petite ruse pour l affichage phi1 = phi1R; * + modes R ou C de VIBR SINON; * + cas valeur propre complexe VIBR si FLCPLX; frq1R = TMOD1 . i1 . 'FREQUENCE_REELLE'; mas1R = TMOD1 . i1 . 'MASSE_GENERALISEE_REELLE'; phi1R = TMOD1 . i1 . 'DEFORMEE_MODALE_REELLE'; frq1I = TMOD1 . i1 . 'FREQUENCE_IMAGINAIRE'; mas1I = TMOD1 . i1 . 'MASSE_GENERALISEE_IMAGINAIRE'; phi1I = TMOD1 . i1 . 'DEFORMEE_MODALE_IMAGINAIRE'; xFMT1 = (abs frq1R) + (abs frq1I); xFMT2 = (abs mas1R) + (abs mas1I); * petite ruse pour l affichage phi1 = phi1R; frq1 = frq1R; mas1 = mas1R; * + cas valeur propre reelle VIBR sinon; frq1 = TMOD1 . i1 . 'FREQUENCE' ; mas1 = TMOD1 . i1 . 'MASSE_GENERALISEE'; phi1 = TMOD1 . i1 . 'DEFORMEE_MODALE'; phi1C = phi1; xFMT1 = abs frq1; xFMT2 = abs mas1; finsi; *bp2019 rphi1 = RESU phi1; *bp2019 on prefere une mesure euclidienne * on verifie la compatibilite des noms d'inconnues SI FLPHI1; finsi; finsi; finsi; finsi; SINON; FINSI; FINSI; * - fin distinction VIBC/VIBR * formats finsi; finsi; * cas d'une solution statique * """"""""""""""""""""""""""" SINON; num1 = i1; ptl1 = TMOD1 . i1 . 'POINT_LIAISON'; SINON; FINSI; ddl1 = TMOD1 . i1 . 'DDL_LIAISON'; SINON; FINSI; phi1 = TMOD1 . i1 . 'DEFORMEE'; FINSI; * fin distinction cas base modale/solution statique * """"""""""""""""""""""""""""""""""""""""""""""""" * numero de noeud du point repere * """"""""""""""""""""""""""""""" prep1 = TMOD1 . i1 . 'POINT_REPERE'; * option TABLEAU * -------------- SI FLTABL; * cas base de modes propres * """"""""""""""""""""""""" SI (FLMODA ou FLBMOD); * + modes C de VIBC SI FLVIBC; FORMAT FMT1 frq1R ' |' FORMAT FMT2 frq1I ' |'; mess cha1; * + modes R ou C de VIBR SINON; FORMAT FMT1 frq1 ' |' FORMAT FMT2 mas1 ' |' iprep1 *50 ' |' FORMAT FMT3 ux1 uy1 uz1 ' |'; mess cha1; * + cas valeur propre complexe si FLCPLX; FORMAT FMT1 frq1I ' |' FORMAT FMT2 mas1I ' |' ' ' *50 ' |' FORMAT FMT3 iux1 iuy1 iuz1 ' |'; mess cha1I; * + cas valeur propre reelle sinon; * composantes complexes eventuelles SI FLI; FORMAT FMT3 iux1 iuy1 iuz1 ' |'; mess cha1I; FINSI; finsi; FINSI; * cas base de modes statiques * """"""""""""""""""""""""" SINON; ddl1 *17 ' |' iptl1 *32 ' |' iprep1 *50 ' |'; mess cha1; FINSI; FINSI; * option DEFORMEE * --------------- SI FLDEFO; * isovaleur * """"""""" UNORM1 = TMOD1 . i1 . 'ISOVALEUR'; FINSI; SINON; TMOD1 . i1 . 'ISOVALEUR' = UNORM1; FINSI; * amplification * """"""""""""" * EXCO peut ne pas trouver les composantes si l'harmonique de fourier * courante est differente de celle du chpoint -> on laisse une 1ere chance SI (AMPU1 < 1.E-100); FINSI; SI (AMPU1 < 1.E-100); XAMP1 = 0.; SINON; sinon; XAMP1 = xamp0 * (AMPL0 / AMPU1) ; finsi; FINSI; * deformee avec/sans vecteurs * """"""""""""""""""""""""""" SI FMESHvect; SINON; FINSI; * SI FMESH2; * DEFO2 = DEFO MESH2 phi1 XAMP1 ; * * surtout pas de couleur=isovaleur, sinon la deformee disparait ! * FINSI; SI (FLDEF0) ; * DEFO1 = (DEFO MESH1 phi1 0 'GRIS' (0.*UNORM1)) et DEFO1; * SI FMESH2; * DEFO2 = (DEFO MESH2 phi1 0 'GRIS') et DEFO2; * FINSI; FINSI; * ajout de la deformee imaginaire en violet si elle existe SI FMESHvect; SINON; FINSI; DEFO1 = DEFO1 ET DEFO1I; FINSI; * titre du trace * """""""""""""" * + cas d'une base modale SI (FLMODA ou FLBMOD); * + modes C de VIBC SI FLVIBC; ' + i' FORMAT FMT2 frq1I ' Hz'; * + modes R ou C de VIBR SINON; FINSI; SINON; FINSI; cha29 = TOPT1 . 'LEGENDES' . i1; FINSI; FINSI; FINSI; * tracé * """"" SI FMESH2; *bp,2021-02-01 TRAC DEFO1 MESH2 'NOLE' 'TITRE' cha2 TXTOPT; * TRAC DEFO1 DEFO2 'NOLE' 'TITRE' cha2 TXTOPT; * ci-dessus ne fait qu'effacer les segments de DEFO1, * pour avoir les segments du maillage 2 uniquement, il faut plutot : TRAC UNORM1 DEFO1 MESH2 'NOLE' 'TITRE' cha2 TXTOPT; SINON; TRAC DEFO1 'NOLE' 'TITRE' cha2 TXTOPT; FINSI; FINSI; * option LISTES * ------------- SI FLLIST; LCHPO1 = LCHPO1 et phi1; LFREQ1 = LFREQ1 et frq1; SI (FLMODA ou FLBMOD); LMGEN1 = LMGEN1 et mas1; FINSI; FINSI; * option MAILLAGE * --------------- SI FLMAIL; MESHAB = MESHAB et prep1; FINSI; * option NOLX * ----------- SI FLNOLX; SI (FLMODA ou FLBMOD); SINON; FINSI; FINSI; * option VTK * ---------- SI FLVTK; * sortie du maillage principal * """""""""""""""""""""""""""" SI FLI; SORT 'VTK' MESH1 'MAIL' SINON; SORT 'VTK' MESH1 'MAIL' SINON; SORT 'VTK' MESH1 'MAIL' FINSI; FINSI; * sortie du maillage 2 * """""""""""""""""""" SI FMESH2; SI FLI; SORT 'VTK' MESH2 'MAIL2' SINON; SORT 'VTK' MESH2 'MAIL2' SINON; SORT 'VTK' MESH2 'MAIL2' FINSI; FINSI; FINSI; FINSI; FIN BMOD1; *======================================================================= * FIN DE BOUCLE SUR LES MODES *======================================================================= *======================================================================= * FINALISATIONS *======================================================================= * option TABLEAU * -------------- SI FLTABL; mess chaline; FINSI; * option LISTES * ------------- SI FLLIST; TBAS1 . 'LISTE_DEFORMEES' = LCHPO1; TBAS1 . 'LISTE_FREQUENCES' = LFREQ1; SI (FLMODA ou FLBMOD); TBAS1 . 'LISTE_MASSES' = LMGEN1; FINSI; FINSI; * option MAILLAGE * --------------- SI FLMAIL; TBAS1 . 'MAILLAGE_REPERE' = MESHAB; FINSI; FINPROC;
© Cast3M 2003 - Tous droits réservés.
Mentions légales