Télécharger creer_3d.procedur

Retour à la liste

Numérotation des lignes :

  1. * CREER_3D PROCEDUR FANDEUR 14/10/10 21:15:13 8178
  2. * CREER_3D PROCEDUR ANIS 94/08/25 21:15:07 1255
  3. *----------------------------------------------------------------------
  4. *
  5. * PROCEDURE CREER_3D
  6. *
  7. *
  8. * CONSTRUCTION D UN MAILLAGE ET D'UN CHAMPS SOIT DE DEPLACEMENTS, SOIT
  9. * DE CONTRAINTES, SOIT DE DEFORMATIONS OU SOIT DE PRESSION 3D A PARTIR
  10. * D UN MAILLAGE 2D ET D UN CHAMPS, RESPECTIVEMENT DE DEPLACEMENTS, DE
  11. * CONTRAINTES, DE DEFORMATIONS OU DE PRESSION FOURIER
  12. *
  13. *----------------------------------------------------------------------
  14. *
  15. * ENTREE DANS L'ORDRE
  16. * entree :
  17. * ZZMAIL OBJET MAILLAGE 2D A TRANSMETTRE SI ON TRAVAILLE AVEC
  18. * DES CHPOINTS
  19. * ZZCHPU1 CHPOINT DE DEPLACEMENTS, DE CONTRAINTES, DE
  20. * DEFORMATIONS OU DE PRESSION ISSU DU CALCUL FOURIER
  21. * ZZCHPU2 MCHAML DE CONTRAINTES OU DE DEFORMATIONS ISSU
  22. * DU CALCUL FOURIER
  23. * MODL1 MODELE A TRANSMETTRE SI ON TRAVAILLE AVEC DES MCHAML
  24. * ZANGL ANGLE DE ROTATION EN DEGREES POUR LA CONSTRUCTION
  25. * DU MAILLAGE 3D
  26. * ZM NOMBRE DE DECOUPAGES SUR L'ANGLE ZANGL
  27. * ZN NUMERO DE L HARMONIQUE (O POUR FOUR 0 OU AXIS)
  28. * on ne fait pas de distinction entre ZN positif
  29. * ou negatif
  30. *
  31. * sortie :
  32. * TAB1 : TABLE
  33. * .'MAILLAGE' : MAILLAGE
  34. * .'DEPLACEMENT': CHPOINT
  35. * .'CONTRAINTE' : CHPOINT OU MCHAML
  36. * .'DEFORMATION': CHPOINT OU MCHAML
  37. * .'FLUIDE' : CHPOINT
  38. * .'MODELE' : MODELE CORRESPONDANT AU MCHAML
  39. *----------------------------------------------------------------------
  40. 'DEBPROC' CREER_3D
  41. ZZMAIL/'MAILLAGE' ZZCHPU1/'CHPOINT' ZZCHPU2/'MCHAML'
  42. MODL0/'MMODEL' ZANGL *'FLOTTANT' ZM*'ENTIER' ZN*'ENTIER' ;
  43. *----------------------------------------------------------------------
  44. *
  45. *==== TEST SUR LA NATURE DU CHAMPS ====================================
  46. CHELEM = 'EGA' 'MCHAML ' ('TYPE' ZZCHPU2) ;
  47. CHPO1 = 'EGA' 'CHPOINT ' ('TYPE' ZZCHPU1) ;
  48. MMO1 = 'EGA' 'MMODEL ' ('TYPE' MODL0) ;
  49. 'SI' ((CHPO1 'ET' CHELEM) 'OU' (('NON' CHPO1) 'ET' ('NON' CHELEM))) ;
  50. 'ERREUR'
  51. 'IL FAUT FOURNIR UN CHPOINT OU UN MCHAML' ;
  52. QUITTER CREER_3D ;
  53. 'FINSI' ;
  54. *======================================================================
  55. *===== NPO NOMBRE DE NOEUDS DANS LES ELEMENTS =========================
  56. *===== EE : DENOMBREMENT DES TYPES D ELEMENTS DIFFERENTS ==============
  57. *===== OU DE SOUS ZONES ELEMENTAIRES ==================================
  58. *===== ZON1 : TABLE CONTENANT LES MODELES ET LES MAILLAGES DES ========
  59. *===== SOUS ZONES =====================================================
  60. *===== MASSI1 : TABLE BINAIRE DEFINISSANT LES ZONES MASSIVES ==========
  61. *===== ELEM3G : SUPPORT GEOMETRIQUE DES ELEMENTS EN BIDIM =============
  62. *===== ELEM4G : SUPPORT GEOMETRIQUE DES ELEMENTS EN TRIDIM ============
  63. *===== ELEM4F : FORMULATION CHOISIE POUR LE TRIDIMENSIONNEL ===========
  64. *==== TABLE CONTENANT LES DIFFERENTES ZONES DU MODELE =================
  65. *======================================================================
  66. ELEM4G = 'TABLE' ; ELEM4F = 'TABLE' ;
  67. ELEM3G = 'TABLE' ; MASSI1 = 'TABLE' ;
  68. NPO = 'TABLE' ; ZON1 = 'TABLE' ;
  69. EE = 0 ;
  70. *=== SI MCHAML, ON L APPLIQUE AUX NOEUDS ET ON REPERE LES ZONES =======
  71. 'SI' CHELEM ;
  72. 'SI' ('NON' MMO1) ;
  73. 'ERREUR'
  74. 'IL FAUT FOURNIR UN MODELE AVEC LE MCHAML' ;
  75. 'QUITTER' CREER_3D ;
  76. 'FINSI' ;
  77. ZON1 = 'EXTR' MODL0 'ZONE' ;
  78. NBZ0 = (('DIME' ZON1)/2) ;
  79. ZZMAIL = 'EXTR' MODL0 'MAIL' ;
  80. ZZCHPU0 = 'CHAN' 'NOEUD' MODL0 ZZCHPU2 ;
  81. 'REPETER' B000 NBZ0 ;
  82. EE = EE + 1 ;
  83. ELEM1 = ZON1. (2*EE) 'ELEM' 'TYPE' ;
  84. * 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ;
  85. * 'ERREUR'
  86. * 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ;
  87. * 'FINSI' ;
  88. 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ;
  89. NPO. EE = 2 ;
  90. MASSI1. EE = FAUX ;
  91. ELEM4G. EE = 'MOT' 'QUA4' ;
  92. ELEM4F. EE = 'MOT' 'COQ4' ;
  93. 'FINSI' ;
  94. 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ;
  95. MASSI1. EE = VRAI ;
  96. NPO. EE = 3 ;
  97. ELEM4G. EE = 'MOT' 'PRI6' ;
  98. ELEM4F. EE = 'MOT' 'PRI6' ;
  99. 'FINSI' ;
  100. 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ;
  101. MASSI1. EE = VRAI ;
  102. NPO. EE = 4 ;
  103. ELEM4G. EE = 'MOT' 'CUB8' ;
  104. ELEM4F. EE = 'MOT' 'CUB8' ;
  105. 'FINSI' ;
  106. 'FIN' B000 ;
  107. *=== SI CHPOINT,ON REPERE LES ZONES CONSTITUEES D ELEMENTS DIFFERENTS =
  108. 'SINON' ;
  109. ZZCHPU0 = ZZCHPU1;
  110. ELEM1 = ZZMAIL 'ELEM' 'TYPE' ;
  111. * 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ;
  112. * 'ERREUR'
  113. * 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ;
  114. * 'FINSI' ;
  115. 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ;
  116. EE = EE + 1 ;
  117. NPO. EE = 2 ;
  118. MASSI1. EE = FAUX ;
  119. ELEM3G. EE = 'MOT' 'SEG2' ;
  120. ELEM4G. EE = 'MOT' 'QUA4' ;
  121. 'FINSI' ;
  122. 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ;
  123. EE = EE + 1 ;
  124. NPO. EE = 3 ;
  125. MASSI1. EE = VRAI ;
  126. ELEM3G. EE = 'MOT' 'TRI3' ;
  127. ELEM4G. EE = 'MOT' 'PRI6' ;
  128. 'FINSI' ;
  129. 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ;
  130. EE = EE + 1 ;
  131. NPO. EE = 4 ;
  132. MASSI1. EE = VRAI ;
  133. ELEM3G. EE = 'MOT' 'QUA4' ;
  134. ELEM4G. EE = 'MOT' 'CUB8' ;
  135. 'FINSI' ;
  136. 'SI' ( 'EXISTE' ELEM1 'TRI6' ) ;
  137. EE = EE + 1 ;
  138. NPO. EE = 5 ;
  139. MASSI1. EE = VRAI ;
  140. ELEM3G. EE = 'MOT' 'TRI6' ;
  141. ELEM4G. EE = 'MOT' 'PR15' ;
  142. 'FINSI' ;
  143. 'SI' ( 'EXISTE' ELEM1 'QUA8' ) ;
  144. EE = EE + 1 ;
  145. NPO. EE = 6 ;
  146. MASSI1. EE = VRAI ;
  147. ELEM3G. EE = 'MOT' 'QUA8' ;
  148. ELEM4G. EE = 'MOT' 'CU20' ;
  149. 'FINSI' ;
  150. NBZ0 = EE ;
  151. 'FINSI' ;
  152. *==== TEST SUR LE CONTENU DU CHAMPS: CONTRAINTE, DEPLACEMENT ..=======
  153. IDEPL = 'EXISTE' ZZCHPU0 'UR' ;
  154. ICONT = ('EXISTE' ZZCHPU0 'N11') 'OU' ('EXISTE' ZZCHPU0 'SMRR') ;
  155. IDEFO = ('EXISTE' ZZCHPU0 'EPSS') 'OU' ('EXISTE' ZZCHPU0 'EPRR') ;
  156. IFLUI = 'EXISTE' ZZCHPU0 'P' ;
  157. 'SI' (IFLUI 'ET' IDEPL) ;
  158. 'ERREUR'
  159. 'FORMULATION FLUIDE OU MECANIQUE ' ;
  160. QUITTER CREER_3D ;
  161. 'FINSI' ;
  162. *====== SI CAS DE FIGURE NON PREVU PAR LA PROCEDURE ===================
  163. 'SI' (('NON' ICONT) 'ET' ('NON' IDEPL) 'ET'
  164. ('NON' IDEFO) 'ET' ('NON' IFLUI)) ;
  165. 'MESS'
  166. 'ON FOURNIT UN CHAMPS DE DEFORMATION OU '
  167. 'DE CONTRAINTE OU DE DEPLACEMENT EN FOURIER' ;
  168. 'ERREUR' 'CREER_3D' ;
  169. 'FINSI' ;
  170. *======= TEST SI DES POINTS DE LA STRUCTURE SONT SUR L AXE ============
  171. 'SI' (('MINI' 'ABS' ('COOR' 1 ZZMAIL)) < 1.e-5) ;
  172. AXE = VRAI ;
  173. 'SAUT' 'LIGNE';
  174. 'MESS' 'POINTS TRES PROCHES DE L AXE SERONT ELIMINES';
  175. 'SAUT' 'LIGNE';
  176. 'SINON' ;
  177. AXE = FAUX ;
  178. 'FINSI' ;
  179. *======= CHANGEMENT DE LA NATURE DU CHPOINT ===========================
  180. 'SI' (IDEPL 'OU' IFLUI ) ;
  181. ZZCHPU0 = 'CHANGER' 'ATTRIBUT' ZZCHPU0 'NATURE' 'DIFFUS' ;
  182. 'FINSI' ;
  183. *======================================================================
  184. *===== BOUCLE SUR LE NOMBRE DE TYPE D ELEMENTS ========================
  185. *===== SI PAS DE MCHAML, ON BOUCLE SUR LE NOMBRES DE TYPES ============
  186. *===== D ELEMENTS =====================================================
  187. *======================================================================
  188. MM = 0 ;
  189. 'REPETER' BOUC0 NBZ0 ;
  190. MM = MM + 1 ;
  191. 'SI' CHELEM ;
  192. MODL1 = ZON1. (2*MM - 1) ;
  193. ZZCHPU = 'REDU' ZZCHPU0 MODL1 ;
  194. ELE1 = ELEM4F. MM ;
  195. 'SINON' ;
  196. ZON1. (2*MM) = ZZMAIL 'ELEM' ELEM3G. MM ;
  197. ZZCHPU = 'REDU' ZZCHPU0 ZON1. (2*MM) ;
  198. 'FINSI' ;
  199. ELE4 = ELEM4G. MM ;
  200. MASSI = MASSI1. MM ;
  201. *======== LISTE DES COMPOSANTES DE CONTRAINTE =========================
  202. 'SI' ICONT ;
  203. 'SI' MASSI ;
  204. COMPN = 'MOTS' 'SMRR' 'SMZZ' 'SMTT' 'SMRZ' 'SMRT' 'SMZT' ;
  205. ICC1 = 'MOT' 'SMRR' ;
  206. 'SINON' ;
  207. COMPN = 'MOTS' 'N11' 'N22' 'M11' 'M22' 'N12' 'M12' ;
  208. ICC1 = 'MOT' 'N11' ;
  209. 'FINSI' ;
  210. 'FINSI' ;
  211. *======== LISTE DES COMPOSANTES DE DEFORMATION ========================
  212. 'SI' IDEFO ;
  213. 'SI' MASSI ;
  214. COMPN = 'MOTS' 'EPRR' 'EPZZ' 'EPTT' 'GARZ' 'GART' 'GAZT' ;
  215. ICC1 = 'MOT' 'EPRR' ;
  216. 'SINON' ;
  217. COMPN = 'MOTS' 'EPSS' 'EPTT' 'RTSS' 'RTTT' 'GAST' 'RTST' ;
  218. ICC1 = 'MOT' 'EPSS' ;
  219. 'FINSI' ;
  220. 'FINSI' ;
  221. *========== PASSAGE EN DIMENSION 3 ====================================
  222. 'OPTI' 'DIME' 3;
  223. *===== OPERATIONS DE TRANSLATION SUR LE MAILLAGE ET LE CHAMPS INITIAUX
  224. *===== POUR NE PAS LES AFFECTER PAR LA PROCEDURE =====================
  225. 'SI' CHELEM ;
  226. MODL2 ZCHPU = MODL1 ZZCHPU 'PLUS' (0. 0. 0.) ;
  227. MAIL1 = 'EXTR' ZCHPU 'MAIL' ;
  228. 'SINON' ;
  229. ZCHPU = ZZCHPU 'PLUS' (0. 0. 0.) ;
  230. MAIL1 = 'EXTR' ZCHPU 'MAIL' 'NOMU' ;
  231. 'FINSI' ;
  232. ZZMAIL1 = ZON1. (2*MM) 'PLUS' (0. 0. 0.) ;
  233. 'ELIM' ZZMAIL1 MAIL1 1.D-4 ;
  234. ZMAIL = ZZMAIL1 'ELEM' 'APPUYE' 'STRICTEMENT' MAIL1 ;
  235. 'OPTI' 'MODE' 'FOUR' ZN ;
  236. *============== EXTRACTION DES DEPLACEMENTS ===========================
  237. IAXIS = FAUX ;
  238. 'SI' IDEPL ;
  239. ICC1 = 'MOT' 'UX' ;
  240. CHPUR0='EXCO' 'UR' ZCHPU;
  241. CHPUZ0='EXCO' 'UZ' ZCHPU;
  242. 'SI' ('EXISTE' ZCHPU 'UT') ;
  243. CHPUT0='EXCO' 'UT' ZCHPU;
  244. 'SINON' ;
  245. IAXIS = VRAI;
  246. CHPUT0='MANU' 'CHPO' ZMAIL 1 'UT' 0. 'NATURE' 'DIFFUS';
  247. 'FINSI' ;
  248. 'FINSI' ;
  249. *============ EXTRACTION DES CONTRAINTES OU DEFORMATIONS ==============
  250. 'SI' (ICONT 'OU' IDEFO) ;
  251. COMP1 = 'MOTS' 'N11' 'EPSS' 'SMRR' 'EPRR' ;
  252. COMP2 = 'MOTS' 'N22' 'EPTT' 'SMZZ' 'EPZZ' ;
  253. COMP3 = 'MOTS' 'N12' 'GAST' 'SMRT' 'GART' ;
  254. COMP4 = 'MOTS' 'M11' 'RTSS' 'SMTT' 'EPTT' ;
  255. COMP5 = 'MOTS' 'M22' 'RTTT' 'SMRZ' 'GARZ' ;
  256. COMP6 = 'MOTS' 'M12' 'RTST' 'SMZT' 'GAZT' ;
  257. COMP7 = COMP3 'ET' COMP6 ;
  258. 'SI' ('EXISTE' ('EXCO' COMP7 ZCHPU 'NOID')) ;
  259. CHPN120='EXCO' COMP3 ZCHPU 'NOID' ;
  260. CHPM120='EXCO' COMP6 ZCHPU 'NOID' ;
  261. 'SINON' ;
  262. *============= SI CALCUL AXISYMETRIQUE, ON RAJOUTE UNE COMPOSANTE =====
  263. 'SI' (('EXISTE' ZCHPU 'N11') 'ET'
  264. ( 'NON' ('EXISTE' ZCHPU 'N12'))) ;
  265. IAXIS = VRAI;
  266. CHPN120='MANU' 'CHPO' ZMAIL 1 'N12' 0. 'NATURE' 'DIFFUS';
  267. CHPM120='MANU' 'CHPO' ZMAIL 1 'M12' 0. 'NATURE' 'DIFFUS';
  268. 'FINSI' ;
  269. 'SI' (('EXISTE' ZCHPU 'EPSS') 'ET'
  270. ( 'NON' ('EXISTE' ZCHPU 'GAST')));
  271. IAXIS = VRAI;
  272. CHPN120='MANU' 'CHPO' ZMAIL 1 'GAST' 0. 'NATURE' 'DIFFUS';
  273. CHPM120='MANU' 'CHPO' ZMAIL 1 'RTST' 0. 'NATURE' 'DIFFUS';
  274. 'FINSI' ;
  275. 'SI' (('EXISTE' ZCHPU 'EPRR') 'ET'
  276. ( 'NON' ('EXISTE' ZCHPU 'GART'))) ;
  277. IAXIS = VRAI;
  278. CHPN120='MANU' 'CHPO' ZMAIL 1 'GART' 0. 'NATURE' 'DIFFUS';
  279. CHPM120='MANU' 'CHPO' ZMAIL 1 'GAZT' 0. 'NATURE' 'DIFFUS';
  280. 'FINSI' ;
  281. 'SI' (('EXISTE' ZCHPU 'SMRR') 'ET'
  282. ( 'NON' ('EXISTE' ZCHPU 'SMRT'))) ;
  283. IAXIS = VRAI;
  284. CHPN120='MANU' 'CHPO' ZMAIL 1 'SMRT' 0. 'NATURE' 'DIFFUS';
  285. CHPM120='MANU' 'CHPO' ZMAIL 1 'SMZT' 0. 'NATURE' 'DIFFUS';
  286. 'FINSI' ;
  287. 'FINSI' ;
  288. CHPN110='EXCO' COMP1 ZCHPU 'NOID' ;
  289. CHPN220='EXCO' COMP2 ZCHPU 'NOID' ;
  290. CHPM110='EXCO' COMP4 ZCHPU 'NOID' ;
  291. CHPM220='EXCO' COMP5 ZCHPU 'NOID' ;
  292. 'FINSI' ;
  293. *======================================================================
  294. *====== SI ON TRAITE UN MCHAML ========================================
  295. *=== IN : TABLE CONTENANT LES INFORMATIONS DU MCHML ===================
  296. *=== IN.II : REPERAGE DU JJ COMPOSANTE ================================
  297. *=== IN.JJ.II: REPERAGE DU II ELEMENT ================================
  298. *=== IN.JJ.II.LL: REPERAGE DE LA VALEUR AU LL POINT DE L ELEMENT II ===
  299. *======================================================================
  300. 'SI' CHELEM ;
  301. NN = 'NBEL' ZON1. (2*MM) ;
  302. IN = TABLE ;
  303. JJ = 0 ;
  304. *====== BOUCLE SUR LES COMPOSANTES ====================================
  305. 'REPETER' BC1 6 ;
  306. JJ = JJ + 1 ;
  307. COMP0 = 'EXTR' COMPN JJ ;
  308. IN. JJ = TABLE ;
  309. II = 0 ;
  310. *====== BOUCLE SUR LE NOMBRE D ELEMENTS ===============================
  311. 'REPETER' BC2 NN ;
  312. II = II + 1 ;
  313. IN. JJ . II = TABLE ;
  314. LL = 0 ;
  315. *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT =================
  316. 'REPETER' BC22 (NPO.MM) ;<¯span~
  317. LL = LL + 1 ;
  318. IN. JJ . II . LL = 'EXTR' ZCHPU COMP0 1 II LL ;
  319. 'FIN' BC22 ;
  320. *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT =============
  321. 'FIN' BC2 ;
  322. *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS ===========================
  323. 'FIN' BC1 ;
  324. *====== FIN BOUCLE SUR LES COMPOSANTES ================================
  325. 'FINSI' ;
  326. *============ EXTRACTION DES VARIABLES DU FLUIDE ======================
  327. 'SI' IFLUI ;
  328. ICC1 = 'MOT' 'P' ;
  329. CHPP0 = 'EXCO' 'P' ZCHPU 'P' ;
  330. CHPPI0 = 'EXCO' 'PI' ZCHPU 'PI' ;
  331. CHPPUZ0 = 'EXCO' 'UZ' ZCHPU 'NOID' 'UZ' ;
  332. 'FINSI' ;
  333. *=========== CHOIX DU NOUVEAU TYPE D ELEMENT ==========================
  334. *=== SEG2 ------> QUA4 ET TRI3 ----> PRI6 ET QUA4 ------> CUB8 ========
  335. *======================================================================
  336. 'OPTI' 'ELEM' ELE4 'MODE' 'TRID' ;
  337. ZA0=0. 0. 0.;ZAX=1. 0. 0.;ZAZ=0. 0. 1.;
  338. 'DEPLA' ZMAIL 'TOUR' 90 ZA0 ZAX;
  339. *======================================================================
  340. *===== LES COMPOSANTES DES DEPLACEMENTS DEVIENNENT DES SCALAIRES CAR ==
  341. *===== ETANT EXPRIMEES DANS LE REPERE GLOBAL, ON UTILISE 'COLINEAIRE'==
  342. *======================================================================
  343. 'SI' IDEPL ;
  344. CHPUR0='NOMC' 'SCAL' CHPUR0 ;
  345. CHPUZ0='NOMC' 'SCAL' CHPUZ0 ;
  346. CHPUT0='NOMC' 'SCAL' CHPUT0 ;
  347. 'FINSI' ;
  348. K=0;
  349. *======================================================================
  350. *== TMAIL3D : TABLE CONTENANT LE MAILLAGE DES GENERATRICES SUCCESSIVES=
  351. *== TMAIL3D : TABLE CONTENANT LE CHPOINT APPUYE SUR LES GENERATRICES ==
  352. *== OU LE MCHAML APPUYE SUR LES ELEMENTS DU MAILLAGE ==================
  353. *======================================================================
  354. TMAIL3D='TABLE'; TDEP3D = 'TABLE' ;
  355. *======================================================================
  356. *=== DTHETA : INCREMENT DE L ANGLE DE ROTATION DU MAILLAGE INITIAL ===
  357. *======================================================================
  358. DTHETA=ZANGL / ZM;
  359. *======================================================================
  360. *=== DEBUT DE LA BOUCLE DE ROTATION ===================================
  361. *=== LES COMPOSANTES VARIENT EN COS(NT) OU SIN(NT) AVEC N LE NUMERO DE
  362. *=== L HARMONIQUE EN FOURIER ET T L ANGLE FORME AVEC LA CONFIGURATION
  363. *=== INITIALE =========================================================
  364. *======================================================================
  365. 'SI' ((1-(ZANGL/360)) '<' 0.005 ) ;
  366. ZMM = ZM ;
  367. 'SINON' ;
  368. ZMM = ZM + 1 ;
  369. 'FINSI' ;
  370. 'REPETER' BOU1 ZMM ;
  371. K= K + 1;
  372. THETA= (K - 1)* (DTHETA);
  373. *+DC Debut correction pourles modes antisymetriques
  374. SI (ZN > 0);
  375. COSNT= 'COS' ( ZN *THETA );
  376. SINON;
  377. COSNT= (-1.)*('SIN' ( ZN *THETA ));
  378. FINSI;
  379. * fourier 0
  380. 'SI'((ZN 'EGA' 0) 'ET' ('NON' IAXIS)) ;
  381. SINNT= 1.;
  382. 'SINON';
  383. SI (ZN > 0);
  384. SINNT= ('SIN' ( ZN *THETA ));
  385. SINON;
  386. SINNT= 'COS' ( ZN *THETA );
  387. FINSI;
  388. 'FINSI' ;
  389. *+DC Fin correction pour les modes antisymetrique
  390. COST = 'COS' THETA ;
  391. SINT = 'SIN' THETA ;
  392. *====== CHAMPS DE DEPLACEMENT ==========================================
  393. 'SI' IDEPL ;
  394. CHPUXK = 'COLI' CHPUR0 (COSNT*COST) CHPUT0 (SINNT*SINT*-1);
  395. CHPUYK = 'COLI' CHPUR0 (COSNT*SINT) CHPUT0 (SINNT*COST);
  396. CHPUZK = CHPUZ0*COSNT;
  397. CHPUXKK= 'NOMC' UX CHPUXK;
  398. CHPUYKK= 'NOMC' UY CHPUYK;
  399. CHPUZKK= 'NOMC' UZ CHPUZK;
  400. CHPUK = CHPUXKK 'ET' CHPUYKK 'ET' CHPUZKK ;
  401. 'DETR' CHPUXKK;'DETR' CHPUYKK;'DETR' CHPUZKK;
  402. 'FINSI' ;
  403. *====== CHAMPS DE CONTRAINTES OU DE DEFORMATIONS =======================
  404. 'SI' (ICONT 'OU' IDEFO) ;
  405. CHPN11K = CHPN110*COSNT ;
  406. CHPN22K = CHPN220*COSNT ;
  407. CHPN12K = CHPN120*SINNT ;
  408. CHPM11K = CHPM110*COSNT ;
  409. CHPM22K = CHPM220*COSNT ;
  410. CHPM12K = CHPM120*SINNT ;
  411. CHPUK = CHPN11K 'ET' CHPN22K 'ET' CHPN12K 'ET' CHPM11K
  412. 'ET' CHPM22K 'ET' CHPM12K;
  413. 'FINSI' ;
  414. *====== CHAMPS DE VARIABLES FLUIDES ===================================
  415. 'SI' IFLUI ;
  416. CHPPK = CHPP0*COSNT ;
  417. CHPPIK = CHPPI0*COSNT ;
  418. CHPUK = CHPPK 'ET' CHPPIK ;
  419. 'SI' ('EXISTE' ZCHPU 'UZ') ;
  420. CHPPUZK = CHPPUZ0*COSNT ;
  421. CHPUK = CHPUK 'ET' CHPPUZK;
  422. 'FINSI' ;
  423. 'FINSI' ;
  424. *======================================================================
  425. *=== ROTATION DU MAILLAGE ET TRANSLATION FICTIVE POUR NE PAS ==========
  426. *=== L AfFECTUR PAR LES OPERATIONS D ELIMINATION ======================
  427. *======================================================================
  428. 'SI' ('EGA' K 1) ;
  429. 'DEPLA' ZMAIL 'TOUR' 0. ZA0 ZAZ;
  430. 'SINON' ;
  431. 'DEPLA' ZMAIL 'TOUR' DTHETA ZA0 ZAZ;
  432. 'FINSI' ;
  433. 'SI' CHELEM ;
  434. MODL3 TDEP3D.K = MODL2 CHPUK 'PLUS' (0. 0. 0.) ;
  435. ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' ;
  436. 'SINON' ;
  437. TDEP3D.K = CHPUK 'PLUS' (0. 0. 0.) ;
  438. ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' 'NOMU';
  439. 'FINSI' ;
  440. TMAIL3D.K= ZMAIL 'PLUS' (0. 0. 0. ) ;
  441. 'ELIM' (TMAIL3D.K) ZMAIL2 1.D-4 ;
  442. *=== SI CHPOINT, ON SAUVE LE CHAMPS CORRESPONDANT A L ANGLE THETA =====
  443. 'SI' ('NON' CHELEM) ;
  444. 'SI' (K 'EGA' 1) ; ;
  445. DEP3D = TDEP3D.K ;
  446. 'SINON' ;
  447. DEP3D = DEP3D 'ET' (TDEP3D.K) ;
  448. 'FINSI' ;
  449. 'FINSI' ;
  450. 'SI' (K '>' 1) ;
  451. *==== GENERATION DU MAILLAGE ENTRE GENERATRICES =======================
  452. 'SI' ( 'NON' MASSI) ;
  453. MAIL3D1 = (TMAIL3D.(K - 1)) 'REGL' 1 (TMAIL3D. K) ;
  454. 'SINON' ;
  455. MAIL3D1 = (TMAIL3D.(K - 1)) 'VOLU' 1 (TMAIL3D. K) ;
  456. 'FINSI' ;
  457. 'SI' ('EGA' K 2) ;
  458. MAIL3D = MAIL3D1 ;
  459. 'SINON' ;
  460. MAIL3D= MAIL3D 'ET' MAIL3D1;
  461. 'FINSI' ;
  462. *==== SI MCHAML,ON LE RECONSTRUIT SUR LES ELEMENTS DU NOUVEAU MAILLAGE =
  463. *==== MAILLAGE ET DEFINITION D UN MODELE ==============================
  464. 'SI' CHELEM ;
  465. MOD1 = 'MODL' MAIL3D1 'MECANIQUE' ELE1 ;
  466. JJ = 0 ;
  467. *====== BOUCLE SUR LES COMPOSANTES ====================================
  468. 'REPETER' BC3 6 ;
  469. JJ = JJ + 1 ;
  470. 'SI' (JJ '<' 5 ) ;
  471. ALPHA = COSNT ;BETA = BETA1 ;
  472. 'SINON' ;
  473. ALPHA = SINNT ;BETA = BETA2 ;
  474. 'FINSI' ;
  475. COMP0 = 'EXTR' COMPN JJ ;
  476. II = 0 ;
  477. *====== BOUCLE SUR LE NOMBRE D ELEMENTS ===============================
  478. 'REPETER' BC4 NN ;
  479. II = II + 1 ;
  480. LL = 0 ;
  481. CHAM = TABLE ;
  482. *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT =================
  483. 'REPETER' BC44 (2*(NPO.MM)) ;
  484. LL = LL + 1 ;
  485. 'SI' ( LL '<' ((NPO.MM)+ 1 )) ;
  486. CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD'
  487. COMP0 II LL ((IN . JJ . II . LL)*BETA) ;
  488. 'SINON' ;
  489. 'SI' MASSI ;
  490. PP = LL - (NPO.MM) ;
  491. 'SINON' ;
  492. PP = 2*(NPO.MM) + 1 - LL ;
  493. 'FINSI' ;
  494. CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD'
  495. COMP0 II LL ((IN . JJ . II . PP)*ALPHA) ;
  496. 'FINSI' ;
  497. 'SI' ('EGA' LL 1) ;
  498. CHAMTOT = CHAM. LL ;
  499. 'SINON' ;
  500. CHAMTOT = CHAMTOT + CHAM. LL ;
  501. 'FINSI' ;
  502. 'FIN' BC44 ;
  503. *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT =============
  504. 'SI' (('EGA' II 1) 'ET' ('EGA' JJ 1)
  505. 'ET' ('EGA' K 2)) ;
  506. DEP3D = CHAMTOT ;
  507. 'SINON' ;
  508. DEP3D = DEP3D + CHAMTOT ;
  509. 'FINSI' ;
  510. 'FIN' BC4 ;
  511. *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS ===========================
  512. 'FIN' BC3 ;
  513. 'MENAGE' ;
  514. *====== FIN BOUCLE SUR LES COMPOSANTES ================================
  515. 'FINSI' ;
  516. 'FINSI' ;
  517. BETA1 = COSNT ; BETA2 = SINNT ;
  518. 'FIN' BOU1;
  519. *======================================================================
  520. *====== FIN BOUCLE SUR LE NOMBRE DE ROTATIONS =========================
  521. *====== CE TEST PERMET DE COMPLETER L'OBJET ===========================
  522. *====== LORSQUE L'ANGLE EST EGAL A 360 ================================
  523. *======================================================================
  524. 'SI' ((1-(ZANGL/360)) '<' 0.005 );
  525. 'SI' ( 'NON' MASSI) ;
  526. MAIL3D1 = ((TMAIL3D.(K)) 'REGL' 1 (TMAIL3D.1)) ;
  527. 'SINON' ;
  528. MAIL3D1 = (TMAIL3D.K ) 'VOLU' 1 (TMAIL3D.1);
  529. 'FINSI' ;
  530. MAIL3D= MAIL3D 'ET' MAIL3D1;
  531. 'SI' CHELEM ;
  532. MOD1 = 'MODE' MAIL3D1 'MECANIQUE' ELE1 ;
  533. JJ = 0 ;
  534. 'REPETER' BC5 6 ;
  535. JJ = JJ + 1 ;
  536. COMP0 = 'EXTR' COMPN JJ ;
  537. 'SI' (JJ '<' 5) ;
  538. ALPHA = BETA1 ; BETA = COS 0. ;
  539. 'SINON' ;
  540. ALPHA = BETA2 ; BETA = SIN 0. ;
  541. 'FINSI' ;
  542. II = 0 ;
  543. 'REPETER' BC6 NN ;
  544. II = II + 1 ;
  545. LL = 0 ;
  546. CHAM = TABLE ;
  547. 'REPETER' BC66 (2*(NPO.MM)) ;
  548. LL = LL + 1 ;
  549. 'SI' ( LL '<' ((NPO.MM) + 1 )) ;
  550. CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD'
  551. COMP0 II LL ((IN . JJ . II . LL)*ALPHA) ;
  552. 'SINON' ;
  553. 'SI' MASSI ;
  554. PP = LL - (NPO.MM) ;
  555. 'SINON' ;
  556. PP = 2*(NPO.MM) + 1 - LL ;
  557. 'FINSI' ;
  558. CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD'
  559. COMP0 II LL ((IN. JJ . II . PP)*BETA) ;
  560. 'FINSI' ;
  561. 'SI' ('EGA' LL 1) ;
  562. CHAMTOT = CHAM. LL ;
  563. 'SINON' ;
  564. CHAMTOT = CHAMTOT + CHAM. LL ;
  565. 'FINSI' ;
  566. 'FIN' BC66 ;
  567. DEP3D = DEP3D + CHAMTOT ;
  568. 'FIN' BC6 ;
  569. 'FIN' BC5 ;
  570. 'FINSI' ;
  571. 'FINSI';
  572. 'SI' ( 'EGA' MM 1) ; DEP3DI = DEP3D ; MAIL3DI = MAIL3D ;
  573. 'SINON'; DEP3DI = DEP3DI 'ET' DEP3D ; 'ELIM' MAIL3DI MAIL3D 1E-4;
  574. MAIL3DI = MAIL3DI 'ET' MAIL3D ;
  575. 'FINSI' ;
  576. DEP3D = DEP3DI ;MAIL3D = MAIL3DI ;
  577. *====== FIN BOUCLE SUR LE NOMBRE DE ZONES DU MODELE ===================
  578. 'FIN' BOUC0 ;
  579. *======================================================================
  580. *=============== FIN DU TEST COMPLETANT LA STRUCTURE ==================
  581. *===== NETTOYAGE DU MAILLAGE SI IL EXISTE DES POINTS ==================
  582. *===== APPARTENANTS A L AXE DE ROTATION ===============================
  583. *======================================================================
  584. 'SI' CHELEM ;
  585. 'ELIM' MAIL3D 1.E-4 ;
  586. MODLF = 'MODE' MAIL3D 'MECANIQUE' 'PRI6' 'CUB8' 'COQ4';
  587. MAIL3D = 'REGE' MAIL3D ;
  588. 'SINON' ;
  589. 'SI' AXE ;
  590. GEO1 = MAIL3D 'POIN' 'DROIT' ZA0 ZAZ 1.E-5 ;
  591. CH1 = 'REDU' DEP3D GEO1 ; CH2 = CH1/ZMM ;
  592. DEP3D = DEP3D - CH1 + CH2 ;
  593. 'DETR' CH1 ; 'DETR' CH2 ;
  594. DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DISCRET' ;
  595. DEP3DI = 'CHANGER' 'ATTRIBUT' DEP3DI 'NATURE' 'DISCRET' ;
  596. 'ELIM' GEO1 1.E-4 ;
  597. DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DIFFUS' ;
  598. MAIL3D = 'REGE' MAIL3D ;
  599. ** ianis (il y avait un probleme avec le numero d'harmonique
  600. ** mais je ne m'en souviens plus !!!
  601. * 'SINON' ;
  602. *==== afin de pouvoir recombiner les resultats sortant de CREER_3D
  603. *==== pour differents modes fourier, on est obligé de faire la serie
  604. *==== d operations suivantes. cela manque de rigueur mais le temps
  605. *==== a manque!
  606. * MAILBIS = (TMAIL3D.2) 'TOUR' 0.00001 ZA0 ZAZ ;
  607. * CH1 = 'MANU' 'CHPO' MAILBIS 1 ICC1 0. ;
  608. * DEP3D = DEP3D + CH1 ;
  609. * 'DETR' CH1 ;
  610. * MAIL3D = MAIL3D 'ET' MAILBIS ;
  611. * DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DISCRET' ;
  612. ** dangereux s'il y a des noeuds que l'on veut pas eliminer
  613. * 'ELIM' MAIL3D 1.E-4 ;
  614. * DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DIFFUS' ;
  615. 'FINSI' ;
  616. 'FINSI' ;
  617. *======================================================================
  618. *======= SAUVEGARDE DES RESULTATS DANS UNE TABLE COMPRENANT ===========
  619. *======= LE MAILLAGE TRIDIMENSIONNEL ET UN CHAMPS ASSOCIE =============
  620. *======================================================================
  621. TAB1 = 'TABLE' ;
  622. TAB1. 'MAILLAGE' = MAIL3D ;
  623. 'SI' IDEPL ;
  624. TAB1. 'DEPLACEMENT' = DEP3D ;
  625. 'FINSI' ;
  626. 'SI' ICONT ;
  627. TAB1. 'CONTRAINTE' = DEP3D ;
  628. 'FINSI' ;
  629. 'SI' IDEFO ;
  630. TAB1. 'DEFORMATION' = DEP3D ;
  631. 'FINSI' ;
  632. 'SI' IFLUI ;
  633. TAB1. 'FLUIDE' = DEP3D ;
  634. 'FINSI' ;
  635. 'SI' CHELEM ;
  636. TAB1. 'MODELE' = MODLF ;
  637. 'FINSI' ;
  638. *============== FIN DE LA PROCEDURE ===================================
  639. 'FINPROC' TAB1 ;
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  

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