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

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