Télécharger postvibr.procedur

Retour à la liste

Numérotation des lignes :

  1. * POSTVIBR PROCEDUR BP208322 22/02/15 21:15:01 11284
  2. *=======================================================================
  3. *
  4. * POSTVIBR
  5. * VISUalisation selon le mot cle :
  6. * 'TABL' : ecrit le tableau des donnees d'une base modale
  7. * 'DEFO' : trace les deformees modales
  8. * 'DEF0' : trace du maillage non deforme
  9. * 'VTK' : sortie du maillage + deformees
  10. * 'LIST' : creation des listchpo des deformees, des listreel des
  11. * frequences, des masses generalisees...
  12. * 'MAIL' : creation du maillage des point_repere
  13. * creation : BP 06/01/2015
  14. *
  15. *=======================================================================
  16.  
  17.  
  18. DEBPROC POSTVIBR TBAS1*'TABLE' LMOC1/'LISTMOTS' TOPT1/'TABLE' ;
  19.  
  20.  
  21. * TBAS1 : table de type BASE_MODALE ou LIAISONS_STATIQUES
  22. * . MODES . i . 'ISOVALEUR' : si on veut une isovaleur personnalisee
  23. * LMOC1 : mots-cles definissant les actions a produire
  24. * TOPT1 : table d'options contenant :
  25. * . 'LISTE_MODES' : liste des modes a traiter
  26. * . 'MAILLAGE' : maillage sur lequel tracer les deformees
  27. * . 'TITRE' : debut de titre lors du trace des deformees
  28. * . 'LEGENDES' : legendes a ajouter a la fin du titre
  29. * lors du trace des deformees
  30. * . 'FICHIER_VTK' : repertoire + nom de fichier de sortie VTK
  31. * . 'MAILLAGE_2' : maillage supplementaire a utiliser (ex: ARET)
  32. * . 'MAILLAGE_VECTEUR' : maillage support de vecteur a afficher
  33. * . 'AMPLIFICATION_RELATIVE': valeur de l'amplification relative de la deformee (5% par defaut)
  34. * . 'OPTIONS_TRAC': liste des options a passer a TRAC (CHAINE)
  35.  
  36.  
  37. *=======================================================================
  38. * VERIF et RECUP DES DONNEES D'ENTREE
  39. *=======================================================================
  40.  
  41. * TABLE DES MODES
  42. * ---------------
  43.  
  44. SI (NON (EXIS TBAS1 'SOUSTYPE'));
  45. MESS 'LA TABLE D ENTREE DOIT AVOIR UN SOUSTYPE !';
  46. ERRE 21; QUIT POSTVIBR;
  47. FINSI;
  48. FLBMOD = EGA TBAS1 . 'SOUSTYPE' 'BASE_DE_MODES';
  49. FLMODA = EGA TBAS1 . 'SOUSTYPE' 'BASE_MODALE';
  50. FLSTAT = EGA TBAS1 . 'SOUSTYPE' 'LIAISONS_STATIQUES';
  51. SI ((NON FLBMOD) ET (NON FLMODA) ET (NON FLSTAT));
  52. MESS 'LA TABLE D ENTREE DOIT ETRE DE SOUSTYPE ';
  53. 'BASE_DE_MODES ou BASE_MODALE ou LIAISONS_STATIQUES !';
  54. ERRE 21; QUIT POSTVIBR;
  55. FINSI;
  56.  
  57. SI (FLMODA);
  58. TMOD1 = TBAS1 . 'MODES';
  59. SI (NEG TMOD1 . 'SOUSTYPE' 'BASE_DE_MODES');
  60. MESS 'L INDICE MODES DE LA TABLE D ENTREE DOIT ETRE DE SOUSTYPE '
  61. 'BASE_DE_MODES !';
  62. ERRE 21; QUIT POSTVIBR;
  63. FINSI;
  64. nmod1 = (DIME TMOD1) - 2;
  65. SINON;
  66. TMOD1 = TBAS1;
  67. nmod1 = (DIME TMOD1) - 1;
  68. FINSI;
  69. SI (nmod1 < 1);
  70. MESS 'ABSENCE DE MODES !';
  71. QUIT POSTVIBR;
  72. FINSI;
  73. nbou1 = nmod1;
  74. * s'agit-il de modes complexes calcules par VIBC ?
  75. FLVIBC = EGA (MOT TMOD1 . 1 . 'SOUSTYPE') 'MODE_COMPLEXE';
  76.  
  77.  
  78. * LISTE DES MOTS-CLES
  79. * -------------------
  80.  
  81. * valeurs par defaut
  82. SI (NON (EXIS LMOC1));
  83. LMOC1 = MOTS 'TABL' 'DEFO' 'DEF0' 'MAIL';
  84. FINSI;
  85.  
  86. * logiques
  87. FLTABL = EXIS LMOC1 'TABL';
  88. FLDEFO = EXIS LMOC1 'DEFO';
  89. * attention DEF0 avec "zero" et pas DEFO avec un "o"
  90. FLDEF0 = EXIS LMOC1 'DEF0';
  91. FLVTK = EXIS LMOC1 'VTK';
  92. FLLIST = EXIS LMOC1 'LIST';
  93. FLMAIL = EXIS LMOC1 'MAIL';
  94. FLNOLX = EXIS LMOC1 'NOLX';
  95.  
  96.  
  97. * TABLE DES OPTIONS
  98. * -----------------
  99.  
  100. * valeurs par defaut
  101. LENT1 = LECT 1 'PAS' 1 nmod1;
  102. SI (EXIS TMOD1 'MAILLAGE');
  103. MESH1 = TMOD1 . 'MAILLAGE';
  104. FINSI;
  105. cha20 = mot ' ';
  106. * ficvtk = mot 'VTK/DEFORMEE_MODALE';
  107. ficvtk = mot 'DEFORMEE_MODALE';
  108.  
  109. * on recupere tout ce qu'on peut si la table existe vraiment
  110. FLOPT1 = FAUX;
  111. FMESH2 = FAUX;
  112. FMESHvect = FAUX;
  113. FLLEGE = FAUX;
  114. xamp0 = 0.05;
  115. OPTRAC = MOT ' ';
  116. SI (EXIS TOPT1); FLOPT1 = EGA (TYPE TOPT1) 'TABLE'; FINSI;
  117. SI FLOPT1;
  118. SI (EXIS TOPT1 'LISTE_MODES');
  119. LENT1 = TOPT1 . 'LISTE_MODES';
  120. nbou1 = DIME LENT1;
  121. FINSI;
  122. SI (EXIS TOPT1 'MAILLAGE');
  123. MESH1 = TOPT1 . 'MAILLAGE';
  124. FINSI;
  125. SI (EXIS TOPT1 'MAILLAGE_2');
  126. MESH2 = TOPT1 . 'MAILLAGE_2';
  127. FMESH2 = EGA (TYPE MESH2) 'MAILLAGE';
  128. FINSI;
  129. SI (EXIS TOPT1 'MAILLAGE_VECTEUR');
  130. MESHvect = TOPT1 . 'MAILLAGE_VECTEUR';
  131. FMESHvect = (EGA (TYPE MESHvect) 'MAILLAGE')
  132. ou (EGA (TYPE MESHvect) 'POINT');
  133. FINSI;
  134. SI (EXIS TOPT1 'TITRE');
  135. cha20 = TOPT1 . 'TITRE';
  136. FINSI;
  137. FLLEGE = EXIS TOPT1 'LEGENDES';
  138. SI (EXIS TOPT1 'FICHIER_VTK');
  139. ficvtk = TOPT1 . 'FICHIER_VTK';
  140. FINSI;
  141. SI (EXIS TOPT1 'AMPLIFICATION_RELATIVE');
  142. xamp0 = TOPT1 . 'AMPLIFICATION_RELATIVE';
  143. FINSI;
  144. SI (EXIS TOPT1 'OPTIONS_TRAC');
  145. OPTRAC = MOT TOPT1 . 'OPTIONS_TRAC';
  146. FINSI;
  147. FINSI;
  148.  
  149. * eventuelles erreurs
  150. SI (NEG (TYPE LENT1) 'LISTENTI');
  151. MESS 'VEUILLEZ FOURNIR UN LISTENTI POUR LISTE_MODES !'; ERRE 21;
  152. FINSI;
  153. SI (NEG (TYPE MESH1) 'MAILLAGE');
  154. MESS 'VEUILLEZ FOURNIR UN MAILLAGE !'; ERRE 21;
  155. FINSI;
  156. SI (NEG (TYPE OPTRAC) 'MOT');
  157. MESS 'VEUILLEZ FOURNIR UN MOT DANS OPTIONS_TRAC!'; ERRE 21;
  158. FINSI;
  159. * ajout de UNIQ pour le cas des mulitcouches
  160. MESH1 = UNIQ MESH1;
  161. SI (NEG (TYPE cha20) 'MOT');
  162. MESS 'VEUILLEZ FOURNIR UN MOT POUR TITRE !'; ERRE 21;
  163. FINSI;
  164. SI FLLEGE; SI (NEG (TYPE TOPT1 . 'LEGENDES') 'TABLE');
  165. MESS 'VEUILLEZ FOURNIR UNE TABLE POUR LEGENDES !'; ERRE 21;
  166. FINSI; FINSI;
  167. SI (NEG (TYPE ficvtk) 'MOT');
  168. MESS 'VEUILLEZ FOURNIR UN MOT POUR FICHIER_VTK !'; ERRE 21;
  169. FINSI;
  170. TYPXAMP = TYPE xamp0;
  171. FAMPROG = EGA TYPXAMP 'LISTREEL';
  172. SI ((NON FAMPROG) ET (NEG TYPXAMP 'FLOTTANT'));
  173. MESS 'VEUILLEZ FOURNIR UN FLOTTANT OU UN LISTREEL POUR AMPLIFICATION_RELATIVE !'; ERRE 21;
  174. FINSI;
  175. SI (FLDEF0 ET FMESH2);
  176. MESS 'DEF0 et MAILLAGE_2 incompatibles !'; ERRE 21;
  177. FINSI;
  178.  
  179.  
  180. *=======================================================================
  181. * PREPARATION
  182. *=======================================================================
  183.  
  184. * recup des noms de composantes
  185. * -----------------------------
  186.  
  187. idime = VALE 'DIME' ;
  188. momode = VALE 'MODE' ;
  189. si (ega idime 3);
  190. modepl = mots 'UX' 'UY' 'UZ';
  191. modeplI= mots 'IUX' 'IUY' 'IUZ';
  192. sinon;
  193. si ((ega momode 'AXIS') ou (ega momode 'FOUR'));
  194. modepl = mots 'UR' 'UT' 'UZ';
  195. modeplI= mots 'IUR' 'IUT' 'IUZ';
  196. sinon;
  197. modepl = mots 'UX' 'UY' '--';
  198. modeplI= mots 'IUX' 'IUY' '--';
  199. finsi;
  200. finsi;
  201. modeplC = modepl et modeplI;
  202. modepl1 = extr modepl 1;
  203. modepl2 = extr modepl 2;
  204. modepl3 = extr modepl 3;
  205. modeplI1= extr modeplI 1;
  206. modeplI2= extr modeplI 2;
  207. modeplI3= extr modeplI 3;
  208.  
  209.  
  210. * cas TABL
  211. * --------
  212. SI FLTABL;
  213.  
  214. SI (FLMODA ou FLBMOD);
  215. * modes C de VIBC
  216. SI FLVIBC;
  217. chaline = chai
  218. '+------+--------------+--------------+';
  219. mess chaline;
  220. MESS '| Mode | Freq Reelle | Freq Imag. |';
  221. MESS '| num. | (Hz) | (/s) |';
  222. mess chaline;
  223. * modes R ou C de VIBR
  224. SINON;
  225. chaline = chai
  226. '+------+--------------+--------------+--------------+'
  227. '----------------------------------------+';
  228. mess chaline;
  229. MESS '| Mode | Frequence | Masse gen. | POINT_REPERE |'
  230. ' ||U||_2 |';
  231. MESS '| num. | (Hz) | M* | (ddl ALFA) |'
  232. modepl1*63 modepl2*76 modepl3*89 '|'*95;
  233. mess chaline;
  234. FINSI;
  235. SINON;
  236. chaline = chai
  237. '+------+-------------+----------------+--------------+';
  238. mess chaline;
  239. MESS '| Ustat| Deplacement unitaire impose | POINT_REPERE |';
  240. MESS '| num. | ddl | noeud | (ddl BETA) |';
  241. mess chaline;
  242. FINSI;
  243.  
  244. FINSI;
  245.  
  246.  
  247. * cas DEFO
  248. * --------
  249. SI FLDEFO;
  250.  
  251. * amplification relative (definie + haut)
  252. * xamp0 = 0.05;
  253.  
  254. * calcul d'une longueur caracteristique
  255. si (ega idime 3);
  256. XC0 YC0 ZC0 = COOR MESH1 ;
  257. XA0 = (MAXI XC0) - (MINI XC0) ;
  258. YA0 = (MAXI YC0) - (MINI YC0) ;
  259. ZA0 = (MAXI ZC0) - (MINI ZC0) ;
  260. AMPL0 = ((XA0**2) + (YA0**2) + (ZA0**2))**0.5 ;
  261. sinon;
  262. XC0 YC0 = COOR MESH1 ;
  263. XA0 = (MAXI XC0) - (MINI XC0) ;
  264. YA0 = (MAXI YC0) - (MINI YC0) ;
  265. AMPL0 = ((XA0**2) + (YA0**2))**0.5 ;
  266. finsi;
  267.  
  268. FINSI;
  269.  
  270.  
  271. * cas LIST
  272. * --------
  273. SI FLLIST;
  274. LCHPO1 = SUIT;
  275. LFREQ1 = PROG;
  276. LMGEN1 = PROG;
  277. FINSI;
  278.  
  279. * cas MAIL
  280. * --------
  281. SI FLMAIL;
  282. MESHAB = MANU 'POI1';
  283. FINSI;
  284.  
  285. * options de TRAC
  286. * ---------------
  287. TXTOPT = TEXT OPTRAC;
  288.  
  289.  
  290. *=======================================================================
  291. * BOUCLE SUR LES MODES
  292. *=======================================================================
  293.  
  294. imod1 = 0;
  295. REPE BMOD1 nbou1; imod1 = imod1 + 1;
  296.  
  297.  
  298. * RECUP DES DONNEEES DU "MODE"
  299. * ----------------------------
  300.  
  301. i1 = extr LENT1 imod1;
  302. SI (NON (EXIS TMOD1 i1));
  303. ITER BMOD1;
  304. FINSI;
  305. FLI = FAUX;
  306. iux1 = mot ' --- ';
  307. iuy1 = mot ' --- ';
  308. iuz1 = mot ' --- ';
  309. OUBL phi1I;
  310.  
  311. * cas d'une base modale
  312. * """""""""""""""""""""
  313. SI (FLMODA ou FLBMOD);
  314.  
  315. si ((exis TMOD1 . i1 'NUMERO_MODE') et (NON FLVIBC));
  316. num1 = TMOD1 . i1 . 'NUMERO_MODE';
  317. sino;
  318. num1 = i1;
  319. finsi;
  320. * + modes C de VIBC
  321. SI FLVIBC;
  322. frq1R = TMOD1 . i1 . 'FREQUENCE_REELLE';
  323. frq1I = TMOD1 . i1 . 'FREQUENCE_IMAGINAIRE';
  324. phi1R = TMOD1 . i1 . 'DEFORMEE_MODALE_REELLE';
  325. phi1I = TMOD1 . i1 . 'DEFORMEE_MODALE_IMAGINAIRE';
  326. xFMT1 = ABS frq1R;
  327. xFMT2 = ABS frq1I;
  328. * petite ruse pour l affichage
  329. phi1C = (EXCO phi1R modepl modepl 'NOID' 'NATURE' 'DIFFUS')
  330. et (EXCO phi1I modepl modeplI 'NOID' 'NATURE' 'DIFFUS');
  331. phi1 = phi1R;
  332. * + modes R ou C de VIBR
  333. SINON;
  334. * + cas valeur propre complexe VIBR
  335. FLCPLX = EXIS TMOD1 . i1 'FREQUENCE_REELLE';
  336. si FLCPLX;
  337. frq1R = TMOD1 . i1 . 'FREQUENCE_REELLE';
  338. mas1R = TMOD1 . i1 . 'MASSE_GENERALISEE_REELLE';
  339. phi1R = TMOD1 . i1 . 'DEFORMEE_MODALE_REELLE';
  340. frq1I = TMOD1 . i1 . 'FREQUENCE_IMAGINAIRE';
  341. mas1I = TMOD1 . i1 . 'MASSE_GENERALISEE_IMAGINAIRE';
  342. phi1I = TMOD1 . i1 . 'DEFORMEE_MODALE_IMAGINAIRE';
  343. xFMT1 = (abs frq1R) + (abs frq1I);
  344. xFMT2 = (abs mas1R) + (abs mas1I);
  345. * petite ruse pour l affichage
  346. phi1C = (EXCO phi1R modepl modepl 'NOID' 'NATURE' 'DIFFUS')
  347. et (EXCO phi1I modepl modeplI 'NOID' 'NATURE' 'DIFFUS');
  348. phi1 = phi1R;
  349. frq1 = frq1R;
  350. mas1 = mas1R;
  351. * + cas valeur propre reelle VIBR
  352. sinon;
  353. frq1 = TMOD1 . i1 . 'FREQUENCE' ;
  354. mas1 = TMOD1 . i1 . 'MASSE_GENERALISEE';
  355. phi1 = TMOD1 . i1 . 'DEFORMEE_MODALE';
  356. phi1C = phi1;
  357. xFMT1 = abs frq1;
  358. xFMT2 = abs mas1;
  359. finsi;
  360. *bp2019 rphi1 = RESU phi1;
  361. *bp2019 on prefere une mesure euclidienne
  362. rphi1 = (RESU (phi1**2))**0.5;
  363. morphi1= EXTR rphi1 'COMP';
  364. prphi1 = EXTR rphi1 'MAILLAGE';
  365. * on verifie la compatibilite des noms d'inconnues
  366. FLPHI1 = ((DIME morphi1) > 0) ET ((NBEL prphi1) > 0);
  367. SI FLPHI1;
  368. prphi1 = prphi1 POIN 'INITIAL';
  369. ux1 = EXTR rphi1 modepl1 prphi1;
  370. uy1 = EXTR rphi1 modepl2 prphi1;
  371. si (ega modepl3 '--'); uz1 = mot '--';
  372. sinon; uz1 = EXTR rphi1 modepl3 prphi1;
  373. finsi;
  374. si (exis morphi1 modeplI1);
  375. FLI = VRAI; iux1 = EXTR rphi1 modeplI1 prphi1;
  376. finsi;
  377. si (exis morphi1 modeplI2);
  378. FLI = VRAI; iuy1 = EXTR rphi1 modeplI2 prphi1;
  379. finsi;
  380. si (exis morphi1 modeplI3);
  381. FLI = VRAI; iuz1 = EXTR rphi1 modeplI3 prphi1;
  382. finsi;
  383. SINON;
  384. ux1 = mot ' --- '; uy1 = ux1; uz1 = ux1;
  385. FINSI;
  386. OUBL prphi1; DETR rphi1;
  387. FINSI;
  388. * - fin distinction VIBC/VIBR
  389.  
  390. * formats
  391. si ((xFMT1 < 10000.) et (xFMT1 > 1.E-3)); FMT1 = mot '(F13.4)';
  392. sinon; FMT1 = mot '(E13.6)';
  393. finsi;
  394. si ((xFMT2 < 10000.) et (xFMT2 > 1.E-3)); FMT2 = mot '(F13.4)';
  395. sinon; FMT2 = mot '(E13.6)';
  396. finsi;
  397. FMT3 = mot '(F13.4)';
  398.  
  399.  
  400. * cas d'une solution statique
  401. * """""""""""""""""""""""""""
  402. SINON;
  403.  
  404. num1 = i1;
  405. SI (EXIS TMOD1 . i1 (mot 'POINT_LIAISON'));
  406. ptl1 = TMOD1 . i1 . 'POINT_LIAISON';
  407. iptl1 = NOEU ptl1;
  408. SINON;
  409. iptl1 = mot 'inconnu';
  410. FINSI;
  411. SI (EXIS TMOD1 . i1 (mot 'DDL_LIAISON'));
  412. ddl1 = TMOD1 . i1 . 'DDL_LIAISON';
  413. SINON;
  414. ddl1 = mot 'inconnu';
  415. FINSI;
  416. phi1 = TMOD1 . i1 . 'DEFORMEE';
  417.  
  418. FINSI;
  419. * fin distinction cas base modale/solution statique
  420. * """""""""""""""""""""""""""""""""""""""""""""""""
  421.  
  422. * numero de noeud du point repere
  423. * """""""""""""""""""""""""""""""
  424. prep1 = TMOD1 . i1 . 'POINT_REPERE';
  425. iprep1 = NOEU prep1;
  426.  
  427.  
  428. * option TABLEAU
  429. * --------------
  430. SI FLTABL;
  431.  
  432. * cas base de modes propres
  433. * """""""""""""""""""""""""
  434. SI (FLMODA ou FLBMOD);
  435. * + modes C de VIBC
  436. SI FLVIBC;
  437. cha1 = CHAI '|' num1 *6 ' |'
  438. FORMAT FMT1 frq1R ' |'
  439. FORMAT FMT2 frq1I ' |';
  440. mess cha1;
  441. * + modes R ou C de VIBR
  442. SINON;
  443. cha1 = CHAI '|' num1 *6 ' |'
  444. FORMAT FMT1 frq1 ' |'
  445. FORMAT FMT2 mas1 ' |'
  446. iprep1 *50 ' |'
  447. FORMAT FMT3 ux1 uy1 uz1 ' |';
  448. mess cha1;
  449. * + cas valeur propre complexe
  450. si FLCPLX;
  451. cha1I = CHAI '|' ' ' *6 '+i'
  452. FORMAT FMT1 frq1I ' |'
  453. FORMAT FMT2 mas1I ' |'
  454. ' ' *50 ' |'
  455. FORMAT FMT3 iux1 iuy1 iuz1 ' |';
  456. mess cha1I;
  457. * + cas valeur propre reelle
  458. sinon;
  459. * composantes complexes eventuelles
  460. SI FLI;
  461. cha1I = CHAI '|' ' ' *50 ' |'
  462. FORMAT FMT3 iux1 iuy1 iuz1 ' |';
  463. mess cha1I;
  464. FINSI;
  465. finsi;
  466. FINSI;
  467.  
  468. * cas base de modes statiques
  469. * """""""""""""""""""""""""
  470. SINON;
  471. cha1 = CHAI '|' num1 *6 ' |'
  472. ddl1 *17 ' |'
  473. iptl1 *32 ' |'
  474. iprep1 *50 ' |';
  475. mess cha1;
  476.  
  477. FINSI;
  478.  
  479. FINSI;
  480.  
  481.  
  482. * option DEFORMEE
  483. * ---------------
  484. SI FLDEFO;
  485.  
  486. * isovaleur
  487. * """""""""
  488. SI (EXIS TMOD1 . i1 'ISOVALEUR');
  489. UNORM1 = TMOD1 . i1 . 'ISOVALEUR';
  490. SI (NEG (TYPE UNORM1) 'CHPOINT');
  491. MESS 'ISOVALEUR du 'i1'eme mode doit etre un CHPOINT !';
  492. ERRE 21;
  493. FINSI;
  494. SINON;
  495. UNORM1 = (PSCA phi1C phi1C modeplC modeplC)**0.5;
  496. TMOD1 . i1 . 'ISOVALEUR' = UNORM1;
  497. FINSI;
  498.  
  499. * amplification
  500. * """""""""""""
  501. AMPU1 = MAXI (EXCO modeplC phi1C 'NOID') 'ABS';
  502. * EXCO peut ne pas trouver les composantes si l'harmonique de fourier
  503. * courante est differente de celle du chpoint -> on laisse une 1ere chance
  504. SI (AMPU1 < 1.E-100);
  505. AMPU1 = MAXI phi1C 'ABS' 'SANS' (mots 'LX');
  506. FINSI;
  507. SI (AMPU1 < 1.E-100);
  508. XAMP1 = 0.;
  509. SINON;
  510. si FAMPROG; XAMP1 = (EXTR xamp0 &BMOD1) * (AMPL0 / AMPU1) ;
  511. sinon; XAMP1 = xamp0 * (AMPL0 / AMPU1) ;
  512. finsi;
  513. FINSI;
  514.  
  515. * deformee avec/sans vecteurs
  516. * """""""""""""""""""""""""""
  517. SI FMESHvect;
  518. UVECT = REDU phi1 MESHvect;
  519. VECT1 = VECT UVECT (-1.*XAMP1) 'DEPL';
  520. DEFO1 = DEFO MESH1 phi1 XAMP1 VECT1 UNORM1;
  521. SINON;
  522. DEFO1 = DEFO MESH1 phi1 XAMP1 UNORM1;
  523. FINSI;
  524. * SI FMESH2;
  525. * DEFO2 = DEFO MESH2 phi1 XAMP1 ;
  526. * * surtout pas de couleur=isovaleur, sinon la deformee disparait !
  527. * FINSI;
  528. SI (FLDEF0) ;
  529. * DEFO1 = (DEFO MESH1 phi1 0 'GRIS' (0.*UNORM1)) et DEFO1;
  530. DEFO1 = (DEFO MESH1 phi1 0 'GRIS') et DEFO1;
  531. * SI FMESH2;
  532. * DEFO2 = (DEFO MESH2 phi1 0 'GRIS') et DEFO2;
  533. * FINSI;
  534. FINSI;
  535. * ajout de la deformee imaginaire en violet si elle existe
  536. SI (EXIS phi1I);
  537. SI FMESHvect;
  538. UVECTI = REDU phi1I MESHvect;
  539. VECT1I = VECT UVECTI (-1.*XAMP1) 'DEPL' 'VIOL';
  540. DEFO1I = DEFO MESH1 phi1I XAMP1 VECT1I 'VIOL';
  541. SINON;
  542. DEFO1I = DEFO MESH1 phi1I XAMP1 'VIOL';
  543. FINSI;
  544. DEFO1 = DEFO1 ET DEFO1I;
  545. FINSI;
  546.  
  547. * titre du trace
  548. * """"""""""""""
  549. * + cas d'une base modale
  550. SI (FLMODA ou FLBMOD);
  551. * + modes C de VIBC
  552. SI FLVIBC;
  553. cha2 = CHAI cha20 ' Mode' ' ' num1 ' : f=' FORMAT FMT1 frq1R
  554. ' + i' FORMAT FMT2 frq1I ' Hz';
  555. * + modes R ou C de VIBR
  556. SINON;
  557. cha2 = CHAI cha20 ' Mode' ' ' num1 ' : f=' FORMAT FMT1 frq1 'Hz';
  558. FINSI;
  559. SINON;
  560. cha2 = CHAI cha20 ' Ustat' ' ' num1 ' : ' ddl1 '(#' iptl1 ')=1';
  561. FINSI;
  562. SI FLLEGE; SI (EXIS (TOPT1 . 'LEGENDES') i1);
  563. cha29 = TOPT1 . 'LEGENDES' . i1;
  564. SI (NEG (TYPE cha29) 'MOT');
  565. MESS 'VEUILLEZ FOURNIR UN MOT POUR LEGENDES .' ' ' i1 ' !';
  566. ERRE 21; QUIT POSTVIBR;
  567. FINSI;
  568. cha2 = CHAI cha2 ' ' cha29;
  569. FINSI; FINSI;
  570.  
  571. * tracé
  572. * """""
  573. SI FMESH2;
  574. *bp,2021-02-01 TRAC DEFO1 MESH2 'NOLE' 'TITRE' cha2 TXTOPT;
  575. * TRAC DEFO1 DEFO2 'NOLE' 'TITRE' cha2 TXTOPT;
  576. * ci-dessus ne fait qu'effacer les segments de DEFO1,
  577. * pour avoir les segments du maillage 2 uniquement, il faut plutot :
  578. TRAC UNORM1 DEFO1 MESH2 'NOLE' 'TITRE' cha2 TXTOPT;
  579. SINON;
  580. TRAC DEFO1 'NOLE' 'TITRE' cha2 TXTOPT;
  581. FINSI;
  582.  
  583. FINSI;
  584.  
  585. * option LISTES
  586. * -------------
  587. SI FLLIST;
  588. LCHPO1 = LCHPO1 et phi1;
  589. LFREQ1 = LFREQ1 et frq1;
  590. SI (FLMODA ou FLBMOD); LMGEN1 = LMGEN1 et mas1; FINSI;
  591. FINSI;
  592.  
  593. * option MAILLAGE
  594. * ---------------
  595. SI FLMAIL;
  596. MESHAB = MESHAB et prep1;
  597. FINSI;
  598.  
  599. * option NOLX
  600. * -----------
  601. SI FLNOLX;
  602. SI (FLMODA ou FLBMOD);
  603. TMOD1 . i1 . 'DEFORMEE_MODALE' = phi1 ENLE 'LX';
  604. SINON;
  605. TMOD1 . i1 . 'DEFORMEE' = phi1 ENLE 'LX';
  606. FINSI;
  607. FINSI;
  608.  
  609. * option VTK
  610. * ----------
  611. SI FLVTK;
  612. * sortie du maillage principal
  613. * """"""""""""""""""""""""""""
  614. OPTI 'SORT' ficvtk;
  615. SI FLI;
  616. SORT 'VTK' MESH1 'MAIL'
  617. (EXCO phi1 modepl) 'DEPL_R'
  618. (EXCO phi1 modeplI modepl) 'DEPL_I'
  619. 'TEMP' (FLOT i1) ;
  620. SINON;
  621. SI (EXIS phi1I);
  622. SORT 'VTK' MESH1 'MAIL'
  623. (EXCO phi1R modepl 'NOID') 'DEPL_R'
  624. (EXCO phi1I modepl 'NOID') 'DEPL_I'
  625. 'TEMP' (FLOT i1) ;
  626. SINON;
  627. SORT 'VTK' MESH1 'MAIL'
  628. (EXCO phi1 modepl) 'DEPL'
  629. 'TEMP' (FLOT i1) ;
  630. FINSI;
  631. FINSI;
  632. * sortie du maillage 2
  633. * """"""""""""""""""""
  634. SI FMESH2;
  635. OPTI 'SORT' (chai ficvtk '_bis');
  636. SI FLI;
  637. SORT 'VTK' MESH2 'MAIL2'
  638. (REDU (EXCO phi1 modepl) MESH2) 'DEPL_R'
  639. (REDU (EXCO phi1 modeplI modepl) MESH2) 'DEPL_I'
  640. 'TEMP' (FLOT i1) ;
  641. SINON;
  642. SI (EXIS phi1I);
  643. SORT 'VTK' MESH2 'MAIL2'
  644. (REDU (EXCO phi1R modepl 'NOID') MESH2) 'DEPL_R'
  645. (REDU (EXCO phi1I modepl 'NOID') MESH2) 'DEPL_I'
  646. 'TEMP' (FLOT i1) ;
  647. SINON;
  648. SORT 'VTK' MESH2 'MAIL2'
  649. (REDU (EXCO phi1 modepl) MESH2) 'DEPL'
  650. 'TEMP' (FLOT i1) ;
  651. FINSI;
  652. FINSI;
  653. FINSI;
  654. FINSI;
  655.  
  656.  
  657. FIN BMOD1;
  658. *=======================================================================
  659. * FIN DE BOUCLE SUR LES MODES
  660. *=======================================================================
  661.  
  662.  
  663. *=======================================================================
  664. * FINALISATIONS
  665. *=======================================================================
  666.  
  667. * option TABLEAU
  668. * --------------
  669. SI FLTABL;
  670. mess chaline;
  671. FINSI;
  672.  
  673. * option LISTES
  674. * -------------
  675. SI FLLIST;
  676. TBAS1 . 'LISTE_DEFORMEES' = LCHPO1;
  677. TBAS1 . 'LISTE_FREQUENCES' = LFREQ1;
  678. SI (FLMODA ou FLBMOD); TBAS1 . 'LISTE_MASSES' = LMGEN1; FINSI;
  679. FINSI;
  680.  
  681. * option MAILLAGE
  682. * ---------------
  683. SI FLMAIL;
  684. TBAS1 . 'MAILLAGE_REPERE' = MESHAB;
  685. FINSI;
  686.  
  687.  
  688. FINPROC;
  689.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales