* ORDOVIBC PROCEDUR BP208322 21/09/06 21:15:06 11096 * * ======================== DEBUT DOCUMENTATION ======================== * .. _procedur_ordovibc: * * ordovibc * -------- * * **Description** * * Crée des listreels des frequences réelles {wr} et imaginaires {wi} * d'une base modale complexe TbasC2 obtenue avec VIBC * et ordonne les modes complexes : * * - selon {wr} croissant si TbasC1 n'est pas fourni * - selon l'ordre des modes de TbasC1 de manière à minimiser * les produits scalaires complexes <\psi1,\psi2> + <w1,w2> * * **Appel** * * .. code-block:: none * * ORDOVIBC TbasC2 (TbasC1); * **Arguments** * * Détail des indices de sortie de la table TbasC2 : :: * * TbasC2 * . 'MODES' = table des modes |non ordonnée (E) * |ordonnée (S) * . 'LISTE_FREQUENCES_REELLES' = listreel des {wR} ordonnées (S) * . 'LISTE_FREQUENCES_IMAGINAIRES' = listreel des {wI} ordonnées (S) * * **Auteur** * * Benoit Prabel, 2021 * ************************************************************************ ************************************************************************ * RECUPERATION DES INPUT ************************************************************************ * BASE A ORDONNER * --------------- TmodC2 = TbasC2 . 'MODES'; * Extraction des frequences REPE BmodC2 NmodC2 ; NmodC2 = &BmodC2 - 1; TbasC2 . 'NOMBRE_MODES' = NmodC2; QUIT BmodC2; FINSI; prfR2 = prfR2 ET (TmodC2 . &BmodC2 .'FREQUENCE_REELLE') ; prfI2 = prfI2 ET (TmodC2 . &BmodC2 .'FREQUENCE_IMAGINAIRE') ; FIN BmodC2 ; * liste * BASE DE REFERENCE (OPTIONNELLE) * ----------------- SI (IF_C1); TmodC1 = TbasC1 . 'MODES'; NmodC1 = TbasC1 . 'NOMBRE_MODES'; prfR1 = TbasC1 . 'LISTE_FREQUENCES_REELLES' ; prfI1 = TbasC1 . 'LISTE_FREQUENCES_IMAGINAIRES'; FINSI; ************************************************************************ * TRI ************************************************************************ * TRI SELON wR CROISSANT * ---------------------- SI (NON IF_C1); * TRI SELON TbasC1 * ---------------- SINON; * boucle sur les modes du pas precedent -------------------- REPE B1 NmodC1; DEFR1 = TmodC1 . &B1 . 'DEFORMEE_MODALE_REELLE'; DEFI1 = TmodC1 . &B1 . 'DEFORMEE_MODALE_IMAGINAIRE'; frqR1 = TmodC1 . &B1 . 'FREQUENCE_REELLE'; frqI1 = TmodC1 . &B1 . 'FREQUENCE_IMAGINAIRE'; * boucle sur les modes du pas actuel ---------------- REPE B2 NmodC2; DEFR2 = TmodC2 . &B2 . 'DEFORMEE_MODALE_REELLE'; DEFI2 = TmodC2 . &B2 . 'DEFORMEE_MODALE_IMAGINAIRE'; frqR2 = TmodC2 . &B2 . 'FREQUENCE_REELLE'; frqI2 = TmodC2 . &B2 . 'FREQUENCE_IMAGINAIRE'; * ecart en frequence^2 dfrq12 = ((frqR2 - frqR1)**2) + ((frqI2 - frqI1)**2); ref12 = ((frqR2**2) + (frqI2**2)) + ((frqR1**2) + (frqI1**2)); * produit scalaire des vecteurs propres modul12 = (cos12**2) + (sin12**2); xCout12 = (abs (1. - modul12)) + (0.5*dfrq12 / ref12); prCout = prCout et xCout12; FIN B2; * fin de boucle sur les modes du pas actuel --------- FIN B1; * fin de boucle sur les modes du pas precedent ------------- * recherche dela permutation qui minimise le cout (cad les distances) xCoutTot numodC2 prfR2 prfI2 FINSI; ************************************************************************ * ECRITURE DES RESULTATS ************************************************************************ * PERMUTATION * ----------- REPE BmodC2 NmodC2 ; FIN BmodC2 ; * STOCKAGE * -------- TbasC2 . 'MODES' = TmodC2o; TbasC2 . 'LISTE_FREQUENCES_REELLES' = prfR2 ; TbasC2 . 'LISTE_FREQUENCES_IMAGINAIRES' = prfI2 ; FINP;
© Cast3M 2003 - Tous droits réservés.
Mentions légales