Télécharger frctrace.procedur

Retour à la liste

Numérotation des lignes :

  1. * FRCTRACE PROCEDUR AF221230 18/04/20 21:15:01 9814
  2. DEBPROC FRCTRACE TAB1*'TABLE' TOL1*'FLOTTANT';
  3. *
  4. * --------------------------------------------------------
  5. * Procedure FRCTRACE
  6. * Imprimer les surface de capacité et/ou les enveloppes
  7. * des efforts statiques + sismiques pour les elements frame
  8. * (TIMO et POUT)
  9. *
  10. * Developpers:
  11. * Alberto FRAU
  12. * DEN/DANS/DM2S/SEMT/EMSI
  13. * Nicolas ILE
  14. * DEN/DANS/DM2S/SEMT/EMSI
  15. * Giulia DI STEFANO
  16. *
  17. *
  18. * TAB2 = FRCTRACE TAB1;
  19. *
  20. *
  21. * INPUT:
  22. *
  23. * En entrée on utilise une table TAB1. Un indice de la table TAB1
  24. * indique si la definition de la surface limite doit etre faite pour
  25. * la couche externe,interne ou intermediaire:
  26. * TAB1.'TYPE_COUCHE' MOT pour indiquer le type de
  27. * couche
  28. * 'POTEAU' pouteau
  29. * 'POUTRE' poutre
  30. * TAB1.'ENROBAGE' enrobage en m [FLOTTANT]
  31. * TAB1.'S_CADRE' espacement des cadres en
  32. * m [FLOTTANT]
  33. * TAB1.'LONGEUR_Y' longuer ly [FLOTTANT]
  34. * TAB1.'LONGEUR_Z' longeur lz [FLOTTANT]
  35. * TAB1.'FCK' resistance caracteristique
  36. * beton [FLOTTANT]
  37. * TAB1.'FSK' resistance caracteristique
  38. * acier [FLOTTANT]
  39. * TAB1.'PHI_LON' LISTREEL des barres d'acier en mm
  40. * TAB1.'PHI_Y' LISTREEL de la position y en m de
  41. * chaque barre par rapport au
  42. * baricentre de la section
  43. * TAB1.'PHI_Z' LISTREEL de la position z en m de
  44. * chaque barre par rapport au
  45. * baricentre de la section
  46. * TAB1.'ASWL_Y' aire de l'armature transversale
  47. * direction y
  48. * TAB1.'ASWL_Z' aire de l'armature transversale
  49. * direction z
  50. * TAB1.'GAMMA_C' coef gamma_c [FLOTTANT]
  51. * TAB1.'ALPA_C' coef alpha_c [FLOTTANT]
  52. * TAB1.'GAMMA_S' coef gamma_s [FLOTTANT]
  53. * TAB1.'EPSI_BET' deformation ultime beton [FLOTTANT]
  54. * TAB1.'EPSI_ACI' deformation ultime acier [FLOTTANT]
  55. * TAB1.'YOUNG_ACIER' Module Young acier [FLOTTANT]
  56. * TAB1.'EFFORT_SEISME' effort seisme - matrice
  57. * caracteristique (optionelle)
  58. * [MCHML]
  59. * TAB1.'EFFORT_STATIQUE' effort statique (optionelle)
  60. * [MCHML]
  61.  
  62.  
  63. *
  64. * TAB1.'NX' nombre de subdivisions dans le domaine N
  65. * TAB1.'NY' nombre de subdivisions dans la
  66. * direction polaire
  67. * TAB1.'BY' dimensions section direction Y
  68. * TAB1.'BZ' dimensions section direction Z
  69.  
  70.  
  71.  
  72. * TAB1.'FCK' resistance caracteristique beton
  73. * TAB1.'FSK' resistance caracteristique acier
  74. * TAB1.'YOUNG_ACIER' Module Young acier
  75. * TAB1.'PHI_LON' Liste des barres longitudinales
  76. * TAB1.'PHI_Y' Liste position y
  77. * des barres longitudinales
  78. * TAB1.'PHI_Z' Liste position z
  79. * des barres longitudinales
  80. * TAB1.'ASWL' Section des aciers transversales
  81. * TAB1.'GAMMA_C' coefficient gamma_c
  82. * TAB1.'ALPA_C' coefficient alpha
  83. * TAB1.'GAMMA_S' coefficient gamma_s
  84. * TAB1.'EFFORT_STATIQUE' effort statique (optionelle)
  85. * TAB1.'EFFORT_SEISME' matrice caracteristique
  86. * seisme (optionelle)
  87. *
  88. * OUTPUT:
  89. *
  90. *
  91. * TT1: table d'output
  92. * TT1.'LIMITE' Surface limite
  93. * TT1.'ELLIPSOIDE' Enveloppe ellipsoide
  94. * (si present dans la
  95. * TAB1 les MCHML des efforts)
  96. * TT1.'RECTANGLE' Enveloppe rectangulaire
  97. * (si present dans la
  98. * TAB1 les MCHML des efforts)
  99. *
  100. *
  101. *
  102. * --------------------------------------------------------
  103. *
  104. 'SI' ('EXIST' TAB1 'TYPE_COUCHE');
  105. TPY1 = TAB1.'TYPE_COUCHE';
  106. 'SI' ('NEG' ('TYPE' TPY1) 'MOT');
  107. 'MESS' 'Input Error ...';
  108. 'QUIT' FRCTRACE;
  109. 'FINSI';
  110. 'SINON';
  111. 'MESS' 'Input Error ...';
  112. 'QUIT' FRCTRACE;
  113. 'FINSI';
  114. *
  115. *
  116. * ------- Cas Poteau ---------------------------
  117. 'SI' (('EGA' TPY1 'POTEAU'));
  118. * controle
  119. 'SI' ('EXIST' TAB1 'NX');
  120. NX1 = TAB1.'NX';
  121. 'SI' ('NEG' ('TYPE' NX1) 'ENTIER');
  122. 'MESS' 'Input Error ...';
  123. 'QUIT' FRCTRACE;
  124. 'FINSI';
  125. 'SINON';
  126. 'MESS' 'Input Error ...';
  127. 'QUIT' FRCTRACE;
  128. 'FINSI';
  129. 'SI' ('EXIST' TAB1 'NY');
  130. NY1 = TAB1.'NY';
  131. 'SI' ('NEG' ('TYPE' NY1) 'ENTIER');
  132. 'MESS' 'Input Error ...';
  133. 'QUIT' FRCTRACE;
  134. 'FINSI';
  135. 'SINON';
  136. 'MESS' 'Input Error ...';
  137. 'QUIT' FRCTRACE;
  138. 'FINSI';
  139. 'SI' ('EXIST' TAB1 'FCK');
  140. FC1 = TAB1.'FCK';
  141. 'SI' ('NEG' ('TYPE' FC1) 'FLOTTANT');
  142. 'MESS' 'Input Error ...';
  143. 'QUIT' MRCTRACE;
  144. 'FINSI';
  145. 'SINON';
  146. 'MESS' 'Input Error ...';
  147. 'QUIT' MRCTRACE;
  148. 'FINSI';
  149. 'SI' ('EXIST' TAB1 'FSK');
  150. FS1 = TAB1.'FSK';
  151. 'SI' ('NEG' ('TYPE' FS1) 'FLOTTANT');
  152. 'MESS' 'Input Error ...';
  153. 'QUIT' FRCTRACE;
  154. 'FINSI';
  155. 'SINON';
  156. 'MESS' 'Input Error ...';
  157. 'QUIT' FRCTRACE;
  158. 'FINSI';
  159. 'SI' ('EXIST' TAB1 'GAMMA_C');
  160. GAMC = TAB1.'GAMMA_C';
  161. 'SI' ('NEG' ('TYPE' GAMC) 'FLOTTANT');
  162. 'MESS' 'Input Error ...';
  163. 'QUIT' FRCTRACE;
  164. 'FINSI';
  165. 'SINON';
  166. 'MESS' 'Input Error ...';
  167. 'QUIT' FRCTRACE;
  168. 'FINSI';
  169. 'SI' ('EXIST' TAB1 'ALPA_C');
  170. ALP1 = TAB1.'ALPA_C';
  171. 'SI' ('NEG' ('TYPE' ALP1) 'FLOTTANT');
  172. 'MESS' 'Input Error ...';
  173. 'QUIT' FRCTRACE;
  174. 'FINSI';
  175. 'SINON';
  176. 'MESS' 'Input Error ...';
  177. 'QUIT' FRCTRACE;
  178. 'FINSI';
  179. 'SI' ('EXIST' TAB1 'GAMMA_S');
  180. GAMS = TAB1.'GAMMA_S';
  181. 'SI' ('NEG' ('TYPE' GAMS) 'FLOTTANT');
  182. 'MESS' 'Input Error ...';
  183. 'QUIT' FRCTRACE;
  184. 'FINSI';
  185. 'SINON';
  186. 'MESS' 'Input Error ...';
  187. 'QUIT' FRCTRACE;
  188. 'FINSI';
  189. 'SI' ('EXIST' TAB1 'GAMMA_S');
  190. GAMS = TAB1.'GAMMA_S';
  191. 'SI' ('NEG' ('TYPE' GAMS) 'FLOTTANT');
  192. 'MESS' 'Input Error ...';
  193. 'QUIT' FRCTRACE;
  194. 'FINSI';
  195. 'SINON';
  196. 'MESS' 'Input Error ...';
  197. 'QUIT' FRCTRACE;
  198. 'FINSI';
  199. 'SI' ('EXIST' TAB1 'PHI_LON');
  200. PHI1 = TAB1.'PHI_LON';
  201. 'SI' ('NEG' ('TYPE' PHI1) 'LISTREEL');
  202. 'MESS' 'Input Error ...';
  203. 'QUIT' FRCTRACE;
  204. 'FINSI';
  205. 'SINON';
  206. 'MESS' 'Input Error ...';
  207. 'QUIT' FRCTRACE;
  208. 'FINSI';
  209. 'SI' ('EXIST' TAB1 'PHI_Y');
  210. PHIY1 = TAB1.'PHI_Y';
  211. 'SI' ('NEG' ('TYPE' PHIY1) 'LISTREEL');
  212. 'MESS' 'Input Error ...';
  213. 'QUIT' FRCTRACE;
  214. 'FINSI';
  215. 'SINON';
  216. 'MESS' 'Input Error ...';
  217. 'QUIT' FRCTRACE;
  218. 'FINSI';
  219. 'SI' ('EXIST' TAB1 'PHI_Z');
  220. PHIZ1 = TAB1.'PHI_Z';
  221. 'SI' ('NEG' ('TYPE' PHIZ1) 'LISTREEL');
  222. 'MESS' 'Input Error ...';
  223. 'QUIT' FRCTRACE;
  224. 'FINSI';
  225. 'SINON';
  226. 'MESS' 'Input Error ...';
  227. 'QUIT' FRCTRACE;
  228. 'FINSI';
  229. 'SI' ('EXIST' TAB1 'ASWL_Y');
  230. ASWLY1 = TAB1.'ASWL_Y';
  231. 'SI' ('NEG' ('TYPE' ASWLY1) 'FLOTTANT');
  232. 'MESS' 'Input Error ...';
  233. 'QUIT' FRCTRACE;
  234. 'FINSI';
  235. 'SINON';
  236. 'MESS' 'Input Error ...';
  237. 'QUIT' FRCTRACE;
  238. 'FINSI';
  239. 'SI' ('EXIST' TAB1 'ASWL_Z');
  240. ASWLZ1 = TAB1.'ASWL_Z';
  241. 'SI' ('NEG' ('TYPE' ASWLZ1) 'FLOTTANT');
  242. 'MESS' 'Input Error ...';
  243. 'QUIT' FRCTRACE;
  244. 'FINSI';
  245. 'SINON';
  246. 'MESS' 'Input Error ...';
  247. 'QUIT' FRCTRACE;
  248. 'FINSI';
  249. 'SI' ('EXIST' TAB1 'BY');
  250. BY1 = TAB1.'BY';
  251. 'SI' ('NEG' ('TYPE' BY1) 'FLOTTANT');
  252. 'MESS' 'Input Error ...';
  253. 'QUIT' FRCTRACE;
  254. 'FINSI';
  255. 'SINON';
  256. 'MESS' 'Input Error ...';
  257. 'QUIT' FRCTRACE;
  258. 'FINSI';
  259. 'SI' ('EXIST' TAB1 'BZ');
  260. BZ1 = TAB1.'BZ';
  261. 'SI' ('NEG' ('TYPE' BZ1) 'FLOTTANT');
  262. 'MESS' 'Input Error ...';
  263. 'QUIT' FRCTRACE;
  264. 'FINSI';
  265. 'SINON';
  266. 'MESS' 'Input Error ...';
  267. 'QUIT' FRCTRACE;
  268. 'FINSI';
  269. 'SI' ('EXIST' TAB1 'ENROBAGE');
  270. ENR1 = TAB1.'ENROBAGE';
  271. 'SI' ('NEG' ('TYPE' ENR1) 'FLOTTANT');
  272. 'MESS' 'Input Error ...';
  273. 'QUIT' FRCTRACE;
  274. 'FINSI';
  275. 'SINON';
  276. 'MESS' 'Input Error ...';
  277. 'QUIT' FRCTRACE;
  278. 'FINSI';
  279. 'SI' ('EXIST' TAB1 'S_CADRE');
  280. SS1 = TAB1.'S_CADRE';
  281. 'SI' ('NEG' ('TYPE' SS1) 'FLOTTANT');
  282. 'MESS' 'Input Error ...';
  283. 'QUIT' FRCTRACE;
  284. 'FINSI';
  285. 'SINON';
  286. 'MESS' 'Input Error ...';
  287. 'QUIT' FRCTRACE;
  288. 'FINSI';
  289. 'SI' ('EXIST' TAB1 'LONGEUR_Y');
  290. LLY1 = TAB1.'LONGEUR_Y';
  291. 'SI' ('NEG' ('TYPE' LLY1) 'FLOTTANT');
  292. 'MESS' 'Input Error ...';
  293. 'QUIT' FRCTRACE;
  294. 'FINSI';
  295. 'SINON';
  296. 'MESS' 'Input Error ...';
  297. 'QUIT' FRCTRACE;
  298. 'FINSI';
  299. 'SI' ('EXIST' TAB1 'LONGEUR_Z');
  300. LLZ1 = TAB1.'LONGEUR_Z';
  301. 'SI' ('NEG' ('TYPE' LLZ1) 'FLOTTANT');
  302. 'MESS' 'Input Error ...';
  303. 'QUIT' FRCTRACE;
  304. 'FINSI';
  305. 'SINON';
  306. 'MESS' 'Input Error ...';
  307. 'QUIT' FRCTRACE;
  308. 'FINSI';
  309. 'SI' ('EXIST' TAB1 'YOUNG_ACIER');
  310. E_YACI1 = TAB1.'YOUNG_ACIER';
  311. 'SI' ('NEG' ('TYPE' E_YACI1) 'FLOTTANT');
  312. 'MESS' 'Input Error ...';
  313. 'QUIT' FRCTRACE;
  314. 'FINSI';
  315. 'SINON';
  316. 'MESS' 'Input Error ...';
  317. 'QUIT' FRCTRACE;
  318. 'FINSI';
  319. 'SI' ('EXIST' TAB1 'EPSI_BET');
  320. EPS_BET1 = TAB1.'EPSI_BET';
  321. 'SI' ('NEG' ('TYPE' EPS_BET1) 'FLOTTANT');
  322. 'MESS' 'Input Error ...';
  323. 'QUIT' FRCTRACE;
  324. 'FINSI';
  325. 'SINON';
  326. 'MESS' 'Input Error ...';
  327. 'QUIT' FRCTRACE;
  328. 'FINSI';
  329. 'SI' ('EXIST' TAB1 'EPSI_ACI');
  330. EPS_ACI1 = TAB1.'EPSI_ACI';
  331. 'SI' ('NEG' ('TYPE' EPS_ACI1) 'FLOTTANT');
  332. 'MESS' 'Input Error ...';
  333. 'QUIT' FRCTRACE;
  334. 'FINSI';
  335. 'SINON';
  336. 'MESS' 'Input Error ...';
  337. 'QUIT' FRCTRACE;
  338. 'FINSI';
  339. *
  340. *
  341. * Normalisation
  342. CC1 = 'ENTI'(FC1/100000);
  343. * CC1 = 0;
  344. 'SI' (CC1 '>' 1);
  345. FC1 = FC1/1000;
  346. FS1 = FS1/1000;
  347. E_YACI1 = E_YACI1/1000;
  348. 'FINSI';
  349. *
  350. * Calcul resistance Fcd et Fsd
  351. FCD = ((FC1)*(ALP1))/(GAMC);
  352. FSD = ((FS1))/(GAMS);
  353. *
  354. * Armature total longitudinale
  355. ASTT1 = 0.0;
  356. NN1 = 'DIME' PHI1;
  357. I = 1;
  358. 'REPE' IND1 (NN1);
  359. ASTT1 = ASTT1 + ((((('EXTR' PHI1 I)/(1000))**(2.0))/(4.0))*(PI));
  360. I = I + 1;
  361. 'FIN' IND1;
  362. *
  363. * calculs des parametres wsy wsz wwy wwz lz ly et xi
  364. ZZ_Y1 = BY1 - ((2.0)*(ENR1));
  365. ZZ_Z1 = BZ1 - ((2.0)*(ENR1));
  366. WSY1 = ((ASTT1)*(FSD))/(((BY1)*(BZ1))*(FCD));
  367. WSZ1 = ((ASTT1)*(FSD))/(((BY1)*(BZ1))*(FCD));
  368. WWY1 = ((ASWLY1)*(FSD))/(((BZ1)*(SS1))*(FCD));
  369. WWZ1 = ((ASWLZ1)*(FSD))/(((BY1)*(SS1))*(FCD));
  370. LY1 = (LLZ1)/(BY1);
  371. LZ1 = (LLY1)/(BZ1);
  372. XIY1 = (ZZ_Y1)/(BY1);
  373. XIZ1 = (ZZ_Z1)/(BZ1);
  374. *
  375. * test court ou long
  376. TEST_Y = (LY1 < (WSY1/WWY1));
  377. TEST_Z = (LZ1 < (WSZ1/WWZ1));
  378. *
  379. 'SI' (TEST_Y 'ET' TEST_Z);
  380. * ------------- Poteau Court ---------------------------------
  381. * ((FCD)*((BZ1)*(BY1)))
  382. NN_LC1 = ((-1.0)*(((WSY1)*(1.0)*((FCD)*((BZ1)*(BY1)))) +
  383. ((FCD)*((BZ1)*(BY1)))));
  384. NN_LT1 = ((1.0)*(((WSY1)*(1.0)*((FCD)*((BZ1)*(BY1))))));
  385. NN_LC1 = NN_LC1 - ((NN_LC1)*(1.E-4));
  386. NN_LT1 = NN_LT1 - ((NN_LT1)*(1.E-4));
  387. * nombre des pas pour les efforts N
  388. PAS1 = ((NN_LT1 - NN_LC1)/(NX1));
  389. *
  390. * liste efforts N
  391. LL_NN1 = 'PROG' NN_LC1 PAS PAS1 NN_LT1;
  392. *
  393. * boucle sur les efforts N
  394. NN1 = 'DIME' LL_NN1;
  395. I = 1;
  396. TAB_N1 = 'TABLE';
  397. TAB_VY1 = 'TABLE';
  398. TAB_VZ1 = 'TABLE';
  399. * liste des angles phi (coordonée polaire)
  400. LL_PHI = 'PROG' 0. PAS ((360.)/(4*NY1)) 360.;
  401. 'REPE' IND1 (NN1);
  402. * position N
  403. TAB_N1 . I = EXTR LL_NN1 I;
  404. EF_NN1 = (TAB_N1 . I);
  405. * valeurs de demarage
  406. EF_VY1 = ((ABS(EF_NN1))*(1.E-3));
  407. EF_VZ1 = ((ABS(EF_NN1))*(1.E-3));
  408. *
  409. * remplissage table
  410. TB1 = 'TABLE';
  411. TB1.'TYPE' = 'CHAINE' 'P_COURT';
  412. TB1.'NN' = EF_NN1;
  413. TB1.'VY' = EF_VY1;
  414. TB1.'VZ' = 0.0;
  415. TB1.'MT' = 0.0;
  416. TB1.'MY' = 0.0;
  417. TB1.'MZ' = 0.0;
  418. TB1.'BY' = BY1;
  419. TB1.'BZ' = BZ1;
  420. TB1.'FCD' = FCD;
  421. TB1.'FSD' = FSD;
  422. TB1.'WSY' = WSY1;
  423. TB1.'WSZ' = WSZ1;
  424. TB1.'WWY' = WWY1;
  425. TB1.'WWZ' = WWZ1;
  426. TB1.'LY' = LY1;
  427. TB1.'LZ' = LZ1;
  428. TB1.'XIY' = XIY1;
  429. TB1.'XIZ' = XIZ1;
  430. *
  431. * calcul de g pou y
  432. G_VY1 = G_ULTIFR TB1;
  433. *
  434. TB1.'VY' = 0.0;
  435. TB1.'VZ' = EF_VZ1;
  436. * calcul de g pou z
  437. G_VZ1 = G_ULTIFR TB1;
  438. *
  439. * deduction des efforts Vylim et Vzlim pour N donné
  440. EF_VY2 = ((EF_VY1)/((1.0 - G_VY1)**(0.5)));
  441. EF_VZ2 = ((EF_VZ1)/((1.0 - G_VZ1)**(0.5)));
  442. * test
  443. TB1.'VY' = EF_VY2;
  444. TB1.'VZ' = 0.0;
  445. G_VY2 = G_ULTIFR TB1;
  446. TB1.'VY' = 0.0;
  447. TB1.'VZ' = EF_VZ2;
  448. G_VZ2 = G_ULTIFR TB1;
  449. *
  450. 'SI' (((ABS(G_VY2)) > TOL1) 'ET' ((ABS(G_VZ2)) > TOL1));
  451. 'MESS' 'Error ....';
  452. 'QUIT' FRCTRACE;
  453. 'FINSI';
  454. *
  455. * list des effort Vy et Vz pour N donné
  456. LL_VY1 = EF_VY2*(COS(LL_PHI));
  457. LL_VZ1 = EF_VZ2*(SIN(LL_PHI));
  458. TAB_VY1. I = LL_VY1;
  459. TAB_VZ1. I = LL_VZ1;
  460. *
  461. I = I + 1;
  462. 'FIN' IND1;
  463. *
  464. * initializzation maillage
  465. MAI1 = VIDE MAILLAGE;
  466. I = 1;
  467. * boucle sur les points selon N
  468. 'REPE' IND1 (NN1 - 1);
  469. J = 1;
  470. * bouche sur les points theta
  471. NN2 = 'DIME' (TAB_VY1. I);
  472. 'REPE' IND2 (NN2 - 1);
  473. * 4 points par elements
  474. XX1 = 'EXTR' (TAB_VY1 . I) J;
  475. YY1 = 'EXTR' (TAB_VZ1 . I) J;
  476. ZZ1 = (TAB_N1 . I);
  477. *
  478. XX2 = 'EXTR' (TAB_VY1 . I) (J + 1);
  479. YY2 = 'EXTR' (TAB_VZ1 . I) (J + 1);
  480. ZZ2 = (TAB_N1 . I);
  481. *
  482. XX3 = 'EXTR' (TAB_VY1 . (I + 1)) (J + 1);
  483. YY3 = 'EXTR' (TAB_VZ1 . (I + 1)) (J + 1);
  484. ZZ3 = (TAB_N1 . (I + 1));
  485. *
  486. XX4 = 'EXTR' (TAB_VY1 . (I + 1)) (J);
  487. YY4 = 'EXTR' (TAB_VZ1 . (I + 1)) (J);
  488. ZZ4 = (TAB_N1 . (I + 1));
  489. *
  490. * points
  491. PP1 = XX1 YY1 ZZ1;
  492. PP2 = XX2 YY2 ZZ2;
  493. PP3 = XX3 YY3 ZZ3;
  494. PP4 = XX4 YY4 ZZ4;
  495. * element
  496. OPTI ELEM SEG2;
  497. L1 = D 1 PP1 PP2;
  498. L2 = D 1 PP2 PP3;
  499. L3 = D 1 PP3 PP4;
  500. L4 = D 1 PP4 PP1;
  501. *
  502. * maillage
  503. OPTI ELEM QUA4;
  504. MAI1 = MAI1 'ET' ('DALL' L1 L2 L3 L4);
  505. *
  506. J = J + 1;
  507. 'FIN' IND2;
  508. I = I + 1;
  509. 'FIN' IND1;
  510. 'SINON';
  511. 'SI' (TEST_Y 'OU' TEST_Z);
  512. *
  513. * ------------- Poteau Mixte ---------------------------------
  514. *
  515. * cas mixte non implementé
  516. MESS 'PoT Mixte...';
  517. QUIT FRCTRACE;
  518. *
  519. *
  520. *
  521. 'SINON';
  522. *
  523. * ------------- Poteau long ---------------------------------
  524. *
  525. * effort N de compression et de traction
  526. NN_LC1 = ((-1.0)*(((WSY1)*(1.0)*((FCD)*((BZ1)*(BY1)))) +
  527. ((FCD)*((BZ1)*(BY1)))));
  528. NN_LT1 = ((1.0)*(((WSY1)*(1.0)*((FCD)*((BZ1)*(BY1))))));
  529. NN_LC1 = NN_LC1 - ((NN_LC1)*(1.E-4));
  530. NN_LT1 = NN_LT1 - ((NN_LT1)*(1.E-4));
  531. *
  532. * pas pour la liste des N
  533. PAS1 = ((NN_LT1 - NN_LC1)/(NX1));
  534. *
  535. * subdivision du domaine N
  536. LL_NN1 = 'PROG' NN_LC1 PAS PAS1 NN_LT1;
  537. *
  538. * boucle pour chaque force N
  539. NN1 = 'DIME' LL_NN1;
  540. I = 1;
  541. TAB_N1 = 'TABLE';
  542. TAB_MY1 = 'TABLE';
  543. TAB_MZ1 = 'TABLE';
  544. LL_PHI = 'PROG' 0. PAS ((360.)/(4*NY1)) 360.;
  545. *
  546. 'REPE' IND1 (NN1);
  547. TAB_N1 . I = EXTR LL_NN1 I;
  548. * initialissation de l'effort N
  549. EF_NN1 = (TAB_N1 . I);
  550. * initialissation des moments y et z
  551. EF_MY1A = ((ABS(EF_NN1))*(1.E-3));
  552. EF_MY1B = ((ABS(EF_NN1))*(2.E-3));
  553. EF_MZ1A = ((ABS(EF_NN1))*(1.E-3));
  554. EF_MZ1B = ((ABS(EF_NN1))*(2.E-3));
  555. *
  556. * preparation de la table pour G_ULTIFR
  557. TB1 = TABLE;
  558. TB1.'TYPE' = CHAINE 'P_LONG';
  559. TB1.'NN' = EF_NN1;
  560. TB1.'VY' = 0.0;
  561. TB1.'VZ' = 0.0;
  562. TB1.'MT' = 0.0;
  563. TB1.'MY' = EF_MY1A;
  564. TB1.'MZ' = 0.0;
  565. TB1.'BY' = BY1;
  566. TB1.'BZ' = BZ1;
  567. TB1.'FCD' = FCD;
  568. TB1.'FSD' = FSD;
  569. TB1.'PHI_LON' = PHI1;
  570. TB1.'PHI_Y' = PHIY1;
  571. TB1.'PHI_Z' = PHIZ1;
  572. TB1.'EPSI_BET' = EPS_BET1;
  573. TB1.'EPSI_ACI' = EPS_ACI1;
  574. TB1.'YOUNG_ACIER' = E_YACI1;
  575. * premiere calcul de g (My point 1)
  576. G_MY1 = G_ULTIFR TB1;
  577. TB1.'MY' = EF_MY1B;
  578. * premiere calcul de g (My point 2)
  579. G_MY2 = G_ULTIFR TB1;
  580. * calcul de Mylim pour N donné
  581. RE_MY2P = (((EF_MY1A)**(1.5)) - ((EF_MY1B)**(1.5))/
  582. (G_MY2 - G_MY1))**((1.0)/(1.5));
  583. EF_MY2P = ((G_MY1 + (((EF_MY1A)/(RE_MY2P))**(1.5)))**
  584. ((1.0)/(1.5)))*(RE_MY2P);
  585. *
  586. * premiere calcul de g (Mz point 1)
  587. TB1.'MY' = 0.0;
  588. TB1.'MZ' = EF_MZ1A;
  589. G_MZ1 = G_ULTIFR TB1;
  590. *
  591. * premiere calcul de g (Mz point 2)
  592. TB1.'MZ' = EF_MZ1B;
  593. G_MZ2 = G_ULTIFR TB1;
  594. * calcul de Mzlim pour N donné
  595. RE_MZ2P = (((EF_MZ1A)**(1.5)) - ((EF_MZ1B)**(1.5))/
  596. (G_MZ2 - G_MZ1))**((1.0)/(1.5));
  597. EF_MZ2P = ((G_MZ1 + (((EF_MZ1A)/(RE_MZ2P))**(1.5)))**
  598. ((1.0)/(1.5)))*(RE_MZ2P);
  599. *
  600. * premiere calcul de g (My point 1) - negatif
  601. EF_MY1A = ((ABS(EF_NN1))*(-1.E-3));
  602. EF_MY1B = ((ABS(EF_NN1))*(-2.E-3));
  603. EF_MZ1A = ((ABS(EF_NN1))*(-1.E-3));
  604. EF_MZ1B = ((ABS(EF_NN1))*(-2.E-3));
  605. TB1.'MY' = EF_MY1A;
  606. TB1.'MZ' = 0.0;
  607. G_MY1 = G_ULTIFR TB1;
  608. * premiere calcul de g (My point 2) - negatif
  609. TB1.'MY' = EF_MY1B;
  610. G_MY2 = G_ULTIFR TB1;
  611. * calcul de Mylim pour N donné - negatif
  612. RE_MY2N = (((ABS(EF_MY1A))**(1.5)) - ((ABS(EF_MY1B))**(1.5))/
  613. (G_MY2 - G_MY1))**((1.0)/(1.5));
  614. RE_MY2N = ((RE_MY2N)*(-1.0));
  615. EF_MY2N = ((G_MY1 + (((EF_MY1A)/(RE_MY2N))**(1.5)))**
  616. ((1.0)/(1.5)))*(RE_MY2N);
  617. *
  618. * premiere calcul de g (Mz point 1) - negatif
  619. TB1.'MY' = 0.0;
  620. TB1.'MZ' = EF_MZ1A;
  621. G_MZ1 = G_ULTIFR TB1;
  622. *
  623. * premiere calcul de g (Mz point 2) - negatif
  624. TB1.'MZ' = EF_MZ1B;
  625. G_MZ2 = G_ULTIFR TB1;
  626. * calcul de Mzlim pour N donné - negatif
  627. RE_MZ2N = (((ABS(EF_MZ1A))**(1.5)) - ((ABS(EF_MZ1B))**(1.5))/
  628. (G_MZ2 - G_MZ1))**((1.0)/(1.5));
  629. RE_MZ2N = ((RE_MZ2N)*(-1.0));
  630. EF_MZ2N = ((G_MZ1 + (((EF_MZ1A)/(RE_MZ2N))**(1.5)))**
  631. ((1.0)/(1.5)))*(RE_MZ2N);
  632. *
  633. * test
  634. TB1.'MY' = EF_MY2P;
  635. TB1.'MZ' = 0.0;
  636. G_MY2P = G_ULTIFR TB1;
  637. TB1.'MY' = EF_MY2N;
  638. TB1.'MZ' = 0.0;
  639. G_MY2N = G_ULTIFR TB1;
  640. TB1.'MY' = 0.0;
  641. TB1.'MZ' = EF_MZ2P;
  642. G_MZ2P = G_ULTIFR TB1;
  643. TB1.'MY' = 0.0;
  644. TB1.'MZ' = EF_MZ2N;
  645. G_MZ2N = G_ULTIFR TB1;
  646. *
  647. 'SI' (((ABS(G_MY2P)) > TOL1) 'ET' ((ABS(G_MY2N)) > TOL1) 'ET'
  648. ((ABS(G_MZ2P)) > TOL1) 'ET' ((ABS(G_MZ2N)) > TOL1));
  649. 'MESS' 'Error ....';
  650. 'QUIT' FRCTRACE;
  651. 'FINSI';
  652. *
  653. * semplissage des listes selon l'angle polaire
  654. LL_MY1 = 'PROG';
  655. LL_MZ1 = 'PROG';
  656. JJ1 = 1;
  657. 'REPE' IND2 ('DIME' LL_PHI);
  658. VPHI1 = 'EXTR' LL_PHI JJ1;
  659. 'SI' ((VPHI1 >EG 0.0) 'ET' (VPHI1 < 90.));
  660. LL_MY1 = LL_MY1 'ET' ('PROG' ((EF_MY2P)*(COS(VPHI1))));
  661. LL_MZ1 = LL_MZ1 'ET' ('PROG' ((EF_MZ2P)*(SIN(VPHI1))));
  662. 'SINON';
  663. 'SI' ((VPHI1 >EG 90.) 'ET' (VPHI1 < 180.));
  664. LL_MY1 = LL_MY1 'ET' ('PROG' ((ABS(EF_MY2N))*(COS(VPHI1))));
  665. LL_MZ1 = LL_MZ1 'ET' ('PROG' ((EF_MZ2P)*(SIN(VPHI1))));
  666. 'SINON';
  667. 'SI' ((VPHI1 >EG 180.) 'ET' (VPHI1 < 270.));
  668. LL_MY1 = LL_MY1 'ET'
  669. ('PROG' ((ABS(EF_MY2N))*(COS(VPHI1))));
  670. LL_MZ1 = LL_MZ1 'ET'
  671. ('PROG' ((ABS(EF_MZ2N))*(SIN(VPHI1))));
  672. 'SINON';
  673. LL_MY1 = LL_MY1 'ET' ('PROG' ((EF_MY2P)*(COS(VPHI1))));
  674. LL_MZ1 = LL_MZ1 'ET'
  675. ('PROG' ((ABS(EF_MZ2N))*(SIN(VPHI1))));
  676. 'FINSI';
  677. 'FINSI';
  678. 'FINSI';
  679. JJ1 = JJ1 + 1;
  680. 'FIN' IND2;
  681. TAB_MY1. I = LL_MY1;
  682. TAB_MZ1. I = LL_MZ1;
  683. *
  684. I = I + 1;
  685. 'FIN' IND1;
  686. *
  687. *
  688. * contruction du maillage de la surface de capacité -
  689. * element par element
  690. MAI1 = VIDE MAILLAGE;
  691. I = 1;
  692. 'REPE' IND1 (NN1 - 1);
  693. J = 1;
  694. NN2 = 'DIME' (TAB_MY1. I);
  695. 'REPE' IND2 (NN2 - 1);
  696. XX1 = 'EXTR' (TAB_MY1 . I) J;
  697. YY1 = 'EXTR' (TAB_MZ1 . I) J;
  698. ZZ1 = (TAB_N1 . I);
  699. *
  700. XX2 = 'EXTR' (TAB_MY1 . I) (J + 1);
  701. YY2 = 'EXTR' (TAB_MZ1 . I) (J + 1);
  702. ZZ2 = (TAB_N1 . I);
  703. *
  704. XX3 = 'EXTR' (TAB_MY1 . (I + 1)) (J + 1);
  705. YY3 = 'EXTR' (TAB_MZ1 . (I + 1)) (J + 1);
  706. ZZ3 = (TAB_N1 . (I + 1));
  707. *
  708. XX4 = 'EXTR' (TAB_MY1 . (I + 1)) (J);
  709. YY4 = 'EXTR' (TAB_MZ1 . (I + 1)) (J);
  710. ZZ4 = (TAB_N1 . (I + 1));
  711. *
  712. PP1 = XX1 YY1 ZZ1;
  713. PP2 = XX2 YY2 ZZ2;
  714. PP3 = XX3 YY3 ZZ3;
  715. PP4 = XX4 YY4 ZZ4;
  716. OPTI ELEM SEG2;
  717. L1 = D 1 PP1 PP2;
  718. L2 = D 1 PP2 PP3;
  719. L3 = D 1 PP3 PP4;
  720. L4 = D 1 PP4 PP1;
  721. *
  722. OPTI ELEM QUA4;
  723. MAI1 = MAI1 'ET' ('DALL' L1 L2 L3 L4);
  724. *
  725. J = J + 1;
  726. 'FIN' IND2;
  727. I = I + 1;
  728. 'FIN' IND1;
  729. 'FINSI';
  730. 'FINSI';
  731. 'FINSI';
  732. *
  733. *
  734. * ------- Cas Poutre ---------------------------
  735. 'SI' (('EGA' TPY1 'POUTRE'));
  736. * controle
  737. 'SI' ('EXIST' TAB1 'NX');
  738. NX1 = TAB1.'NX';
  739. 'SI' ('NEG' ('TYPE' NX1) 'ENTIER');
  740. 'MESS' 'Input Error ...';
  741. 'QUIT' FRCTRACE;
  742. 'FINSI';
  743. 'SINON';
  744. 'MESS' 'Input Error ...';
  745. 'QUIT' FRCTRACE;
  746. 'FINSI';
  747. 'SI' ('EXIST' TAB1 'NY');
  748. NY1 = TAB1.'NY';
  749. 'SI' ('NEG' ('TYPE' NY1) 'ENTIER');
  750. 'MESS' 'Input Error ...';
  751. 'QUIT' FRCTRACE;
  752. 'FINSI';
  753. 'SINON';
  754. 'MESS' 'Input Error ...';
  755. 'QUIT' FRCTRACE;
  756. 'FINSI';
  757. 'SI' ('EXIST' TAB1 'FCK');
  758. FC1 = TAB1.'FCK';
  759. 'SI' ('NEG' ('TYPE' FC1) 'FLOTTANT');
  760. 'MESS' 'Input Error ...';
  761. 'QUIT' MRCTRACE;
  762. 'FINSI';
  763. 'SINON';
  764. 'MESS' 'Input Error ...';
  765. 'QUIT' MRCTRACE;
  766. 'FINSI';
  767. 'SI' ('EXIST' TAB1 'FSK');
  768. FS1 = TAB1.'FSK';
  769. 'SI' ('NEG' ('TYPE' FS1) 'FLOTTANT');
  770. 'MESS' 'Input Error ...';
  771. 'QUIT' FRCTRACE;
  772. 'FINSI';
  773. 'SINON';
  774. 'MESS' 'Input Error ...';
  775. 'QUIT' FRCTRACE;
  776. 'FINSI';
  777. 'SI' ('EXIST' TAB1 'GAMMA_C');
  778. GAMC = TAB1.'GAMMA_C';
  779. 'SI' ('NEG' ('TYPE' GAMC) 'FLOTTANT');
  780. 'MESS' 'Input Error ...';
  781. 'QUIT' FRCTRACE;
  782. 'FINSI';
  783. 'SINON';
  784. 'MESS' 'Input Error ...';
  785. 'QUIT' FRCTRACE;
  786. 'FINSI';
  787. 'SI' ('EXIST' TAB1 'ALPA_C');
  788. ALP1 = TAB1.'ALPA_C';
  789. 'SI' ('NEG' ('TYPE' ALP1) 'FLOTTANT');
  790. 'MESS' 'Input Error ...';
  791. 'QUIT' FRCTRACE;
  792. 'FINSI';
  793. 'SINON';
  794. 'MESS' 'Input Error ...';
  795. 'QUIT' FRCTRACE;
  796. 'FINSI';
  797. 'SI' ('EXIST' TAB1 'GAMMA_S');
  798. GAMS = TAB1.'GAMMA_S';
  799. 'SI' ('NEG' ('TYPE' GAMS) 'FLOTTANT');
  800. 'MESS' 'Input Error ...';
  801. 'QUIT' FRCTRACE;
  802. 'FINSI';
  803. 'SINON';
  804. 'MESS' 'Input Error ...';
  805. 'QUIT' FRCTRACE;
  806. 'FINSI';
  807. 'SI' ('EXIST' TAB1 'GAMMA_S');
  808. GAMS = TAB1.'GAMMA_S';
  809. 'SI' ('NEG' ('TYPE' GAMS) 'FLOTTANT');
  810. 'MESS' 'Input Error ...';
  811. 'QUIT' FRCTRACE;
  812. 'FINSI';
  813. 'SINON';
  814. 'MESS' 'Input Error ...';
  815. 'QUIT' FRCTRACE;
  816. 'FINSI';
  817. 'SI' ('EXIST' TAB1 'PHI_LON');
  818. PHI1 = TAB1.'PHI_LON';
  819. 'SI' ('NEG' ('TYPE' PHI1) 'LISTREEL');
  820. 'MESS' 'Input Error ...';
  821. 'QUIT' FRCTRACE;
  822. 'FINSI';
  823. 'SINON';
  824. 'MESS' 'Input Error ...';
  825. 'QUIT' FRCTRACE;
  826. 'FINSI';
  827. 'SI' ('EXIST' TAB1 'PHI_Y');
  828. PHIY1 = TAB1.'PHI_Y';
  829. 'SI' ('NEG' ('TYPE' PHIY1) 'LISTREEL');
  830. 'MESS' 'Input Error ...';
  831. 'QUIT' FRCTRACE;
  832. 'FINSI';
  833. 'SINON';
  834. 'MESS' 'Input Error ...';
  835. 'QUIT' FRCTRACE;
  836. 'FINSI';
  837. 'SI' ('EXIST' TAB1 'PHI_Z');
  838. PHIZ1 = TAB1.'PHI_Z';
  839. 'SI' ('NEG' ('TYPE' PHIZ1) 'LISTREEL');
  840. 'MESS' 'Input Error ...';
  841. 'QUIT' FRCTRACE;
  842. 'FINSI';
  843. 'SINON';
  844. 'MESS' 'Input Error ...';
  845. 'QUIT' FRCTRACE;
  846. 'FINSI';
  847. 'SI' ('EXIST' TAB1 'ASWL_Z');
  848. ASWLZ1 = TAB1.'ASWL_Z';
  849. 'SI' ('NEG' ('TYPE' ASWLZ1) 'FLOTTANT');
  850. 'MESS' 'Input Error ...';
  851. 'QUIT' FRCTRACE;
  852. 'FINSI';
  853. 'SINON';
  854. 'MESS' 'Input Error ...';
  855. 'QUIT' FRCTRACE;
  856. 'FINSI';
  857. 'SI' ('EXIST' TAB1 'BY');
  858. BY1 = TAB1.'BY';
  859. 'SI' ('NEG' ('TYPE' BY1) 'FLOTTANT');
  860. 'MESS' 'Input Error ...';
  861. 'QUIT' FRCTRACE;
  862. 'FINSI';
  863. 'SINON';
  864. 'MESS' 'Input Error ...';
  865. 'QUIT' FRCTRACE;
  866. 'FINSI';
  867. 'SI' ('EXIST' TAB1 'BZ');
  868. BZ1 = TAB1.'BZ';
  869. 'SI' ('NEG' ('TYPE' BZ1) 'FLOTTANT');
  870. 'MESS' 'Input Error ...';
  871. 'QUIT' FRCTRACE;
  872. 'FINSI';
  873. 'SINON';
  874. 'MESS' 'Input Error ...';
  875. 'QUIT' FRCTRACE;
  876. 'FINSI';
  877. 'SI' ('EXIST' TAB1 'ENROBAGE');
  878. ENR1 = TAB1.'ENROBAGE';
  879. 'SI' ('NEG' ('TYPE' ENR1) 'FLOTTANT');
  880. 'MESS' 'Input Error ...';
  881. 'QUIT' FRCTRACE;
  882. 'FINSI';
  883. 'SINON';
  884. 'MESS' 'Input Error ...';
  885. 'QUIT' FRCTRACE;
  886. 'FINSI';
  887. 'SI' ('EXIST' TAB1 'S_CADRE');
  888. SS1 = TAB1.'S_CADRE';
  889. 'SI' ('NEG' ('TYPE' SS1) 'FLOTTANT');
  890. 'MESS' 'Input Error ...';
  891. 'QUIT' FRCTRACE;
  892. 'FINSI';
  893. 'SINON';
  894. 'MESS' 'Input Error ...';
  895. 'QUIT' FRCTRACE;
  896. 'FINSI';
  897. 'SI' ('EXIST' TAB1 'LONGEUR_Y');
  898. LLY1 = TAB1.'LONGEUR_Y';
  899. 'SI' ('NEG' ('TYPE' LLY1) 'FLOTTANT');
  900. 'MESS' 'Input Error ...';
  901. 'QUIT' FRCTRACE;
  902. 'FINSI';
  903. 'SINON';
  904. 'MESS' 'Input Error ...';
  905. 'QUIT' FRCTRACE;
  906. 'FINSI';
  907. 'SI' ('EXIST' TAB1 'YOUNG_ACIER');
  908. E_YACI1 = TAB1.'YOUNG_ACIER';
  909. 'SI' ('NEG' ('TYPE' E_YACI1) 'FLOTTANT');
  910. 'MESS' 'Input Error ...';
  911. 'QUIT' FRCTRACE;
  912. 'FINSI';
  913. 'SINON';
  914. 'MESS' 'Input Error ...';
  915. 'QUIT' FRCTRACE;
  916. 'FINSI';
  917. 'SI' ('EXIST' TAB1 'EPSI_BET');
  918. EPS_BET1 = TAB1.'EPSI_BET';
  919. 'SI' ('NEG' ('TYPE' EPS_BET1) 'FLOTTANT');
  920. 'MESS' 'Input Error ...';
  921. 'QUIT' FRCTRACE;
  922. 'FINSI';
  923. 'SINON';
  924. 'MESS' 'Input Error ...';
  925. 'QUIT' FRCTRACE;
  926. 'FINSI';
  927. 'SI' ('EXIST' TAB1 'EPSI_ACI');
  928. EPS_ACI1 = TAB1.'EPSI_ACI';
  929. 'SI' ('NEG' ('TYPE' EPS_ACI1) 'FLOTTANT');
  930. 'MESS' 'Input Error ...';
  931. 'QUIT' FRCTRACE;
  932. 'FINSI';
  933. 'SINON';
  934. 'MESS' 'Input Error ...';
  935. 'QUIT' FRCTRACE;
  936. 'FINSI';
  937. *
  938. *
  939. * Normalisation
  940. CC1 = 'ENTI'(FC1/100000);
  941. * CC1 = 0;
  942. 'SI' (CC1 '>' 1);
  943. FC1 = FC1/1000;
  944. FS1 = FS1/1000;
  945. E_YACI1 = E_YACI1/1000;
  946. 'FINSI';
  947. *
  948. * Calcul resistance Fcd et Fsd
  949. FCD = ((FC1)*(ALP1))/(GAMC);
  950. FSD = ((FS1))/(GAMS);
  951. *
  952. * Armature total longitudinale
  953. ASTT1 = 0.0;
  954. NN1 = 'DIME' PHI1;
  955. I = 1;
  956. 'REPE' IND1 (NN1);
  957. ASTT1 = ASTT1 + ((((('EXTR' PHI1 I)/(1000))**(2.0))/(4.0))*(PI));
  958. I = I + 1;
  959. 'FIN' IND1;
  960. *
  961. * calculs des parametres wsy wsz wwy wwz lz ly et xi
  962. ZZ_Z1 = BZ1 - ((2.0)*(ENR1));
  963. WSZ1 = ((ASTT1)*(FSD))/(((BY1)*(BZ1))*(FCD));
  964. WWZ1 = ((ASWLZ1)*(FSD))/(((BY1)*(SS1))*(FCD));
  965. LZ1 = (LLY1)/(BZ1);
  966. XIZ1 = (ZZ_Z1)/(BZ1);
  967. *
  968. * test court ou long
  969. TEST_Z = (LZ1 < (WSZ1/WWZ1));
  970. *
  971. 'SI' (TEST_Z);
  972. * ------------- Poutre Courte ---------------------------------
  973. * ((FCD)*((BZ1)*(BY1)))
  974. NN_LC1 = ((-1.0)*(((WSZ1)*(1.0)*((FCD)*((BZ1)*(BY1)))) +
  975. ((FCD)*((BZ1)*(BY1)))));
  976. NN_LT1 = ((1.0)*(((WSZ1)*(1.0)*((FCD)*((BZ1)*(BY1))))));
  977. NN_LC1 = NN_LC1 - ((NN_LC1)*(1.E-4));
  978. NN_LT1 = NN_LT1 - ((NN_LT1)*(1.E-4));
  979. * nombre des pas pour les efforts N
  980. PAS1 = ((NN_LT1 - NN_LC1)/(NX1));
  981. *
  982. LL_NN1 = 'PROG' NN_LC1 PAS PAS1 NN_LT1;
  983. *
  984. * liste efforts N
  985. NN1 = 'DIME' LL_NN1;
  986. I = 1;
  987. TAB_N1 = 'TABLE';
  988. TAB_VZ1 = 'TABLE';
  989. * liste des angles phi (coordonée polaire)
  990. LL_PHI = 'PROG' 0. PAS ((360.)/(4*NY1)) 360.;
  991. 'REPE' IND1 (NN1);
  992. * position N
  993. TAB_N1 . I = EXTR LL_NN1 I;
  994. * valeurs de demarage
  995. EF_NN1 = (TAB_N1 . I);
  996. EF_VZ1 = ((ABS(EF_NN1))*(1.E-3));
  997. *
  998. TB1 = 'TABLE';
  999. TB1.'TYPE' = 'CHAINE' 'PT_COURT';
  1000. TB1.'NN' = EF_NN1;
  1001. TB1.'VY' = 0.0;
  1002. TB1.'VZ' = EF_VZ1;
  1003. TB1.'MT' = 0.0;
  1004. TB1.'MY' = 0.0;
  1005. TB1.'MZ' = 0.0;
  1006. TB1.'BY' = BY1;
  1007. TB1.'BZ' = BZ1;
  1008. TB1.'FCD' = FCD;
  1009. TB1.'FSD' = FSD;
  1010. TB1.'WSZ' = WSZ1;
  1011. TB1.'WWZ' = WWZ1;
  1012. TB1.'LZ' = LZ1;
  1013. TB1.'XIZ' = XIZ1;
  1014. *
  1015. TB11 = COPI TB1;
  1016. * calcul de g pou z
  1017. G_VZ1 = G_ULTIFR TB1;
  1018. *
  1019. * deduction de l'effort Vzlim pour N donné
  1020. EF_VZ2 = ((EF_VZ1)/((1.0 - G_VZ1)**(0.5)));
  1021. * test
  1022. TB1.'VY' = 0.0;
  1023. TB1.'VZ' = EF_VZ2;
  1024. G_VZ2 = G_ULTIFR TB1;
  1025. *
  1026. 'SI' (((ABS(G_VZ2)) > TOL1));
  1027. 'MESS' 'Error ....';
  1028. 'QUIT' FRCTRACE;
  1029. 'FINSI';
  1030. *
  1031. * list Vz pour N donné
  1032. LL_VZ1 = PROG EF_VZ2 ((-1.0)*(EF_VZ2));
  1033. TAB_VZ1. I = LL_VZ1;
  1034. *
  1035. I = I + 1;
  1036. 'FIN' IND1;
  1037. *
  1038. * initializzation maillage
  1039. MAI1 = VIDE MAILLAGE;
  1040. I = 1;
  1041. * boucle sur les points selon N
  1042. 'REPE' IND1 (NN1 - 1);
  1043. *
  1044. * cordonée des points positifs et negatifs
  1045. XX1 = 0.0;
  1046. YY1 = 'EXTR' (TAB_VZ1 . I) 1;
  1047. ZZ1 = (TAB_N1 . I);
  1048. *
  1049. XX2 = 0.0;
  1050. YY2 = 'EXTR' (TAB_VZ1 . (I + 1)) 1;
  1051. ZZ2 = (TAB_N1 . (I + 1));
  1052. *
  1053. XX3 = 0.0;
  1054. YY3 = 'EXTR' (TAB_VZ1 . I) 2;
  1055. ZZ3 = (TAB_N1 . I);
  1056. *
  1057. XX4 = 0.0;
  1058. YY4 = 'EXTR' (TAB_VZ1 . (I + 1)) 2;
  1059. ZZ4 = (TAB_N1 . (I + 1));
  1060. *
  1061. * points
  1062. PP1 = XX1 YY1 ZZ1;
  1063. PP2 = XX2 YY2 ZZ2;
  1064. PP3 = XX3 YY3 ZZ3;
  1065. PP4 = XX4 YY4 ZZ4;
  1066. * element
  1067. OPTI ELEM SEG2;
  1068. L1 = D 1 PP1 PP2;
  1069. L2 = D 1 PP3 PP4;
  1070. *
  1071. MAI1 = MAI1 'ET' L1 'ET' L2;
  1072. *
  1073. I = I + 1;
  1074. 'FIN' IND1;
  1075. 'SINON';
  1076. *
  1077. *
  1078. * ------------- Poutre Longe ---------------------------------
  1079. *
  1080. * effort N de compression et de traction
  1081. NN_LC1 = ((-1.0)*(((WSZ1)*(1.0)*((FCD)*((BZ1)*(BY1)))) +
  1082. ((FCD)*((BZ1)*(BY1)))));
  1083. NN_LT1 = ((1.0)*(((WSZ1)*(1.0)*((FCD)*((BZ1)*(BY1))))));
  1084. NN_LC1 = NN_LC1 - ((NN_LC1)*(1.E-4));
  1085. NN_LT1 = NN_LT1 - ((NN_LT1)*(1.E-4));
  1086. *
  1087. * pas pour la liste des N
  1088. PAS1 = ((NN_LT1 - NN_LC1)/(NX1));
  1089. *
  1090. * subdivision du domaine N
  1091. LL_NN1 = 'PROG' NN_LC1 PAS PAS1 NN_LT1;
  1092. *
  1093. * boucle pour chaque force N
  1094. NN1 = 'DIME' LL_NN1;
  1095. I = 1;
  1096. TAB_N1 = 'TABLE';
  1097. TAB_MY1 = 'TABLE';
  1098. *
  1099. 'REPE' IND1 (NN1);
  1100. * initialissation de l'effort N
  1101. TAB_N1 . I = EXTR LL_NN1 I;
  1102. EF_NN1 = (TAB_N1 . I);
  1103. * initialissation du moment y
  1104. EF_MY1A = ((ABS(EF_NN1))*(1.E-3));
  1105. EF_MY1B = ((ABS(EF_NN1))*(2.E-3));
  1106. *
  1107. TB1 = TABLE;
  1108. TB1.'TYPE' = CHAINE 'PT_LONG';
  1109. TB1.'NN' = EF_NN1;
  1110. TB1.'VY' = 0.0;
  1111. TB1.'VZ' = 0.0;
  1112. TB1.'MT' = 0.0;
  1113. TB1.'MY' = EF_MY1A;
  1114. TB1.'MZ' = 0.0;
  1115. TB1.'BY' = BY1;
  1116. TB1.'BZ' = BZ1;
  1117. TB1.'FCD' = FCD;
  1118. TB1.'FSD' = FSD;
  1119. TB1.'PHI_LON' = PHI1;
  1120. TB1.'PHI_Y' = PHIY1;
  1121. TB1.'PHI_Z' = PHIZ1;
  1122. TB1.'EPSI_BET' = EPS_BET1;
  1123. TB1.'EPSI_ACI' = EPS_ACI1;
  1124. TB1.'YOUNG_ACIER' = E_YACI1;
  1125. * premiere calcul de g (My point 1)
  1126. G_MY1 = G_ULTIFR TB1;
  1127. TB1.'MY' = EF_MY1B;
  1128. * premiere calcul de g (My point 2)
  1129. G_MY2 = G_ULTIFR TB1;
  1130. * calcul de Mylim pour N donné
  1131. RE_MY2P = (((EF_MY1A)**(1.5)) - ((EF_MY1B)**(1.5))/
  1132. (G_MY2 - G_MY1))**((1.0)/(1.5));
  1133. EF_MY2P = ((G_MY1 + (((EF_MY1A)/(RE_MY2P))**(1.5)))**
  1134. ((1.0)/(1.5)))*(RE_MY2P);
  1135. *
  1136. *
  1137. * premiere calcul de g (My point 1) - negatif
  1138. EF_MY1A = ((ABS(EF_NN1))*(-1.E-5));
  1139. EF_MY1B = ((ABS(EF_NN1))*(-2.E-5));
  1140. EF_MZ1A = ((ABS(EF_NN1))*(-1.E-5));
  1141. EF_MZ1B = ((ABS(EF_NN1))*(-2.E-5));
  1142. TB1.'MY' = EF_MY1A;
  1143. TB1.'MZ' = 0.0;
  1144. G_MY1 = G_ULTIFR TB1;
  1145. * premiere calcul de g (My point 2) - negatif
  1146. TB1.'MY' = EF_MY1B;
  1147. G_MY2 = G_ULTIFR TB1;
  1148. * calcul de Mylim pour N donné - negatif
  1149. RE_MY2N = (((ABS(EF_MY1A))**(1.5)) - ((ABS(EF_MY1B))**(1.5))/
  1150. (G_MY2 - G_MY1))**((1.0)/(1.5));
  1151. RE_MY2N = ((RE_MY2N)*(-1.0));
  1152. EF_MY2N = ((G_MY1 + (((EF_MY1A)/(RE_MY2N))**(1.5)))**
  1153. ((1.0)/(1.5)))*(RE_MY2N);
  1154. * test
  1155. TB1.'MY' = EF_MY2P;
  1156. TB1.'MZ' = 0.0;
  1157. G_MY2P = G_ULTIFR TB1;
  1158. TB1.'MY' = EF_MY2N;
  1159. TB1.'MZ' = 0.0;
  1160. G_MY2N = G_ULTIFR TB1;
  1161. *
  1162. 'SI' (((ABS(G_MY2P)) > TOL1) 'ET' ((ABS(G_MY2N)) > TOL1));
  1163. 'MESS' 'Error ....';
  1164. 'QUIT' FRCTRACE;
  1165. 'FINSI';
  1166. *
  1167. TAB_MY1. I = PROG EF_MY2P EF_MY2N;
  1168. *
  1169. I = I + 1;
  1170. 'FIN' IND1;
  1171. *
  1172. *
  1173. * contruction maillage
  1174. MAI1 = VIDE MAILLAGE;
  1175. I = 1;
  1176. 'REPE' IND1 (NN1 - 1);
  1177. *
  1178. XX1 = 'EXTR' (TAB_MY1 . I) 1;
  1179. YY1 = 0.0;
  1180. ZZ1 = (TAB_N1 . I);
  1181. *
  1182. XX2 = 'EXTR' (TAB_MY1 . (I + 1)) 1;
  1183. YY2 = 0.0;
  1184. ZZ2 = (TAB_N1 . (I + 1));
  1185. *
  1186. XX3 = 'EXTR' (TAB_MY1 . (I)) 2;
  1187. YY3 = 0.0;
  1188. ZZ3 = (TAB_N1 . (I));
  1189. *
  1190. XX4 = 'EXTR' (TAB_MY1 . (I + 1)) 2;
  1191. YY4 = 0.0;
  1192. ZZ4 = (TAB_N1 . (I + 1));
  1193. *
  1194. PP1 = XX1 YY1 ZZ1;
  1195. PP2 = XX2 YY2 ZZ2;
  1196. PP3 = XX3 YY3 ZZ3;
  1197. PP4 = XX4 YY4 ZZ4;
  1198. OPTI ELEM SEG2;
  1199. L1 = D 1 PP1 PP2;
  1200. L2 = D 1 PP3 PP4;
  1201. *
  1202. MAI1 = MAI1 'ET' L1 'ET' L2;
  1203. *
  1204. I = I + 1;
  1205. 'FIN' IND1;
  1206. 'FINSI';
  1207. 'FINSI';
  1208. *
  1209. *
  1210. ELIM 0.001 MAI1;
  1211. TT1 = 'TABLE';
  1212. TT1.'LIMITE' = MAI1;
  1213. *
  1214. * tracer l'enveloppe (optionelle)
  1215. *
  1216. * Control
  1217. 'SI' ('EXIST' TAB1 'EFFORT_SEISME');
  1218. CHL1 = TAB1.'EFFORT_SEISME';
  1219. 'SI' ('NEG' ('TYPE' CHL1) 'MCHAML');
  1220. 'MESS' 'Input Error ...';
  1221. 'QUIT' MRCTRACE;
  1222. 'FINSI';
  1223. 'FINSI';
  1224. 'SI' ('EXIST' TAB1 'EFFORT_STATIQUE');
  1225. CHL2 = TAB1.'EFFORT_STATIQUE';
  1226. 'SI' ('NEG' ('TYPE' CHL2) 'MCHAML');
  1227. 'MESS' 'Input Error ...';
  1228. 'QUIT' MRCTRACE;
  1229. 'FINSI';
  1230. 'FINSI';
  1231. *
  1232. 'SI' ('EGA' ('TYPE' (CHL1)) 'MCHAML');
  1233. *
  1234. * extraire les contraintes (statiques)
  1235. NN0 = 'EXTR' CHL2 'EFFX' 1 1 1;
  1236. VY0 = 'EXTR' CHL2 'EFFY' 1 1 1;
  1237. VZ0 = 'EXTR' CHL2 'EFFZ' 1 1 1;
  1238. MT0 = 'EXTR' CHL2 'MOMX' 1 1 1;
  1239. MY0 = 'EXTR' CHL2 'MOMY' 1 1 1;
  1240. MZ0 = 'EXTR' CHL2 'MOMZ' 1 1 1;
  1241. *
  1242. * extraire les contraintes (sismiques)
  1243. * plus covariances
  1244. NNNN1 = 'EXTR' CHL1 'C11' 1 1 1;
  1245. NNVY1 = 'EXTR' CHL1 'C12' 1 1 1;
  1246. NNVZ1 = 'EXTR' CHL1 'C13' 1 1 1;
  1247. NNMT1 = 'EXTR' CHL1 'C14' 1 1 1;
  1248. NNMY1 = 'EXTR' CHL1 'C15' 1 1 1;
  1249. NNMZ1 = 'EXTR' CHL1 'C16' 1 1 1;
  1250. VYVY1 = 'EXTR' CHL1 'C22' 1 1 1;
  1251. VYVZ1 = 'EXTR' CHL1 'C23' 1 1 1;
  1252. VYMT1 = 'EXTR' CHL1 'C24' 1 1 1;
  1253. VYMY1 = 'EXTR' CHL1 'C25' 1 1 1;
  1254. VYMZ1 = 'EXTR' CHL1 'C26' 1 1 1;
  1255. VZVZ1 = 'EXTR' CHL1 'C33' 1 1 1;
  1256. VZMT1 = 'EXTR' CHL1 'C34' 1 1 1;
  1257. VZMY1 = 'EXTR' CHL1 'C35' 1 1 1;
  1258. VZMZ1 = 'EXTR' CHL1 'C36' 1 1 1;
  1259. MTMT1 = 'EXTR' CHL1 'C44' 1 1 1;
  1260. MTMY1 = 'EXTR' CHL1 'C45' 1 1 1;
  1261. MTMZ1 = 'EXTR' CHL1 'C46' 1 1 1;
  1262. MYMY1 = 'EXTR' CHL1 'C55' 1 1 1;
  1263. MYMZ1 = 'EXTR' CHL1 'C56' 1 1 1;
  1264. MZMZ1 = 'EXTR' CHL1 'C66' 1 1 1;
  1265. *
  1266. * scaling
  1267. SI (CC1 > 1);
  1268. NN0 = NN0/1000;
  1269. VY0 = VY0/1000;
  1270. VZ0 = VZ0/1000;
  1271. MT0 = MT0/1000;
  1272. MY0 = MY0/1000;
  1273. MZ0 = MZ0/1000;
  1274. *
  1275. NNNN1 = ((NNNN1)/((1000)**(2.0)));
  1276. NNVY1 = ((NNVY1)/((1000)**(2.0)));
  1277. NNVZ1 = ((NNVZ1)/((1000)**(2.0)));
  1278. NNMT1 = ((NNMT1)/((1000)**(2.0)));
  1279. NNMY1 = ((NNMY1)/((1000)**(2.0)));
  1280. NNMZ1 = ((NNMZ1)/((1000)**(2.0)));
  1281. VYVY1 = ((VYVY1)/((1000)**(2.0)));
  1282. VYVZ1 = ((VYVZ1)/((1000)**(2.0)));
  1283. VYMT1 = ((VYMT1)/((1000)**(2.0)));
  1284. VYMY1 = ((VYMY1)/((1000)**(2.0)));
  1285. VYMZ1 = ((VYMZ1)/((1000)**(2.0)));
  1286. VZVZ1 = ((VZVZ1)/((1000)**(2.0)));
  1287. VZMT1 = ((VZMT1)/((1000)**(2.0)));
  1288. VZMY1 = ((VZMY1)/((1000)**(2.0)));
  1289. VZMZ1 = ((VZMZ1)/((1000)**(2.0)));
  1290. MTMT1 = ((MTMT1)/((1000)**(2.0)));
  1291. MTMY1 = ((MTMY1)/((1000)**(2.0)));
  1292. MTMZ1 = ((MTMZ1)/((1000)**(2.0)));
  1293. MYMY1 = ((MYMY1)/((1000)**(2.0)));
  1294. MYMZ1 = ((MYMZ1)/((1000)**(2.0)));
  1295. MZMZ1 = ((MZMZ1)/((1000)**(2.0)));
  1296. FINSI;
  1297. * calcul des valeurs et vecteurs propres
  1298. MAI1 = 0. 0. 0.;
  1299. *
  1300. 'SI' (('EGA' TPY1 'POTEAU'));
  1301. * choix des efforts selon les cas
  1302. 'SI' (TEST_Y 'ET' TEST_Z);
  1303. N11N11E = VYVY1;
  1304. N11N22E = VYVZ1;
  1305. N11N12E = NNVY1;
  1306. N22N22E = VZVZ1;
  1307. N22N12E = NNVZ1;
  1308. N12N12E = NNNN1;
  1309. N110E = VY0;
  1310. N220E = VZ0;
  1311. N120E = NN0;
  1312. 'SINON';
  1313. 'SI' (TEST_Y 'OU' TEST_Z);
  1314. 'MESS' 'Pot_Mixte';
  1315. 'QUIT' FRCTRACE;
  1316. 'SINON';
  1317. N11N11E = MYMY1;
  1318. N11N22E = MYMZ1;
  1319. N11N12E = NNMY1;
  1320. N22N22E = MZMZ1;
  1321. N22N12E = NNMZ1;
  1322. N12N12E = NNNN1;
  1323. N110E = MY0;
  1324. N220E = MZ0;
  1325. N120E = NN0;
  1326. 'FINSI';
  1327. 'FINSI';
  1328. 'SINON';
  1329. 'SI' (('EGA' TPY1 'POUTRE'));
  1330. 'SI' (TEST_Z);
  1331. N11N11E = VZVZ1;
  1332. N11N22E = NNVZ1;
  1333. N22N22E = NNNN1;
  1334. N110E = VZ0;
  1335. N220E = NN0;
  1336. 'SINON';
  1337. N11N11E = MYMY1;
  1338. N11N22E = NNMY1;
  1339. N22N22E = NNNN1;
  1340. N110E = MY0;
  1341. N220E = NN0;
  1342. 'FINSI';
  1343. 'FINSI';
  1344. 'FINSI';
  1345. *
  1346. *------------ Cas Poteau -----------------------------
  1347. *
  1348. *
  1349. 'SI' (('EGA' TPY1 'POTEAU'));
  1350. * calcul des valeurs propres
  1351. MATXE = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  1352. MATXE = MATXE 'ET' ('MANU' 'RIGIDITE' MAI1 ('MOTS' 'UX' 'UY' 'UZ')
  1353. ('PROG' N11N11E N11N22E N11N12E
  1354. N11N22E N22N22E N22N12E
  1355. N11N12E N22N12E N12N12E));
  1356. *
  1357. NORMATXE =
  1358. (((N11N11E)**(2.0)) + ((N11N22E)**(2.0)) + ((N11N12E)**(2.0)) +
  1359. ((N11N22E)**(2.0)) + ((N22N22E)**(2.0)) + ((N22N12E)**(2.0)) +
  1360. ((N11N12E)**(2.0)) + ((N22N12E)**(2.0)) + ((N12N12E)**(2.0)))
  1361. **(0.5);
  1362. * cas de la norme null
  1363. 'SI' (NORMATXE 'EGA' 0.0);
  1364. NORMATXE = 1.0;
  1365. 'FINSI';
  1366. * Matrice M egal à l'identité
  1367. XIDE1 = ('MASS' 'UX' MAI1 1.0) 'ET' (MASS 'UY' MAI1 1.0)
  1368. 'ET' ('MASS' 'UZ' MAI1 1.0);
  1369. *
  1370. OPTI EPSI LINEAIRE;
  1371. EIGE = 'VIBR' 'INTERVALLE' 0. 20000. 'BASSE' 3 (MATXE/NORMATXE)
  1372. XIDE1 'IMPR' 'MULT';
  1373. *
  1374. * post traintement pour determiner les valuers propres et
  1375. * les vecteurs propres
  1376. 'SI' ('EXIST' (EIGE.MODES) 1);
  1377. LAM1E = ((EIGE.MODES. 1 .FREQUENCE)*((2.0)*(PI)))**(2.0);
  1378. NORVEC1E =
  1379. ((('EXTR' (EIGE.MODES. 1 .DEFORMEE_MODALE) MAI1 'UX')**(2))
  1380. + (('EXTR' (EIGE.MODES. 1 .DEFORMEE_MODALE) MAI1 'UY')**(2))
  1381. + (('EXTR' (EIGE.MODES. 1 .DEFORMEE_MODALE) MAI1 'UZ')**(2)))
  1382. **(0.5);
  1383. VECT1E = (EIGE.MODES. 1 .DEFORMEE_MODALE)/(NORVEC1E);
  1384. 'SINON';
  1385. LAM1E = 0.0;
  1386. NORVEC1E = 0.0;
  1387. VECT1E = MANU CHPO MAI1 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0;
  1388. 'FINSI';
  1389. 'SI' ('EXIST' (EIGE.MODES) 2);
  1390. LAM2E = ((EIGE.MODES. 2 .FREQUENCE)*((2.0)*(PI)))**(2.0);
  1391. NORVEC2E =
  1392. ((('EXTR' (EIGE.MODES. 2 .DEFORMEE_MODALE) MAI1 'UX')**(2))
  1393. + (('EXTR' (EIGE.MODES. 2 .DEFORMEE_MODALE) MAI1 'UY')**(2))
  1394. + (('EXTR' (EIGE.MODES. 2 .DEFORMEE_MODALE) MAI1 'UZ')**(2)))
  1395. **(0.5);
  1396. VECT2E = (EIGE.MODES. 2 .DEFORMEE_MODALE)/(NORVEC2E);
  1397. 'SINON';
  1398. LAM2E = 0.0;
  1399. NORVEC2E = 0.0;
  1400. VECT2E = MANU CHPO MAI1 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0;
  1401. 'FINSI';
  1402. 'SI' ('EXIST' (EIGE.MODES) 3);
  1403. LAM3E = ((EIGE.MODES. 3 .FREQUENCE)*((2.0)*(PI)))**(2.0);
  1404. NORVEC3E =
  1405. ((('EXTR' (EIGE.MODES. 3 .DEFORMEE_MODALE) MAI1 'UX')**(2))
  1406. + (('EXTR' (EIGE.MODES. 3 .DEFORMEE_MODALE) MAI1 'UY')**(2))
  1407. + (('EXTR' (EIGE.MODES. 3 .DEFORMEE_MODALE) MAI1 'UZ')**(2)))
  1408. **(0.5);
  1409. VECT3E = (EIGE.MODES. 3 .DEFORMEE_MODALE)/(NORVEC3E);
  1410. 'SINON';
  1411. LAM3E = 0.0;
  1412. NORVEC3E = 0.0;
  1413. VECT3E = MANU CHPO MAI1 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0;
  1414. 'FINSI';
  1415. *
  1416. * scaling
  1417. LAM1E = ((NORMATXE)*(LAM1E));
  1418. LAM2E = ((NORMATXE)*(LAM2E));
  1419. LAM3E = ((NORMATXE)*(LAM3E));
  1420. *
  1421. * Autovaleurs
  1422. LL1E = (LAM1E)**(0.5);
  1423. LL2E = (LAM2E)**(0.5);
  1424. LL3E = (LAM3E)**(0.5);
  1425. *
  1426. * Autovecteur
  1427. VECT1EX = 'EXTR' VECT1E 'UX' MAI1;
  1428. VECT1EY = 'EXTR' VECT1E 'UY' MAI1;
  1429. VECT1EZ = 'EXTR' VECT1E 'UZ' MAI1;
  1430. VECT2EX = 'EXTR' VECT2E 'UX' MAI1;
  1431. VECT2EY = 'EXTR' VECT2E 'UY' MAI1;
  1432. VECT2EZ = 'EXTR' VECT2E 'UZ' MAI1;
  1433. VECT3EX = 'EXTR' VECT3E 'UX' MAI1;
  1434. VECT3EY = 'EXTR' VECT3E 'UY' MAI1;
  1435. VECT3EZ = 'EXTR' VECT3E 'UZ' MAI1;
  1436. *
  1437. * definition du maillage pour l'enveloppe
  1438. MAI2E = 'VIDE' MAILLAGE;
  1439. ND1 = 8;
  1440. ND2 = 8;
  1441. LL_FHI1 = 'PROG' 0. 'PAS' (90./ND1) 90.;
  1442. LL_FHI2 = 'PROG' 0. 'PAS' (89./ND2) 89.;
  1443. II1 = 1;
  1444. JJ1 = 2;
  1445. *
  1446. * boucle sur les points (on va definir la surface sur 8 quadrantes)
  1447. * cordonée polaire fhi1 (plan xy) entre 0 pi/2
  1448. * cordonée polaire fhi2 (azimuth) entre 0 pi/2
  1449. 'REPE' IND1 (ND1*ND2);
  1450. *
  1451. * quadrant 1 fhi1 = [0 pi/2] fhi2 = [0 pi/2]
  1452. VAL_FHI1 = ('EXTR' LL_FHI1 (II1));
  1453. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1454. X1_1EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1455. Y1_1EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1456. Z1_1EL = ((LL3E)*(SIN(VAL_FHI2)));
  1457. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1));
  1458. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1459. X2_1EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1460. Y2_1EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1461. Z2_1EL = ((LL3E)*(SIN(VAL_FHI2)));
  1462. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1));
  1463. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1464. X3_1EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1465. Y3_1EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1466. Z3_1EL = ((LL3E)*(SIN(VAL_FHI2)));
  1467. VAL_FHI1 = ('EXTR' LL_FHI1 (II1));
  1468. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1469. X4_1EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1470. Y4_1EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1471. Z4_1EL = ((LL3E)*(SIN(VAL_FHI2)));
  1472. X1_1E =
  1473. ((X1_1EL)*(VECT1EX)) + ((Y1_1EL)*(VECT2EX)) + ((Z1_1EL)*(VECT3EX));
  1474. Y1_1E =
  1475. ((X1_1EL)*(VECT1EY)) + ((Y1_1EL)*(VECT2EY)) + ((Z1_1EL)*(VECT3EY));
  1476. Z1_1E =
  1477. ((X1_1EL)*(VECT1EZ)) + ((Y1_1EL)*(VECT2EZ)) + ((Z1_1EL)*(VECT3EZ));
  1478. X2_1E =
  1479. ((X2_1EL)*(VECT1EX)) + ((Y2_1EL)*(VECT2EX)) + ((Z2_1EL)*(VECT3EX));
  1480. Y2_1E =
  1481. ((X2_1EL)*(VECT1EY)) + ((Y2_1EL)*(VECT2EY)) + ((Z2_1EL)*(VECT3EY));
  1482. Z2_1E =
  1483. ((X2_1EL)*(VECT1EZ)) + ((Y2_1EL)*(VECT2EZ)) + ((Z2_1EL)*(VECT3EZ));
  1484. X3_1E =
  1485. ((X3_1EL)*(VECT1EX)) + ((Y3_1EL)*(VECT2EX)) + ((Z3_1EL)*(VECT3EX));
  1486. Y3_1E =
  1487. ((X3_1EL)*(VECT1EY)) + ((Y3_1EL)*(VECT2EY)) + ((Z3_1EL)*(VECT3EY));
  1488. Z3_1E =
  1489. ((X3_1EL)*(VECT1EZ)) + ((Y3_1EL)*(VECT2EZ)) + ((Z3_1EL)*(VECT3EZ));
  1490. X4_1E =
  1491. ((X4_1EL)*(VECT1EX)) + ((Y4_1EL)*(VECT2EX)) + ((Z4_1EL)*(VECT3EX));
  1492. Y4_1E =
  1493. ((X4_1EL)*(VECT1EY)) + ((Y4_1EL)*(VECT2EY)) + ((Z4_1EL)*(VECT3EY));
  1494. Z4_1E =
  1495. ((X4_1EL)*(VECT1EZ)) + ((Y4_1EL)*(VECT2EZ)) + ((Z4_1EL)*(VECT3EZ));
  1496. *
  1497. * quadrant 2 fhi1 = [pi/2 pi] fhi2 = [0 pi/2]
  1498. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(2.0));
  1499. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1500. X1_2EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1501. Y1_2EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1502. Z1_2EL = ((LL3E)*(SIN(VAL_FHI2)));
  1503. VAL_FHI1 = (EXTR LL_FHI1 (II1 + 1)) + ((180.0)/(2.0));
  1504. VAL_FHI2 = (EXTR LL_FHI2 (JJ1 - 1));
  1505. X2_2EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1506. Y2_2EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1507. Z2_2EL = ((LL3E)*(SIN(VAL_FHI2)));
  1508. VAL_FHI1 = (EXTR LL_FHI1 (II1 + 1)) + ((180.0)/(2.0));
  1509. VAL_FHI2 = (EXTR LL_FHI2 (JJ1));
  1510. X3_2EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1511. Y3_2EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1512. Z3_2EL = ((LL3E)*(SIN(VAL_FHI2)));
  1513. VAL_FHI1 = (EXTR LL_FHI1 (II1)) + ((180.0)/(2.0));
  1514. VAL_FHI2 = (EXTR LL_FHI2 (JJ1));
  1515. X4_2EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1516. Y4_2EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1517. Z4_2EL = ((LL3E)*(SIN(VAL_FHI2)));
  1518. X1_2E =
  1519. ((X1_2EL)*(VECT1EX)) + ((Y1_2EL)*(VECT2EX)) + ((Z1_2EL)*(VECT3EX));
  1520. Y1_2E =
  1521. ((X1_2EL)*(VECT1EY)) + ((Y1_2EL)*(VECT2EY)) + ((Z1_2EL)*(VECT3EY));
  1522. Z1_2E =
  1523. ((X1_2EL)*(VECT1EZ)) + ((Y1_2EL)*(VECT2EZ)) + ((Z1_2EL)*(VECT3EZ));
  1524. X2_2E =
  1525. ((X2_2EL)*(VECT1EX)) + ((Y2_2EL)*(VECT2EX)) + ((Z2_2EL)*(VECT3EX));
  1526. Y2_2E =
  1527. ((X2_2EL)*(VECT1EY)) + ((Y2_2EL)*(VECT2EY)) + ((Z2_2EL)*(VECT3EY));
  1528. Z2_2E =
  1529. ((X2_2EL)*(VECT1EZ)) + ((Y2_2EL)*(VECT2EZ)) + ((Z2_2EL)*(VECT3EZ));
  1530. X3_2E =
  1531. ((X3_2EL)*(VECT1EX)) + ((Y3_2EL)*(VECT2EX)) + ((Z3_2EL)*(VECT3EX));
  1532. Y3_2E =
  1533. ((X3_2EL)*(VECT1EY)) + ((Y3_2EL)*(VECT2EY)) + ((Z3_2EL)*(VECT3EY));
  1534. Z3_2E =
  1535. ((X3_2EL)*(VECT1EZ)) + ((Y3_2EL)*(VECT2EZ)) + ((Z3_2EL)*(VECT3EZ));
  1536. X4_2E =
  1537. ((X4_2EL)*(VECT1EX)) + ((Y4_2EL)*(VECT2EX)) + ((Z4_2EL)*(VECT3EX));
  1538. Y4_2E =
  1539. ((X4_2EL)*(VECT1EY)) + ((Y4_2EL)*(VECT2EY)) + ((Z4_2EL)*(VECT3EY));
  1540. Z4_2E =
  1541. ((X4_2EL)*(VECT1EZ)) + ((Y4_2EL)*(VECT2EZ)) + ((Z4_2EL)*(VECT3EZ));
  1542. *
  1543. * quadrant 3 fhi1 = [pi 3pi/2] fhi2 = [0 pi/2]
  1544. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(1.0));
  1545. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1546. X1_3EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1547. Y1_3EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1548. Z1_3EL = ((LL3E)*(SIN(VAL_FHI2)));
  1549. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(1.0));
  1550. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1551. X2_3EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1552. Y2_3EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1553. Z2_3EL = ((LL3E)*(SIN(VAL_FHI2)));
  1554. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(1.0));
  1555. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1556. X3_3EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1557. Y3_3EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1558. Z3_3EL = ((LL3E)*(SIN(VAL_FHI2)));
  1559. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(1.0));
  1560. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1561. X4_3EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1562. Y4_3EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1563. Z4_3EL = ((LL3E)*(SIN(VAL_FHI2)));
  1564. X1_3E =
  1565. ((X1_3EL)*(VECT1EX)) + ((Y1_3EL)*(VECT2EX)) + ((Z1_3EL)*(VECT3EX));
  1566. Y1_3E =
  1567. ((X1_3EL)*(VECT1EY)) + ((Y1_3EL)*(VECT2EY)) + ((Z1_3EL)*(VECT3EY));
  1568. Z1_3E =
  1569. ((X1_3EL)*(VECT1EZ)) + ((Y1_3EL)*(VECT2EZ)) + ((Z1_3EL)*(VECT3EZ));
  1570. X2_3E =
  1571. ((X2_3EL)*(VECT1EX)) + ((Y2_3EL)*(VECT2EX)) + ((Z2_3EL)*(VECT3EX));
  1572. Y2_3E =
  1573. ((X2_3EL)*(VECT1EY)) + ((Y2_3EL)*(VECT2EY)) + ((Z2_3EL)*(VECT3EY));
  1574. Z2_3E =
  1575. ((X2_3EL)*(VECT1EZ)) + ((Y2_3EL)*(VECT2EZ)) + ((Z2_3EL)*(VECT3EZ));
  1576. X3_3E =
  1577. ((X3_3EL)*(VECT1EX)) + ((Y3_3EL)*(VECT2EX)) + ((Z3_3EL)*(VECT3EX));
  1578. Y3_3E =
  1579. ((X3_3EL)*(VECT1EY)) + ((Y3_3EL)*(VECT2EY)) + ((Z3_3EL)*(VECT3EY));
  1580. Z3_3E =
  1581. ((X3_3EL)*(VECT1EZ)) + ((Y3_3EL)*(VECT2EZ)) + ((Z3_3EL)*(VECT3EZ));
  1582. X4_3E =
  1583. ((X4_3EL)*(VECT1EX)) + ((Y4_3EL)*(VECT2EX)) + ((Z4_3EL)*(VECT3EX));
  1584. Y4_3E =
  1585. ((X4_3EL)*(VECT1EY)) + ((Y4_3EL)*(VECT2EY)) + ((Z4_3EL)*(VECT3EY));
  1586. Z4_3E =
  1587. ((X4_3EL)*(VECT1EZ)) + ((Y4_3EL)*(VECT2EZ)) + ((Z4_3EL)*(VECT3EZ));
  1588. *
  1589. * quadrant 4 fhi1 = [3pi/2 2pi] fhi2 = [0 pi/2]
  1590. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + (((3.0)*(180.0))/(2.0));
  1591. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1592. X1_4EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1593. Y1_4EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1594. Z1_4EL = ((LL3E)*(SIN(VAL_FHI2)));
  1595. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + (((3.0)*(180.0))/(2.0));
  1596. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1 - 1));
  1597. X2_4EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1598. Y2_4EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1599. Z2_4EL = ((LL3E)*(SIN(VAL_FHI2)));
  1600. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + (((3.0)*(180.0))/(2.0));
  1601. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1602. X3_4EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1603. Y3_4EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1604. Z3_4EL = ((LL3E)*(SIN(VAL_FHI2)));
  1605. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + (((3.0)*(180.0))/(2.0));
  1606. VAL_FHI2 = ('EXTR' LL_FHI2 (JJ1));
  1607. X4_4EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1608. Y4_4EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1609. Z4_4EL = ((LL3E)*(SIN(VAL_FHI2)));
  1610. X1_4E =
  1611. ((X1_4EL)*(VECT1EX)) + ((Y1_4EL)*(VECT2EX)) + ((Z1_4EL)*(VECT3EX));
  1612. Y1_4E =
  1613. ((X1_4EL)*(VECT1EY)) + ((Y1_4EL)*(VECT2EY)) + ((Z1_4EL)*(VECT3EY));
  1614. Z1_4E =
  1615. ((X1_4EL)*(VECT1EZ)) + ((Y1_4EL)*(VECT2EZ)) + ((Z1_4EL)*(VECT3EZ));
  1616. X2_4E =
  1617. ((X2_4EL)*(VECT1EX)) + ((Y2_4EL)*(VECT2EX)) + ((Z2_4EL)*(VECT3EX));
  1618. Y2_4E =
  1619. ((X2_4EL)*(VECT1EY)) + ((Y2_4EL)*(VECT2EY)) + ((Z2_4EL)*(VECT3EY));
  1620. Z2_4E =
  1621. ((X2_4EL)*(VECT1EZ)) + ((Y2_4EL)*(VECT2EZ)) + ((Z2_4EL)*(VECT3EZ));
  1622. X3_4E =
  1623. ((X3_4EL)*(VECT1EX)) + ((Y3_4EL)*(VECT2EX)) + ((Z3_4EL)*(VECT3EX));
  1624. Y3_4E =
  1625. ((X3_4EL)*(VECT1EY)) + ((Y3_4EL)*(VECT2EY)) + ((Z3_4EL)*(VECT3EY));
  1626. Z3_4E =
  1627. ((X3_4EL)*(VECT1EZ)) + ((Y3_4EL)*(VECT2EZ)) + ((Z3_4EL)*(VECT3EZ));
  1628. X4_4E =
  1629. ((X4_4EL)*(VECT1EX)) + ((Y4_4EL)*(VECT2EX)) + ((Z4_4EL)*(VECT3EX));
  1630. Y4_4E =
  1631. ((X4_4EL)*(VECT1EY)) + ((Y4_4EL)*(VECT2EY)) + ((Z4_4EL)*(VECT3EY));
  1632. Z4_4E =
  1633. ((X4_4EL)*(VECT1EZ)) + ((Y4_4EL)*(VECT2EZ)) + ((Z4_4EL)*(VECT3EZ));
  1634. *
  1635. * quadrant 5 fhi1 = [0 pi/2] fhi2 = [-pi/2 0]
  1636. VAL_FHI1 = ('EXTR' LL_FHI1 (II1));
  1637. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1638. X1_5EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1639. Y1_5EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1640. Z1_5EL = ((LL3E)*(SIN(VAL_FHI2)));
  1641. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1));
  1642. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1643. X2_5EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1644. Y2_5EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1645. Z2_5EL = ((LL3E)*(SIN(VAL_FHI2)));
  1646. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1));
  1647. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1648. X3_5EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1649. Y3_5EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1650. Z3_5EL = ((LL3E)*(SIN(VAL_FHI2)));
  1651. VAL_FHI1 = ('EXTR' LL_FHI1 (II1));
  1652. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1653. X4_5EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1654. Y4_5EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1655. Z4_5EL = ((LL3E)*(SIN(VAL_FHI2)));
  1656. X1_5E =
  1657. ((X1_5EL)*(VECT1EX)) + ((Y1_5EL)*(VECT2EX)) + ((Z1_5EL)*(VECT3EX));
  1658. Y1_5E =
  1659. ((X1_5EL)*(VECT1EY)) + ((Y1_5EL)*(VECT2EY)) + ((Z1_5EL)*(VECT3EY));
  1660. Z1_5E =
  1661. ((X1_5EL)*(VECT1EZ)) + ((Y1_5EL)*(VECT2EZ)) + ((Z1_5EL)*(VECT3EZ));
  1662. X2_5E =
  1663. ((X2_5EL)*(VECT1EX)) + ((Y2_5EL)*(VECT2EX)) + ((Z2_5EL)*(VECT3EX));
  1664. Y2_5E =
  1665. ((X2_5EL)*(VECT1EY)) + ((Y2_5EL)*(VECT2EY)) + ((Z2_5EL)*(VECT3EY));
  1666. Z2_5E =
  1667. ((X2_5EL)*(VECT1EZ)) + ((Y2_5EL)*(VECT2EZ)) + ((Z2_5EL)*(VECT3EZ));
  1668. X3_5E =
  1669. ((X3_5EL)*(VECT1EX)) + ((Y3_5EL)*(VECT2EX)) + ((Z3_5EL)*(VECT3EX));
  1670. Y3_5E =
  1671. ((X3_5EL)*(VECT1EY)) + ((Y3_5EL)*(VECT2EY)) + ((Z3_5EL)*(VECT3EY));
  1672. Z3_5E =
  1673. ((X3_5EL)*(VECT1EZ)) + ((Y3_5EL)*(VECT2EZ)) + ((Z3_5EL)*(VECT3EZ));
  1674. X4_5E =
  1675. ((X4_5EL)*(VECT1EX)) + ((Y4_5EL)*(VECT2EX)) + ((Z4_5EL)*(VECT3EX));
  1676. Y4_5E =
  1677. ((X4_5EL)*(VECT1EY)) + ((Y4_5EL)*(VECT2EY)) + ((Z4_5EL)*(VECT3EY));
  1678. Z4_5E =
  1679. ((X4_5EL)*(VECT1EZ)) + ((Y4_5EL)*(VECT2EZ)) + ((Z4_5EL)*(VECT3EZ));
  1680. *
  1681. * quadrant 6 fhi1 = [pi/2 pi] fhi2 = [-pi/2 0]
  1682. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(2.0));
  1683. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1684. X1_6EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1685. Y1_6EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1686. Z1_6EL = ((LL3E)*(SIN(VAL_FHI2)));
  1687. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(2.0));
  1688. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1689. X2_6EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1690. Y2_6EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1691. Z2_6EL = ((LL3E)*(SIN(VAL_FHI2)));
  1692. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(2.0));
  1693. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1694. X3_6EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1695. Y3_6EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1696. Z3_6EL = ((LL3E)*(SIN(VAL_FHI2)));
  1697. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(2.0));
  1698. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1699. X4_6EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1700. Y4_6EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1701. Z4_6EL = ((LL3E)*(SIN(VAL_FHI2)));
  1702. X1_6E =
  1703. ((X1_6EL)*(VECT1EX)) + ((Y1_6EL)*(VECT2EX)) + ((Z1_6EL)*(VECT3EX));
  1704. Y1_6E =
  1705. ((X1_6EL)*(VECT1EY)) + ((Y1_6EL)*(VECT2EY)) + ((Z1_6EL)*(VECT3EY));
  1706. Z1_6E =
  1707. ((X1_6EL)*(VECT1EZ)) + ((Y1_6EL)*(VECT2EZ)) + ((Z1_6EL)*(VECT3EZ));
  1708. X2_6E =
  1709. ((X2_6EL)*(VECT1EX)) + ((Y2_6EL)*(VECT2EX)) + ((Z2_6EL)*(VECT3EX));
  1710. Y2_6E =
  1711. ((X2_6EL)*(VECT1EY)) + ((Y2_6EL)*(VECT2EY)) + ((Z2_6EL)*(VECT3EY));
  1712. Z2_6E =
  1713. ((X2_6EL)*(VECT1EZ)) + ((Y2_6EL)*(VECT2EZ)) + ((Z2_6EL)*(VECT3EZ));
  1714. X3_6E =
  1715. ((X3_6EL)*(VECT1EX)) + ((Y3_6EL)*(VECT2EX)) + ((Z3_6EL)*(VECT3EX));
  1716. Y3_6E =
  1717. ((X3_6EL)*(VECT1EY)) + ((Y3_6EL)*(VECT2EY)) + ((Z3_6EL)*(VECT3EY));
  1718. Z3_6E =
  1719. ((X3_6EL)*(VECT1EZ)) + ((Y3_6EL)*(VECT2EZ)) + ((Z3_6EL)*(VECT3EZ));
  1720. X4_6E =
  1721. ((X4_6EL)*(VECT1EX)) + ((Y4_6EL)*(VECT2EX)) + ((Z4_6EL)*(VECT3EX));
  1722. Y4_6E =
  1723. ((X4_6EL)*(VECT1EY)) + ((Y4_6EL)*(VECT2EY)) + ((Z4_6EL)*(VECT3EY));
  1724. Z4_6E =
  1725. ((X4_6EL)*(VECT1EZ)) + ((Y4_6EL)*(VECT2EZ)) + ((Z4_6EL)*(VECT3EZ));
  1726. *
  1727. * quadrant 7 fhi1 = [pi 3pi/2] fhi2 = [-pi/2 0]
  1728. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(1.0));
  1729. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1730. X1_7EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1731. Y1_7EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1732. Z1_7EL = ((LL3E)*(SIN(VAL_FHI2)));
  1733. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(1.0));
  1734. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1735. X2_7EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1736. Y2_7EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1737. Z2_7EL = ((LL3E)*(SIN(VAL_FHI2)));
  1738. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + ((180.0)/(1.0));
  1739. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1740. X3_7EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1741. Y3_7EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1742. Z3_7EL = ((LL3E)*(SIN(VAL_FHI2)));
  1743. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + ((180.0)/(1.0));
  1744. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1745. X4_7EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1746. Y4_7EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1747. Z4_7EL = ((LL3E)*(SIN(VAL_FHI2)));
  1748. X1_7E =
  1749. ((X1_7EL)*(VECT1EX)) + ((Y1_7EL)*(VECT2EX)) + ((Z1_7EL)*(VECT3EX));
  1750. Y1_7E =
  1751. ((X1_7EL)*(VECT1EY)) + ((Y1_7EL)*(VECT2EY)) + ((Z1_7EL)*(VECT3EY));
  1752. Z1_7E =
  1753. ((X1_7EL)*(VECT1EZ)) + ((Y1_7EL)*(VECT2EZ)) + ((Z1_7EL)*(VECT3EZ));
  1754. X2_7E =
  1755. ((X2_7EL)*(VECT1EX)) + ((Y2_7EL)*(VECT2EX)) + ((Z2_7EL)*(VECT3EX));
  1756. Y2_7E =
  1757. ((X2_7EL)*(VECT1EY)) + ((Y2_7EL)*(VECT2EY)) + ((Z2_7EL)*(VECT3EY));
  1758. Z2_7E =
  1759. ((X2_7EL)*(VECT1EZ)) + ((Y2_7EL)*(VECT2EZ)) + ((Z2_7EL)*(VECT3EZ));
  1760. X3_7E =
  1761. ((X3_7EL)*(VECT1EX)) + ((Y3_7EL)*(VECT2EX)) + ((Z3_7EL)*(VECT3EX));
  1762. Y3_7E =
  1763. ((X3_7EL)*(VECT1EY)) + ((Y3_7EL)*(VECT2EY)) + ((Z3_7EL)*(VECT3EY));
  1764. Z3_7E =
  1765. ((X3_7EL)*(VECT1EZ)) + ((Y3_7EL)*(VECT2EZ)) + ((Z3_7EL)*(VECT3EZ));
  1766. X4_7E =
  1767. ((X4_7EL)*(VECT1EX)) + ((Y4_7EL)*(VECT2EX)) + ((Z4_7EL)*(VECT3EX));
  1768. Y4_7E =
  1769. ((X4_7EL)*(VECT1EY)) + ((Y4_7EL)*(VECT2EY)) + ((Z4_7EL)*(VECT3EY));
  1770. Z4_7E =
  1771. ((X4_7EL)*(VECT1EZ)) + ((Y4_7EL)*(VECT2EZ)) + ((Z4_7EL)*(VECT3EZ));
  1772. *
  1773. * quadrant 8 fhi1 = [3pi/2 2pi] fhi2 = [-pi/2 0]
  1774. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + (((3.0)*(180.0))/(2.0));
  1775. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1776. X1_8EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1777. Y1_8EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1778. Z1_8EL = ((LL3E)*(SIN(VAL_FHI2)));
  1779. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + (((3.0)*(180.0))/(2.0));
  1780. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1 - 1));
  1781. X2_8EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1782. Y2_8EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1783. Z2_8EL = ((LL3E)*(SIN(VAL_FHI2)));
  1784. VAL_FHI1 = ('EXTR' LL_FHI1 (II1 + 1)) + (((3.0)*(180.0))/(2.0));
  1785. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1786. X3_8EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1787. Y3_8EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1788. Z3_8EL = ((LL3E)*(SIN(VAL_FHI2)));
  1789. VAL_FHI1 = ('EXTR' LL_FHI1 (II1)) + (((3.0)*(180.0))/(2.0));
  1790. VAL_FHI2 = (-1.0)*('EXTR' LL_FHI2 (JJ1));
  1791. X4_8EL = (((LL1E)*(COS(VAL_FHI1)))*(COS(VAL_FHI2)));
  1792. Y4_8EL = (((LL2E)*(SIN(VAL_FHI1)))*(COS(VAL_FHI2)));
  1793. Z4_8EL = ((LL3E)*(SIN(VAL_FHI2)));
  1794. X1_8E =
  1795. ((X1_8EL)*(VECT1EX)) + ((Y1_8EL)*(VECT2EX)) + ((Z1_8EL)*(VECT3EX));
  1796. Y1_8E =
  1797. ((X1_8EL)*(VECT1EY)) + ((Y1_8EL)*(VECT2EY)) + ((Z1_8EL)*(VECT3EY));
  1798. Z1_8E =
  1799. ((X1_8EL)*(VECT1EZ)) + ((Y1_8EL)*(VECT2EZ)) + ((Z1_8EL)*(VECT3EZ));
  1800. X2_8E =
  1801. ((X2_8EL)*(VECT1EX)) + ((Y2_8EL)*(VECT2EX)) + ((Z2_8EL)*(VECT3EX));
  1802. Y2_8E =
  1803. ((X2_8EL)*(VECT1EY)) + ((Y2_8EL)*(VECT2EY)) + ((Z2_8EL)*(VECT3EY));
  1804. Z2_8E =
  1805. ((X2_8EL)*(VECT1EZ)) + ((Y2_8EL)*(VECT2EZ)) + ((Z2_8EL)*(VECT3EZ));
  1806. X3_8E =
  1807. ((X3_8EL)*(VECT1EX)) + ((Y3_8EL)*(VECT2EX)) + ((Z3_8EL)*(VECT3EX));
  1808. Y3_8E =
  1809. ((X3_8EL)*(VECT1EY)) + ((Y3_8EL)*(VECT2EY)) + ((Z3_8EL)*(VECT3EY));
  1810. Z3_8E =
  1811. ((X3_8EL)*(VECT1EZ)) + ((Y3_8EL)*(VECT2EZ)) + ((Z3_8EL)*(VECT3EZ));
  1812. X4_8E =
  1813. ((X4_8EL)*(VECT1EX)) + ((Y4_8EL)*(VECT2EX)) + ((Z4_8EL)*(VECT3EX));
  1814. Y4_8E =
  1815. ((X4_8EL)*(VECT1EY)) + ((Y4_8EL)*(VECT2EY)) + ((Z4_8EL)*(VECT3EY));
  1816. Z4_8E =
  1817. ((X4_8EL)*(VECT1EZ)) + ((Y4_8EL)*(VECT2EZ)) + ((Z4_8EL)*(VECT3EZ));
  1818. *
  1819. *
  1820. * definition points
  1821. P1_1E = (X1_1E + N110E) (Y1_1E + N220E) (Z1_1E + N120E);
  1822. P2_1E = (X2_1E + N110E) (Y2_1E + N220E) (Z2_1E + N120E);
  1823. P3_1E = (X3_1E + N110E) (Y3_1E + N220E) (Z3_1E + N120E);
  1824. P4_1E = (X4_1E + N110E) (Y4_1E + N220E) (Z4_1E + N120E);
  1825. *
  1826. P1_2E = (X1_2E + N110E) (Y1_2E + N220E) (Z1_2E + N120E);
  1827. P2_2E = (X2_2E + N110E) (Y2_2E + N220E) (Z2_2E + N120E);
  1828. P3_2E = (X3_2E + N110E) (Y3_2E + N220E) (Z3_2E + N120E);
  1829. P4_2E = (X4_2E + N110E) (Y4_2E + N220E) (Z4_2E + N120E);
  1830. *
  1831. P1_3E = (X1_3E + N110E) (Y1_3E + N220E) (Z1_3E + N120E);
  1832. P2_3E = (X2_3E + N110E) (Y2_3E + N220E) (Z2_3E + N120E);
  1833. P3_3E = (X3_3E + N110E) (Y3_3E + N220E) (Z3_3E + N120E);
  1834. P4_3E = (X4_3E + N110E) (Y4_3E + N220E) (Z4_3E + N120E);
  1835. *
  1836. P1_4E = (X1_4E + N110E) (Y1_4E + N220E) (Z1_4E + N120E);
  1837. P2_4E = (X2_4E + N110E) (Y2_4E + N220E) (Z2_4E + N120E);
  1838. P3_4E = (X3_4E + N110E) (Y3_4E + N220E) (Z3_4E + N120E);
  1839. P4_4E = (X4_4E + N110E) (Y4_4E + N220E) (Z4_4E + N120E);
  1840. *
  1841. P1_5E = (X1_5E + N110E) (Y1_5E + N220E) (Z1_5E + N120E);
  1842. P2_5E = (X2_5E + N110E) (Y2_5E + N220E) (Z2_5E + N120E);
  1843. P3_5E = (X3_5E + N110E) (Y3_5E + N220E) (Z3_5E + N120E);
  1844. P4_5E = (X4_5E + N110E) (Y4_5E + N220E) (Z4_5E + N120E);
  1845. *
  1846. P1_6E = (X1_6E + N110E) (Y1_6E + N220E) (Z1_6E + N120E);
  1847. P2_6E = (X2_6E + N110E) (Y2_6E + N220E) (Z2_6E + N120E);
  1848. P3_6E = (X3_6E + N110E) (Y3_6E + N220E) (Z3_6E + N120E);
  1849. P4_6E = (X4_6E + N110E) (Y4_6E + N220E) (Z4_6E + N120E);
  1850. *
  1851. P1_7E = (X1_7E + N110E) (Y1_7E + N220E) (Z1_7E + N120E);
  1852. P2_7E = (X2_7E + N110E) (Y2_7E + N220E) (Z2_7E + N120E);
  1853. P3_7E = (X3_7E + N110E) (Y3_7E + N220E) (Z3_7E + N120E);
  1854. P4_7E = (X4_7E + N110E) (Y4_7E + N220E) (Z4_7E + N120E);
  1855. *
  1856. P1_8E = (X1_8E + N110E) (Y1_8E + N220E) (Z1_8E + N120E);
  1857. P2_8E = (X2_8E + N110E) (Y2_8E + N220E) (Z2_8E + N120E);
  1858. P3_8E = (X3_8E + N110E) (Y3_8E + N220E) (Z3_8E + N120E);
  1859. P4_8E = (X4_8E + N110E) (Y4_8E + N220E) (Z4_8E + N120E);
  1860. *
  1861. * definitions des lignes
  1862. OPTI ELEM SEG2;
  1863. L1_1E = 'DROIT' 1 P1_1E P2_1E;
  1864. L2_1E = 'DROIT' 1 P2_1E P3_1E;
  1865. L3_1E = 'DROIT' 1 P3_1E P4_1E;
  1866. L4_1E = 'DROIT' 1 P4_1E P1_1E;
  1867. *
  1868. L1_2E = 'DROIT' 1 P1_2E P2_2E;
  1869. L2_2E = 'DROIT' 1 P2_2E P3_2E;
  1870. L3_2E = 'DROIT' 1 P3_2E P4_2E;
  1871. L4_2E = 'DROIT' 1 P4_2E P1_2E;
  1872. *
  1873. L1_3E = 'DROIT' 1 P1_3E P2_3E;
  1874. L2_3E = 'DROIT' 1 P2_3E P3_3E;
  1875. L3_3E = 'DROIT' 1 P3_3E P4_3E;
  1876. L4_3E = 'DROIT' 1 P4_3E P1_3E;
  1877. *
  1878. L1_4E = 'DROIT' 1 P1_4E P2_4E;
  1879. L2_4E = 'DROIT' 1 P2_4E P3_4E;
  1880. L3_4E = 'DROIT' 1 P3_4E P4_4E;
  1881. L4_4E = 'DROIT' 1 P4_4E P1_4E;
  1882. *
  1883. L1_5E = 'DROIT' 1 P1_5E P2_5E;
  1884. L2_5E = 'DROIT' 1 P2_5E P3_5E;
  1885. L3_5E = 'DROIT' 1 P3_5E P4_5E;
  1886. L4_5E = 'DROIT' 1 P4_5E P1_5E;
  1887. *
  1888. L1_6E = 'DROIT' 1 P1_6E P2_6E;
  1889. L2_6E = 'DROIT' 1 P2_6E P3_6E;
  1890. L3_6E = 'DROIT' 1 P3_6E P4_6E;
  1891. L4_6E = 'DROIT' 1 P4_6E P1_6E;
  1892. *
  1893. L1_7E = 'DROIT' 1 P1_7E P2_7E;
  1894. L2_7E = 'DROIT' 1 P2_7E P3_7E;
  1895. L3_7E = 'DROIT' 1 P3_7E P4_7E;
  1896. L4_7E = 'DROIT' 1 P4_7E P1_7E;
  1897. *
  1898. L1_8E = 'DROIT' 1 P1_8E P2_8E;
  1899. L2_8E = 'DROIT' 1 P2_8E P3_8E;
  1900. L3_8E