Télécharger @rccm.procedur

Retour à la liste

Numérotation des lignes :

  1. * @RCCM PROCEDUR FANDEUR 14/10/10 21:15:01 8178
  2. * RCCM PROCEDURE 96/11/20 09:00:00
  3. * ----------------------------------------------------------------------
  4. ****** PROCEDURE @RCCM ******
  5. * ----------------------------------------------------------------------
  6. *
  7. * CETTE PROCEDURE PERMET D'EFFECTUER UN DEPOUILLEMENT RCCM :
  8. * - linearisations de coupes
  9. * - variations d'etats
  10. * - fatigue
  11. *
  12. * ----------------------------------------------------------------------
  13. *
  14. * LES DONNEES SONT :
  15. * ----> la table de definition des coupes
  16. * ----> la table de definition des etats
  17. * ----> la table de definition des groupes de transitoires
  18. * ----> la table pour le calcul a la fatigue
  19. *
  20. * EN SORTIE :
  21. * ----> impression des resultats
  22. *
  23. * ----------------------------------------------------------------------
  24. * PAR Joseph MANNINO
  25. * ----------------------------------------------------------------------
  26. 'DEBPROC' @RCCM TABCOUP*TABLE TABET*TABLE TABGROU/TABLE TABFATI/TABLE;
  27.  
  28. * ======================================================================
  29. * initialisations
  30. * ======================================================================
  31. MESSAGE ' ' ;
  32. MESSAGE '***** DEBUT DU CALCUL RCCM *****' ;
  33. MESSAGE '--------------------------------' ;
  34. MESSAGE ' ' ;
  35. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36. * formation de la table des etats (la table des etats
  37. * thermomecaniques doit etre complete ; la table des etats thermiques
  38. * peut etre incomplete ou vide, elle est alors completee ici)
  39. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  40. M = MOT M ;
  41. T = MOT T ;
  42. FLEXT = VRAI ;
  43. SI (NON (EXISTE TABET M)) ;
  44. MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  45. QUITTER @RCCM ;
  46. FINSI ;
  47. NETM = DIME TABET.M ;
  48. SI (NETM EGA 0) ;
  49. MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  50. QUITTER @RCCM ;
  51. FINSI ;
  52. REPETER BOUCLE (NETM) ;
  53. I = &BOUCLE ;
  54. SI (NON (EXISTE (TABET.M) I)) ;
  55. MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  56. QUITTER @RCCM ;
  57. FINSI ;
  58. FIN BOUCLE ;
  59. SI (NON (EXISTE TABET T)) ;
  60. FLEXT = FAUX ;
  61. FINSI ;
  62. SI (EXISTE TABET T) ;
  63. SI ((DIME TABET.T) > 0) ;
  64. INDT = INDEX (TABET.T) ;
  65. REPETER BOUCLE (DIME INDT) ;
  66. J = &BOUCLE ;
  67. K = INDT.J ;
  68. SI ((K > NETM) OU (K < 1)) ;
  69. MESSAGE 'LA TABLE DES ETATS THERMIQUES NE CONVIENT PAS' ;
  70. QUITTER @RCCM ;
  71. FINSI ;
  72. FIN BOUCLE ;
  73. FINSI ;
  74. FINSI ;
  75. TABETAT = TABLE ;
  76. REPETER BOUCLE (NETM) ;
  77. I = &BOUCLE ;
  78. TABETAT.I = TABET.M.I ;
  79. FIN BOUCLE ;
  80. REPETER BOUCLE (NETM) ;
  81. I = &BOUCLE ;
  82. J = I + NETM ;
  83. SI (FLEXT) ;
  84. SI (EXISTE (TABET.T) I) ;
  85. TABETAT.J = TABET.T.I ;
  86. SINON ;
  87. TABETAT.J = (TABETAT.I) * 0. ;
  88. FINSI ;
  89. FINSI ;
  90. FIN BOUCLE ;
  91. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  92. * formation de la table des groupes (la table des groupes thermiques
  93. * est formee a partir des groupes thermomecaniques) :
  94. * - 1 : groupe thermomecanique
  95. * - 2 : groupe thermique permettant d'exclure la flexion thermique
  96. * reorganisation de la table des groupes :
  97. * - l'etat 0 est mis a la fin
  98. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  99. NCOUPS = DIME TABCOUP ;
  100. NETATS = DIME TABETAT ;
  101. L = 1 ;
  102. M = 2 ;
  103. SI ( EXISTE TABGROU ) ;
  104. TABGROU.M = TABLE ;
  105. NGROUPTM = DIME TABGROU.L ;
  106. SI ( NGROUPTM EGA 0 ) ;
  107. MESSAGE 'LES LISTES DES GROUPES NE CONVIENNENT PAS' ;
  108. QUITTER @RCCM ;
  109. FINSI ;
  110. REPETER BOUCLE1 (NGROUPTM) ;
  111. I = &BOUCLE1 ;
  112. LETAT1 = TABGROU.L.I ;
  113. LETAT2 = LECT ;
  114. REPETER BOUCLE2 (DIME LETAT1) ;
  115. J = &BOUCLE2 ;
  116. ETAT = EXTRAIRE LETAT1 J ;
  117. SI (ETAT EGA 0) ;
  118. LETAT2 = LETAT2 ET (LECT ETAT) ;
  119. SINON ;
  120. LETAT2 = LETAT2 ET (LECT (ETAT+NETM)) ;
  121. FINSI ;
  122. FIN BOUCLE2 ;
  123. SI (FLEXT) ;
  124. TABGROU.M.I = LETAT2 ;
  125. MESSAGE ' ' ;
  126. MESSAGE 'CREATION DU GROUPE THERMIQUE CORRESPONDANT AU GROUPE '
  127. 'THERMOMECANIQUE' I ;
  128. LIST LETAT2 ;
  129. MESSAGE ' ' ;
  130. SINON ;
  131. TABGROU.M.I = LETAT1 ;
  132. MESSAGE ' ' ;
  133. MESSAGE 'ATTENTION VOUS AVEZ EXCLU TOUTE LA FLEXION AU GROUPE '
  134. 'THERMOMECANIQUE' I ;
  135. LIST LETAT1 ;
  136. MESSAGE ' ' ;
  137. FINSI ;
  138. FIN BOUCLE1 ;
  139. REPETER BOUCLE1 (NGROUPTM) ;
  140. I = &BOUCLE1 ;
  141. LETAT1 = ORDONNER 'DECROISSANT' (TABGROU.L.I) ;
  142. LETAT2 = ORDONNER 'DECROISSANT' (TABGROU.M.I) ;
  143. TABGROU.L.I = LETAT1 ;
  144. TABGROU.M.I = LETAT2 ;
  145. FIN BOUCLE1 ;
  146. FINSI ;
  147. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  148. * INITIALISATIONS
  149. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  150. SEISME = FAUX ;
  151. DIMP = VALE DIME ;
  152. TCE = TABLE ;
  153. TVTMG = TABLE ;
  154. TVTHG = TABLE ;
  155. TVARSG = TABLE ;
  156. TABOCCUR = TABLE ;
  157. TABDONF = TABLE ;
  158. ID = 1 ;
  159. IND1 = 1 ;
  160. IND2 = 2 ;
  161. IND3 = 3 ;
  162. IND4 = 4 ;
  163. IND5 = 5 ;
  164. IND6 = 6 ;
  165. IND7 = 7 ;
  166. IND8 = 8 ;
  167. IND9 = 9 ;
  168. * ======================================================================
  169. * verifications
  170. * ======================================================================
  171. MESSAGE ' ' ;
  172. MESSAGE '---> phase verification' ;
  173. MESSAGE ' ------------------' ;
  174. MESSAGE ' ' ;
  175. SI ( ( NCOUPS EGA 0 ) OU ( NETATS EGA 0 ) ) ;
  176. QUITTER @RCCM ;
  177. FINSI ;
  178. SI ( EXISTE TABGROU ) ;
  179. REPETER BOUCLE1 ( NGROUPTM ) ;
  180. I = &BOUCLE1 ;
  181. LISTETM = TABGROU.IND1.I ;
  182. NTRANS = DIME LISTETM ;
  183. REPETER BOUCLE2 ( NTRANS ) ;
  184. J = &BOUCLE2 ;
  185. ETAT = EXTRAIRE LISTETM J ;
  186. SI ( ( ETAT > NETATS ) OU ( ETAT < 0 ) ) ;
  187. MESSAGE 'LA FORMATION DES GROUPES THERMO-MECANIQUES NE '
  188. 'CONVIENT PAS' ;
  189. QUITTER @RCCM ;
  190. FINSI ;
  191. FIN BOUCLE2 ;
  192. LISTETH = TABGROU.IND2.I ;
  193. NTRANS = DIME LISTETH ;
  194. REPETER BOUCLE2 ( NTRANS ) ;
  195. J = &BOUCLE2 ;
  196. ETAT = EXTRAIRE LISTETH J ;
  197. SI ( ( ETAT > NETATS ) OU ( ETAT < 0 ) ) ;
  198. MESSAGE 'LA FORMATION DES GROUPES POUR EXCLUSION DE LA '
  199. 'FLEXION THERMIQUE NE CONVIENT PAS' ;
  200. QUITTER @RCCM ;
  201. FINSI ;
  202. FIN BOUCLE2 ;
  203. FIN BOUCLE1 ;
  204. SI ( EXISTE TABFATI ) ;
  205. NTABFAT1 = DIME TABFATI.IND1 ;
  206. SI ( NTABFAT1 NEG NGROUPTM ) ;
  207. MESSAGE 'LA TABLE DES NOMBRES D"OCCURENCES POUR LA FATIGUE NE '
  208. 'CONVIENT PAS' ;
  209. QUITTER @RCCM ;
  210. FINSI ;
  211. NTABFAT2 = DIME TABFATI.IND2 ;
  212. SI ( NTABFAT2 NEG NCOUPS ) ;
  213. MESSAGE 'LA TABLE DE DESCRIPTION DES MATERIAUX POUR LA FATIGUE '
  214. 'NE CONVIENT PAS' ;
  215. QUITTER @RCCM ;
  216. FINSI ;
  217. SI (EXISTE TABFATI IND3) ;
  218. SEISME = VRAI ;
  219. NTABFAT3 = DIME TABFATI.IND3 ;
  220. SI ( NTABFAT3 NEG NCOUPS ) ;
  221. MESSAGE 'LA TABLE DE DESCRIPTION DES SEISMES POUR LA FATIGUE '
  222. 'NE CONVIENT PAS' ;
  223. QUITTER @RCCM ;
  224. FINSI ;
  225. FINSI ;
  226. REPETER BOUCLE1 ( NCOUPS ) ;
  227. I = &BOUCLE1 ;
  228. LISTEMA = TABFATI.IND2.I ;
  229. NMATER = DIME ( LISTEMA ) ;
  230. SI (((NON SEISME) ET (NMATER NEG 6)) OU
  231. (SEISME ET (NMATER NEG 7))) ;
  232. MESSAGE 'LA TABLE DE DESCRIPTION DES MATERIAUX POUR LA FATIGUE '
  233. 'NE CONVIENT PAS' ;
  234. QUITTER @RCCM ;
  235. FINSI ;
  236. FIN BOUCLE1 ;
  237. SI (SEISME) ;
  238. REPETER BOUCLE1 ( NCOUPS ) ;
  239. I = &BOUCLE1 ;
  240. LISTSEI = TABFATI.IND3.I ;
  241. NCTORS = DIME ( LISTSEI ) ;
  242. SI (((DIMP EGA 2) ET (NCTORS NEG 6)) OU
  243. ((DIMP EGA 3) ET (NCTORS NEG 8))) ;
  244. MESSAGE 'LA TABLE DE DESCRIPTION DU SEISME POUR LA FATIGUE '
  245. 'NE CONVIENT PAS' ;
  246. QUITTER @RCCM ;<.sxan>
  247. FINSI ;
  248. FIN BOUCLE1 ;
  249. FINSI ;
  250. FINSI ;
  251. FINSI ;
  252. * ======================================================================
  253. * coupes et linearisation des contraintes
  254. * ======================================================================
  255. MESSAGE ' ' ;
  256. MESSAGE '---> phase coupes et linearisation des contraintes' ;
  257. MESSAGE ' ---------------------------------------------' ;
  258. MESSAGE ' ' ;
  259. * ----------------------------------------------------------------------
  260. * boucle sur les etats
  261. * ----------------------------------------------------------------------
  262. REPETER BOUCLE1 ( NETATS ) ;
  263. I = &BOUCLE1 ;
  264. TCE.I = TABLE ;
  265. * ----------------------------------------------------------------------
  266. * boucle sur les coupes
  267. * ----------------------------------------------------------------------
  268. REPETER BOUCLE2 ( NCOUPS ) ;
  269. J = &BOUCLE2 ;
  270. MESSAGE ' ' ;
  271. MESSAGE ' ---> etat ' I ' coupe ' J ;
  272. MESSAGE ' -------------------------' ;
  273. MESSAGE ' ' ;
  274.  
  275. TCE.I.J = @RCCMCO2 I J TABCOUP.J.IND1 TABCOUP.J.IND2
  276. TABCOUP.J.IND3 TABCOUP.J.IND4
  277. TABETAT.I TABCOUP.J.IND5
  278. TABCOUP.J.IND6 TABCOUP.J.IND7
  279. TABCOUP.J.IND8 TABCOUP.J.IND9;
  280. 'SI' ('NEG' ('TYPE' (TCE.I.J)) 'TABLE ');
  281. 'SI' ('EGA' (TCE.I.J) 'ARRET') ;'QUITTER' @RCCM ;'FINSI' ;
  282. 'FINSI';
  283. FIN BOUCLE2 ;
  284. FIN BOUCLE1 ;
  285. MESSAGE ' ' ;
  286. MESSAGE '---> fin phase coupes et linearisation des contraintes' ;
  287. MESSAGE ' -------------------------------------------------' ;
  288. MESSAGE ' ' ;
  289. * ======================================================================
  290. * variations et fatigue
  291. * ======================================================================
  292. SI ( EXISTE TABGROU ) ;
  293. SI ( NGROUPTM >EG 1 ) ;
  294. MESSAGE ' ' ;
  295. MESSAGE '---> phase variations' ;
  296. MESSAGE ' ----------------' ;
  297. MESSAGE ' ' ;
  298. * ----------------------------------------------------------------------
  299. * variations si TABGROU existe
  300. * ----------------------------------------------------------------------
  301. *modif VARIATI: la procedure VARIATI est supprimee
  302. *et est directement integree ci dessous
  303. *en conservant la notice explicative
  304. *modif effectuees avant l entree dans variati:
  305. * BOUCL01 a 03 remplacent BOUCLE1 a 3
  306. * II JJ KK LL MM NN ont remplace I J K L M N
  307.  
  308. REPETER BOUCL01 ( NGROUPTM ) ;
  309. II = &BOUCL01 ;
  310. LISTETM = TABGROU.IND1.II ;
  311. LISTETH = TABGROU.IND2.II ;
  312. NTRANS = DIME LISTETM ;
  313. REPETER BOUCL02 ( NCOUPS ) ;
  314. JJ = &BOUCL02 ;
  315. TVTMG.JJ = TABLE ;
  316. TVTHG.JJ = TABLE ;
  317. LL = 0 ;
  318. REPETER BOUCL03 ( NTRANS ) ;
  319. KK = &BOUCL03 ;
  320. SAUT LIGNE;TIRET=
  321. ' ---------------------------------------------------';
  322. MESSAGE ' ---> groupe ' II ' coupe ' JJ ' transitoire TM ' KK ;
  323. MESSAGE TIRET;
  324. MESSAGE ' ' ;
  325. ETAT = EXTRAIRE LISTETM KK ;
  326. SI ( ETAT NEG 0 ) ;
  327. LL = LL + 1 ;
  328. TVTMG.JJ.LL = TCE.ETAT.JJ ;
  329. FINSI ;
  330. FIN BOUCL03 ;
  331. NN = 0 ;
  332. REPETER BOUCL03 ( NTRANS ) ;
  333. MM = &BOUCL03 ;
  334. SAUT LIGNE;
  335. MESSAGE ' ---> groupe ' II ' coupe ' JJ ' transitoire TH ' MM ;
  336. MESSAGE TIRET;
  337. SAUT LIGNE;
  338. ETAT = EXTRAIRE LISTETH MM ;
  339. SI ( ETAT(NEG 0 ) ;
  340. NN = NN + 1 ;
  341. TVTHG.JJ.NN = TCE.ETAT.JJ ;
  342. FINSI ;
  343. FIN BOUCL03 ;
  344. FIN BOUCL02 ;
  345. *LIST (TVTMG . 1 . 1) ;
  346. *LIST (TVTMG . 1 . 2) ;
  347. *LIST ( TVTHG . 1 . 1);
  348. *LIST ( TVTHG . 1 . 2);
  349.  
  350.  
  351. *modif
  352. * SI ( LL NEG KK ) ;
  353. * TVARSG.II = @VARIATI FLEXT TABGROU.ID.II TVTMG TVTHG 'NUL' ;
  354. * SINON ;
  355. * TVARSG.II = @VARIATI FLEXT TABGROU.ID.II TVTMG TVTHG ;
  356. * FINSI ;
  357. *initialisations
  358. MOPT*LOGIQUE = FAUX ;
  359. SI ( LL NEG KK ) ;MOPT*LOGIQUE=VRAI ; FINSI ;
  360. *FLEXT ichange
  361. ETATS = TABGROU.ID.II ;
  362. TABVM = TVTMG ;
  363. TABVT = TVTHG ;
  364. *on garde la notice de variati
  365. *$$$$ @VARIATI
  366. * @VARIATI PROCEDURE 96/10/08 16:00:00
  367. * ----------------------------------------------------------------------
  368. ****** PROCEDURE @VARIATI ******
  369. * ----------------------------------------------------------------------
  370. *
  371. * CETTE PROCEDURE PERMET DE CALCULER LA VARIATION MAXIMALE ENTRE
  372. * 2 TORSEURS, SUR LES PEAUX D'UNE COUPE, SUIVANT LE RCCM.
  373. *
  374. * ----------------------------------------------------------------------
  375. *
  376. * LES DONNEES SONT :
  377. * ----> une variable logique indiquant si VRAI que la flexion
  378. * thermique est exclue
  379. * ----> la liste des etats du groupe
  380. * ----> une table a 2 indices contenant :
  381. * - premier indice : un numero de coupe
  382. * - deuxieme indice : un chargement mecanique sous forme
  383. * de table a 6 indices comprenant :
  384. * - 1 : torseur de flexion, paroi
  385. * interieure
  386. * - 2 : torseur de membrane+flexion,
  387. * paroi interieure
  388. * - 3 : torseur des contraintes totales,
  389. * paroi interieure
  390. * - 4 : torseur de flexion, paroi
  391. * exterieure
  392. * - 5 : torseur de membrane+flexion,
  393. * paroi exterieure
  394. * - 6 : torseur des contraintes totales,
  395. * paroi exterieure
  396. * ----> une table a 2 indices contenant :
  397. * - premier indice : un numero de coupe
  398. * - deuxieme indice : un chargement thermique sous forme
  399. * de table a 6 indices comprenant :
  400. * - 1 : torseur de flexion, paroi
  401. * interieure
  402. * - 2 : torseur de membrane+flexion,
  403. * paroi interieure
  404. * - 3 : torseur des contraintes totales,
  405. * paroi interieure
  406. * - 4 : torseur de flexion, paroi
  407. * exterieure
  408. * - 5 : torseur de membrane+flexion,
  409. * paroi exterieure
  410. * - 6 : torseur des contraintes totales,
  411. * paroi exterieure
  412. * ----> un mot eventuel permettant de prendre en compte un chargement
  413. * supplementaire nul
  414. *
  415. * EN SORTIE :
  416. * ----> impression des resultats
  417. * ----> sortie d'une table a 4 indices contenant :
  418. * - premier indice : numero de coupe
  419. * - deuxieme indice : code :
  420. * - 1 : paroi interieure
  421. * - 2 : paroi exterieure
  422. * - troisieme indice : code :
  423. * - 1 : contraintes totales
  424. * - 2 : contraintes membrane+flexion
  425. * - 3 : contraintes membrane+flexion,
  426. * flexion thermique exclue
  427. * - quatrieme indice : 5 sorties :
  428. * - 1 : indice du premier torseur
  429. * - 2 : indice du deuxieme torseur
  430. * - 3 : premier torseur
  431. * - 4 : deuxieme torseur
  432. * - 5 : tresca
  433. *
  434. * ----------------------------------------------------------------------
  435. * PAR Joseph MANNINO
  436. * ----------------------------------------------------------------------
  437. *debut variati
  438. *'DEBPROC' @VARIATI FLEXT*LOGIQUE ETATS*LISTENTI TABVM*TABLE TABVT*TABLE
  439. * MOPT/MOT ;
  440. * ======================================================================
  441. * initialisation
  442. * ======================================================================
  443. *
  444. TAB1 = TABLE ;
  445. TAB2 = TABLE ;
  446. TAB3 = TABLE ;
  447. TABVS = TABLE ;
  448. * ======================================================================
  449. * nombre de coupes
  450. * ======================================================================
  451. NCOUP = DIME TABVM ;
  452. SI ( NCOUP NEG ( DIME TABVT ) ) ;
  453. MESSAGE 'LES TABLES POUR VARIATIONS NE CONVIENNENT PAS' ;
  454. QUITTER @RCCM ;
  455. FINSI ;
  456. * ======================================================================
  457. * creation d'une droite fictive et du modele associe, pour calcul
  458. * du TRESCA
  459. * ======================================================================
  460. DIMG = VALE 'DIME' ;
  461. MODG = VALE 'MODE' ;
  462.  
  463. SI ( DIMG EGA 2 ) ;
  464. P1 = 0. 0. ;
  465. P2 = 1. 0. ;
  466. SINON ;
  467. P1 = 0. 0. 0. ;
  468. P2 = 1. 0. 0. ;
  469. FINSI ;
  470. DR = P1 D 1 P2 ;
  471. MODLDR = 'MODE' DR 'MECANIQUE' 'ELASTIQUE' ;
  472. * ======================================================================
  473. * boucle sur les coupes
  474. * ======================================================================
  475. REPETER TCOUP ( NCOUP ) ;
  476. L = &TCOUP ;
  477. $L = CHAINE L/3 ;
  478. TABVS.L = TABLE ;
  479. * ----------------------------------------------------------------------
  480. * boucle sur les parois interieures et exterieures
  481. * m=1 --> paroi interieure
  482. * m=2 --> paroi exterieure
  483. * ----------------------------------------------------------------------
  484.  
  485. REPETER TPARO ( 2 ) ;
  486. M = &TPARO ;
  487. TABVS.L.M = TABLE ;
  488. * ----------------------------------------------------------------------
  489. * verification des chargements
  490. * ----------------------------------------------------------------------
  491. NTORS = DIME TABVM.L ;
  492. SI ( NTORS NEG ( DIME TABVT.L ) ) ;
  493. MESSAGE 'LES TABLES POUR VARIATIONS NE CONVIENNENT PAS' ;
  494. QUITTER @RCCM ;
  495. FINSI ;
  496. * ----------------------------------------------------------------------
  497. * extraction des chargements
  498. * ----------------------------------------------------------------------
  499. REPETER TCHAR ( NTORS ) ;
  500. N = &TCHAR ;
  501. TABM = TABVM.L.N ;
  502. TABT = TABVT.L.N ;
  503. SI ( M EGA 1 ) ;
  504. TAB1.N = TABM. 3 ;
  505. TAB2.N = TABM. 2;
  506. TAB3.N = TABT. 1 ;
  507. SINON ;
  508. TAB1.N = TABM. 6 ;
  509. TAB2.N = TABM. 5 ;
  510. TAB3.N = TABT. 4 ;
  511. FINSI ;
  512. FIN TCHAR ;
  513. * ----------------------------------------------------------------------
  514. * on rajoute eventuellement le chargement null
  515. * ----------------------------------------------------------------------
  516. SI MOPT ;
  517. NTORS = NTORS + 1 ;
  518. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  519. TAB1.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
  520. TAB2.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
  521. TAB3.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
  522. SINON ;
  523. TAB1.NTORS = PROG 0. 0. 0. 0. ;
  524. TAB2.NTORS = PROG 0. 0. 0. 0. ;
  525. TAB3.NTORS = PROG 0. 0. 0. 0. ;
  526. FINSI ;
  527. FINÓI;
  528. * ======================================================================
  529. * on soustrait 2 a 2 les torseurs contenus dans tab et on retient
  530. * la combinaison qui donne le plus grand tresca
  531. * ======================================================================
  532. TREJM1 = 0. ;
  533. TREJM2 = 0. ;
  534. TREJM3 = 0. ;
  535. IS1 = 1 ;
  536. JS1 = 1 ;
  537. IS2 = 1 ;
  538. JS2 = 1 ;
  539. IS3 = 1 ;
  540. JS3 = 1 ;
  541. REPETER BOUCLE1 ( NTORS - 1 ) ;
  542. I = &BOUCLE1 ;
  543. J = I ;
  544. REPETER BOUCLE2 ( NTORS - I ) ;
  545. J = J + 1 ;
  546. TORS1 = TAB1.I - TAB1.J ;
  547. TORS2 = TAB2.I - TAB2.J ;
  548. NFOIS = 2 ;
  549. SI ( EXISTE TAB3 ) ;
  550. TORS3 = ( TAB2.I - TAB3.I ) - ( TAB2.J - TAB3.J ) ;
  551. NFOIS = 3 ;
  552. FINSI ;
  553. REPETER BOUCLE3 ( NFOIS ) ;
  554. K = &BOUCLE3 ;
  555. SI ( K EGA 1 ) ;
  556. S1 = EXTRAIRE TORS1 1 ;
  557. S2 = EXTRAIRE TORS1 2 ;
  558. S3 = EXTRAIRE TORS1 3 ;
  559. S4 = EXTRAIRE TORS1 4 ;
  560. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  561. S5 = EXTRAIRE TORS1 5 ;
  562. S6 = EXTRAIRE TORS1 6 ;
  563. FINSI ;
  564. FINSI ;
  565. SI ( K EGA 2 ) ;
  566. S1 = EXTRAIRE TORS2 1 ;
  567. S2 = EXTRAIRE TORS2 2 ;
  568. S3 = EXTRAIRE TORS2 3 ;
  569. S4 = EXTRAIRE TORS2 4 ;
  570. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  571. S5 = EXTRAIRE TORS2 5 ;
  572. S6 = EXTRAIRE TORS2 6 ;
  573. FINSI ;
  574. FINSI ;
  575. SI ( K EGA 3 ) ;
  576. S1 = EXTRAIRE TORS3 1 ;
  577. S2 = EXTRAIRE TORS3 2 ;
  578. S3 = EXTRAIRE TORS3 3 ;
  579. S4 = EXTRAIRE TORS3 4 ;
  580. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  581. S5 = EXTRAIRE TORS3 5 ;
  582. S6 = EXTRAIRE TORS3 6 ;
  583. FINSI ;
  584. FINSI ;
  585. * ----------------------------------------------------------------------
  586. * creation d'un champ par element fictif constant sur la droite,
  587. * equivalent au torseur
  588. * ----------------------------------------------------------------------
  589. SI ( DIMG EGA 2 ) ;
  590. SI ( EGA MODG 'FOUR' ) ;
  591. CHAM1 = MANU 'CHPO' DR 6 'SMRR' S1 'SMZZ' S2 'SMTT' S3
  592. 'SMRZ' S4 'SMRT' S5 'SMZT' S6 ;
  593. SINON ;
  594. SI ( EGA MODG 'AXIS' ) ;
  595. CHAM1 = MANU 'CHPO' DR 4 'SMRR' S1 'SMZZ' S2 'SMTT' S3
  596. 'SMRZ' S4 ;
  597. SINON ;
  598. CHAM1 = MANU 'CHPO' DR 4 'SMXX' S1 'SMYY' S2 'SMZZ' S3
  599. 'SMXY' S4 ;
  600. FINSI ;
  601. FINSI ;
  602. SINON ;
  603. CHAM1 = MANU 'CHPO' DR 6 'SMXX' S1 'SMYY' S2 'SMZZ' S3
  604. 'SMXY' S4 'SMXZ' S5 'SMYZ' S6 ;
  605. FINSI ;
  606.  
  607. CHAM2 = CHAN 'CHAM' CHAM1 MODLDR ;
  608. * ----------------------------------------------------------------------
  609. * calcul du tresca
  610. * ----------------------------------------------------------------------
  611. CHAM3 = TRES MODLDR CHAM2 ;
  612. SI ( K EGA 1 ) ;
  613. TREJ1 = EXTR CHAM3 'SCAL' 1 1 1 ;
  614. SI ( TREJ1 > TREJM1 ) ;
  615. TREJM1 = TREJ1 ;
  616. IS1 = I ;
  617. JS1 = J ;
  618. FINSI ;
  619. FINSI ;
  620. SI ( K EGA 2 ) ;
  621. TREJ2 = EXTR CHAM3 'SCAL' 1 1 1 ;
  622. SI ( TREJ2 > TREJM2 ) ;
  623. TREJM2 = TREJ2 ;
  624. IS2 = I ;
  625. JS2 = J ;
  626. FINSI ;
  627. FINSI ;
  628. SI ( K EGA 3 ) ;
  629. TREJ3 = EXTR CHAM3 'SCAL' 1 1 1 ;
  630. SI ( TREJ3 > TREJM3 ) ;
  631. TREJM3 = TREJ3 ;
  632. IS3 = I ;
  633. JS3 = J ;
  634. FINSI ;
  635. FINSI ;
  636. DETRUIRE CHAM1 ;
  637. DETRUIRE CHAM2 ;
  638. DETRUIRE CHAM3 ;
  639. FIN BOUCLE3 ;
  640. * ----------------------------------------------------------------------
  641. * destruction des objets crees a chaque pas
  642. * ----------------------------------------------------------------------
  643. DETRUIRE TORS1 ;
  644. DETRUIRE TORS2 ;
  645. SI (NFOIS EGA 3 ) ;
  646. DETRUIRE TORS3 ;
  647. FINSI ;
  648. FIN BOUCLE2 ;
  649. FIN BOUCLE1 ;
  650. * ======================================================================
  651. * resultat de la variation
  652. * ======================================================================
  653. REPETER BOUCLE3 ( NFOIS ) ;
  654. K = &BOUCLE3 ;
  655. TABVS.L.M.K = TABLE ;
  656. SI ( K EGA 1 ) ; UY = TABVS.L.M.K;
  657. UY . 1 = IS1 ;
  658. UY . 2 = JS1 ;
  659. UY . 3 = TAB1.IS1 ;
  660. UY . 4 = TAB1.JS1 ;
  661. UY . 5 = TREJM1 ;
  662. VAL11 = EXTRAIRE TAB1.IS1 1 ;
  663. VAL21 = EXTRAIRE TAB1.IS1 2 ;
  664. VAL31 = EXTRAIRE TAB1.IS1 3 ;
  665. VAL41 = EXTRAIRE TAB1.IS1 4 ;
  666. $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31 VAL41 ;
  667. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  668. VAL51 = EXTRAIRE TAB1.IS1 5 ;
  669. VAL61 = EXTRAIRE TAB1.IS1 6 ;
  670. $VALT1 = CHAINE $VALT1 FORMAT '(F9.2)' VAL61 VAL51;
  671. FINSI ;
  672. VAL12 = EXTRAIRE TAB1.JS1 1 ;
  673. VAL22 = EXTRAIRE TAB1.JS1 2 ;
  674. VAL32 = EXTRAIRE TAB1.JS1 3 ;
  675. VAL42 = EXTRAIRE TAB1.JS1 4 ;
  676. $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32 VAL42 ;
  677. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  678. VAL52 = EXTRAIRE TAB1.JS1 5 ;
  679. VAL62 = EXTRAIRE TAB1.JS1 6 ;
  680. $VALT2 = CHAINE $VALT2 FORMAT '(F9.2)' VAL62 VAL52;
  681. FINSI ;
  682. IS1E = EXTRAIRE ETATS IS1 ;
  683. JS1E = EXTRAIRE ETATS JS1 ;
  684. $IS1 = CHAINE IS1E/3 ;
  685. $JS1 = CHAINE JS1E/3 ;
  686. $TREJM1 = CHAINE FORMAT '(F9.2)' TREJM1 ;
  687. SAUTER 2 'LIGNE';
  688. SI ( M EGA 1 ) ;
  689. MESSAGE ' COUPE PAROI INTERIEURE' $L ;
  690. SINON ;
  691. MESSAGE ' COUPE PAROI EXTERIEURE' $L ;
  692. FINSI ;
  693. MESSAGE ' -------------------------' ;
  694. SAUTER 'LIGNE';
  695. MESSAGE 'VARIATION CONTRAINTES TOTALES = DELTA(PM+PB+Q+F) : SP';
  696. SAUTER 'LIGNE';
  697. MESSAGE ' ETAT NO' $IS1 ' -->' $VALT1;
  698. MESSAGE ' ETAT NO' $JS1 ' -->' $VALT2;
  699. MESSAGE ' TRESCA' $TREJM1 ' MPA' ;
  700. FINSI ;
  701. SI ( K EGA 2 ) ; UY= TABVS.L.M.K;
  702. UY . 1 = IS2 ;
  703. UY . 2 = JS2 ;
  704. UY . 3 = TAB2.IS2 ;
  705. UY . 4 = TAB2.JS2 ;
  706. UY . 5 = TREJM2 ;
  707. VAL11 = EXTRAIRE TAB2.IS2 1 ;
  708. VAL21 = EXTRAIRE TAB2.IS2 2 ;
  709. VAL31 = EXTRAIRE TAB2.IS2 3 ;
  710. VAL41 = EXTRAIRE TAB2.IS2 4 ;
  711. $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31 VAL41 ;
  712. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  713. VAL51 = EXTRAIRE TAB2.IS2 5 ;
  714. VAL61 = EXTRAIRE TAB2.IS2 6 ;
  715.  
  716. $VALT1 = CHAINE $VALT1 FORMAT '(F9.2)' VAL61 VAL51;
  717. FINSI ;
  718. VAL12 = EXTRAIRE TAB2.JS2 1 ;
  719. VAL22 = EXTRAIRE TAB2.JS2 2 ;
  720. VAL32 = EXTRAIRE TAB2.JS2 3 ;
  721. VAL42 = EXTRAIRE TAB2.JS2 4 ;
  722. $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32 VAL42 ;
  723. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  724. VAL52 = EXTRAIRE TAB2.JS2 5 ;
  725. VAL62 = EXTRAIRE TAB2.JS2 6 ;
  726. $VALT2 = CHAINE $VALT2 FORMAT '(F9.2)' VAL62 VAL52;
  727. FINSI ;
  728. IS2E = EXTRAIRE ETATS IS2 ;
  729. JS2E = EXTRAIRE ETATS JS2 ;
  730. $IS2 = CHAINE IS2E/3 ;
  731. $JS2 = CHAINE JS2E/3 ;
  732. $TREJM2 = CHAINE FORMAT '(F9.2)' TREJM2 ;
  733. SAUTER 'LIGNE';
  734. MESSAGE 'VARIATION CONTRAINTES MEMBRANE+FLEXION = '
  735. 'DELTA(PM+PB+Q) : SN' ;
  736. SAUTER 'LIGNE';
  737. MESSAGE ' ETAT NO' $IS2 ' -->' $VALT1;
  738. MESSAGE ' ETAT NO' $JS2 ' -->' $VALT2;
  739. MESSAGE ' TRESCA' $TREJM2 ' MPA' ;
  740. FINSI ;
  741. SI ( K EGA 3 ) ; UY= TABVS.L.M.K;
  742. UY . 1 = IS3 ;
  743. UY . 2 = JS3 ;
  744. UY . 3 = ( TAB2.IS3 - TAB3.IS3 ) ;
  745. UY . 4 = ( TAB2.JS3 - TAB3.JS3 ) ;
  746. UY . 5 = TREJM3 ;
  747. VAL11 = ( EXTRAIRE TAB2.IS3 1 ) - ( EXTRAIRE TAB3.IS3 1 ) ;
  748. VAL21 = ( EXTRAIRE TAB2.IS3 2 ) - ( EXTRAIRE TAB3.IS3 2 ) ;
  749. VAL31 = ( EXTRAIRE TAB2.IS3 3 ) - ( EXTRAIRE TAB3.IS3 3 ) ;
  750. VAL41 = ( EXTRAIRE TAB2.IS3 4 ) - ( EXTRAIRE TAB3.IS3 4 ) ;
  751. $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31 VAL41;
  752. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  753. VAL51 = ( EXTRAIRE TAB2.IS3 5 ) - ( EXTRAIRE TAB3.IS3 5 ) ;
  754. VAL61 = ( EXTRAIRE TAB2.IS3 6 ) - ( EXTRAIRE TAB3.IS3 6 ) ;
  755. $VALT1 = CHAINE $VALT1 FORMAT '(F9.2)' VAL61 VAL51;
  756. FINSI ;
  757. VAL12 = ( EXTRAIRE TAB2.JS3 1 ) - ( EXTRAIRE TAB3.JS3 1 ) ;
  758. VAL22 = ( EXTRAIRE TAB2.JS3 2 ) - ( EXTRAIRE TAB3.JS3 2 ) ;
  759. VAL32 = ( EXTRAIRE TAB2.JS3 3 ) - ( EXTRAIRE TAB3.JS3 3 ) ;
  760. VAL42 = ( EXTRAIRE TAB2.JS3 4 ) - ( EXTRAIRE TAB3.JS3 4 ) ;
  761. $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32 VAL42;
  762. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  763. VAL52 = ( EXTRAIRE TAB2.JS3 5 ) - ( EXTRAIRE TAB3.JS3 5 ) ;
  764. VAL62 = ( EXTRAIRE TAB2.JS3 6 ) - ( EXTRAIRE TAB3.JS3 6 ) ;
  765. $VALT2 = CHAINE $VALT2 FORMAT '(F9.2)' VAL62 VAL52;
  766. FINSI ;
  767. IS3E = EXTRAIRE ETATS IS3 ;
  768. JS3E = EXTRAIRE ETATS JS3 ;
  769. $IS3 = CHAINE IS3E/3 ;
  770. $JS3 = CHAINE JS3E/3 ;
  771. $TREJM3 = CHAINE FORMAT '(F9.2)' TREJM3 ;
  772. SAUTER 'LIGNE';
  773. SI ( FLEXT ) ;
  774. MESSAGE 'VARIATION CONTRAINTES MEMBRANE+FLEXION (FLEXION '
  775. 'THERMIQUE EXCLUE) : SN*' ;
  776. SINON ;
  777. MESSAGE 'VARIATION CONTRAINTES MEMBRANE : SN*' ;
  778. FINSI ;
  779. SAUTER 'LIGNE';
  780. MESSAGE ' ETAT NO' $IS3 ' -->' $VALT1;
  781. MESSAGE ' ETAT NO' $JS3 ' -->' $VALT2;
  782. MESSAGE ' TRESCA' $TREJM3 ' MPA' ;
  783. FINSI ;
  784. FIN BOUCLE3 ;
  785. FIN TPARO ;
  786. FIN TCOUP ;
  787. *modifs
  788. *FINPROC TABVS ;
  789. TVARSG.II = TABVS ;
  790.  
  791. FIN BOUCL01 ;
  792. *
  793. SAUT LIGNE;
  794. MESSAGE '---> fin phase variations' ;
  795. MESSAGE ' --------------------' ;
  796. SAUT LIGNE;
  797. * ----------------------------------------------------------------------
  798. * fatigue si TABFATI existe
  799. * ----------------------------------------------------------------------
  800.  
  801. SI ( EXISTE TABFATI ) ;
  802.  
  803. SAUT LIGNE;
  804. MESSAGE '---> phase fatigue' ;
  805. MESSAGE ' -------------' ;
  806. SAUT LIGNE;
  807. REPETER BOUCLE1 ( NGROUPTM ) ;
  808. I = &BOUCLE1 ;
  809. SAUT LIGNE;
  810. MESSAGE ' ---> occurences groupe ' I ;
  811. MESSAGE ' -----------------------' ;
  812. SAUT LIGNE;
  813. TABOCCUR.I = TABFATI.IND1.I ;
  814. FIN BOUCLE1 ;
  815.  
  816. REPETER BOUCLE1 ( NCOUPS ) ;
  817. I = &BOUCLE1 ;
  818. SAUT LIGNE;
  819. MESSAGE ' ---> donnees materiaux pour coupe ' I ;
  820. MESSAGE ' -----------------------------' ;
  821. SAUT LIGNE;
  822. TABDONF.I = TABLE ;
  823. LISTEMA = TABFATI.IND2.I ;
  824. NMATER = DIME ( LISTEMA ) ;
  825. REPETER BOUCLE2 ( NMATER ) ;
  826. J = &BOUCLE2 ;
  827. TABDONF.I.J = EXTRAIRE LISTEMA J ;
  828. FIN BOUCLE2 ;
  829. FIN BOUCLE1 ;
  830. SI (SEISME) ;
  831. TABDSEI = TABLE ;
  832. REPETER BOUCLE1 ( NCOUPS ) ;
  833. I = &BOUCLE1 ;
  834. SAUT LIGNE;
  835. MESSAGE ' ---> donnees seisme pour coupe ' I ;
  836. MESSAGE ' --------------------------' ;
  837. SAUT LIGNE;
  838. TABDSEI.I = TABLE ;
  839. LISTSEI = TABFATI.IND3.I ;
  840. NCTORS = DIME ( LISTSEI ) ;
  841. REPETER BOUCLE2 ( NCTORS ) ;
  842. J = &BOUCLE2 ;
  843. TABDSEI.I.J = EXTRAIRE LISTSEI J ;
  844. FIN BOUCLE2 ;
  845. FIN BOUCLE1 ;
  846. FINSI ;
  847.  
  848. *modif FATIGUE: la procedure FATIGUE est supprimee
  849. *et est directement integree ci dessous
  850. *en conservant la notice explicative
  851. *modif effectuees avant l entree dans fatigue:
  852.  
  853. * SI (NON SEISME) ;
  854. * @FATIGUE TVARSG TABOCCUR TABDONF ;
  855. * SINON ;
  856. * @FATIGUE TVARSG TABOCCUR TABDONF TABDSEI ;
  857. * FINSI ;
  858. *initialisations
  859. TABVT= TVARSG ;
  860. TABNT= TABOCCUR ;
  861. TABDF= TABDONF ;
  862. SI ( SEISME ) ;TABDS=TABDSEI ;FINSI ;
  863.  
  864. *$$$$ @FATIGUE
  865. * @FATIGUE PROCEDURE 96/10/09 16:00:00
  866. * ----------------------------------------------------------------------
  867. ****** PROCEDURE @FATIGUE ******
  868. * ----------------------------------------------------------------------
  869. *
  870. * CETTE PROCEDURE PERMET DE FORMER UN FICHIER POUR USE2.
  871. *
  872. * ----------------------------------------------------------------------
  873. *
  874. * LES DONNEES SONT :
  875. * ----> une table composee a chaque indice d'une table pour chaque
  876. * coupe contenant elle meme une table a 4 indices correspondant
  877. * a une variation (ou transitoire dans la terminolagie de USE2;
  878. * l'ensemble des transitoires , avec le nombre d'occurences
  879. * pour chaque transitoire forme un groupe, au sens de USE2.
  880. * Cette table a 4 indices est formee
  881. * par VARIATI et contient :
  882. * - premier indice : numero de coupe
  883. * - deuxieme indice : code :
  884. * - 1 : paroi interieure
  885. * - 2 : paroi exterieure
  886. * - troisieme indice : code :
  887. * - 1 : contraintes totales
  888. * - 2 : contraintes membrane+flexion
  889. * - 3 : contraintes membrane+flexion,
  890. * flexion thermique exclue
  891. * - quatrieme indice : 5 sorties :
  892. * - 1 : indice du premier torseur
  893. * - 2 : indice du deuxieme torseur
  894. * - 3 : premier torseur
  895. * - 4 : deuxieme torseur
  896. * - 5 : tresca
  897. *
  898. * ----> une table donnant pour chaque transitoire le nombre
  899. * d'occurences
  900. * ----> une table composee a chaque indice d'une table a 6 indices
  901. * ou 7 indices correspondant a des donnees de materiaux ou code
  902. * seisme pour USE2, pour chaque coupe.
  903. * Cette table a 6 indices contenant :
  904. * - premier indice : code materiau
  905. * - deuxieme indice : module d'elasticite
  906. * - troisieme indice : facteur de concentration des
  907. * contraintes
  908. * - quatrieme indice : contrainte SM de reference
  909. * - cinquieme indice : parametre intervenant dans le calcul
  910. * du facteur de concentration
  911. * elastoplastique KE
  912. * - sixieme indice : parametre intervenant dans le calcul
  913. * du facteur de concentration
  914. * elastoplastique KE
  915. * - septieme indice : code de seisme, si calcul au seisme :
  916. * . 1 : calcul conservatif mais rapide
  917. * . 2 : calcul realiste mais lent
  918. * ----> une table eventuelle composee a chaque indice d'une table a
  919. * 4 indices ou 6 indices correspondant a des donnees de seisme
  920. * pour USE2, pour chaque coupe.
  921. * Cette table a 4 ou 6 indices contenant les composantes du
  922. * torseur du seisme.
  923. *
  924. * EN SORTIE :
  925. * ----> impression des resultats
  926. *
  927. * ----------------------------------------------------------------------
  928. * PAR Joseph MANNINO
  929. * ----------------------------------------------------------------------
  930. *'DEBPROC' @FATIGUE TABVT*TABLE TABNT*TABLE TABDF*TABLE TABDS/TABLE ;
  931. * ======================================================================
  932. * initialisation
  933. * ======================================================================
  934. DIMG = VALE 'DIME' ;
  935. MODG = VALE 'MODE' ;
  936. * ======================================================================
  937. * nombre de transitoires
  938. * ======================================================================
  939. NTRAN = DIME TABVT ;
  940. SI ( NTRAN NEG ( DIME TABNT ) ) ;
  941. MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
  942. QUITTER @RCCM ;
  943. FINSI ;
  944. * ======================================================================
  945. * nombre de coupes
  946. * ======================================================================
  947. NCOUP = DIME TABVT. 1 ;
  948. SI ( NCOUP NEG ( DIME TABDF ) ) ;
  949. MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
  950. QUITTER @RCCM ;
  951. FINSI ;
  952. * ======================================================================
  953. * code de revision de USE 2
  954. * ======================================================================
  955. MESSAGE '5.' ;
  956. * ======================================================================
  957. * boucle sur les coupes
  958. * ======================================================================
  959. REPETER TCOUP ( NCOUP ) ;
  960. J = &TCOUP ;
  961. $J = CHAINE J/3 ;
  962. SI (((DIME TABDF.J) NEG 6) ET ((DIME TABDF.J) NEG 7)) ;
  963. MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
  964. QUITTER @RCCM ;
  965. FINSI ;
  966. UY = TABDF . J;
  967. CAUD = UY . 1 FLOT;
  968. ANT = FLOT NTRAN ;
  969. EMIN = UY . 2 FLOT;
  970. AK = UY . 3 FLOT;
  971. SM = UY . 4 FLOT;
  972. XM = UY . 5 FLOT;
  973. XN = UY . 6 FLOT;
  974. SI (EXISTE UY 7) ;
  975. SEISME = UY . 7 ;
  976. SINON ;
  977. SEISME = 0. ;
  978. FINSI ;
  979.  
  980. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  981. OPT = 3. ;
  982. SINON ;
  983. OPT = 2. ;
  984. FINSI ;
  985. TEST = 1. ;
  986. * ----------------------------------------------------------------------
  987. * boucle sur les parois interieures et exterieures
  988. * k=1 --> paroi interieure
  989. * k=2 --> paroi exterieure
  990. * ----------------------------------------------------------------------
  991.  
  992. REPETER TPARO ( 2 ) ;
  993.  
  994. K = &TPARO ;
  995.  
  996. SI ( K EGA 1 ) ;
  997. MESSAGE 'FACTEUR D"USAGE DANS LA COUPE' $J ' PAROI INTERIEURE' ;
  998. SINON ;
  999. MESSAGE 'FACTEUR D"USAGE DANS LA COUPE' $J ' PAROI EXTERIEURE' ;
  1000. FINSI ;
  1001. AA = CHAINE FORMAT '(F10.0)' CAUD ANT EMIN FORMAT '(F10.2)' AK
  1002. FORMAT '(F10.1)' SM XM XN FORMAT '(F10.0)' SEISME;
  1003. MESS AA;
  1004. AA = CHAINE FORMAT '(F10.1)' OPT TEST;
  1005. MESS AA;
  1006. * ----------------------------------------------------------------------
  1007. * ecriture du seisme eventuel
  1008. * ----------------------------------------------------------------------
  1009. SI ((EXISTE TABDS) ET ((SEISME EGA 1.) OU (SEISME EGA 2.))) ;
  1010. UY = TABDS.J;
  1011. S1 = UY . 1 ;
  1012. S2 = UY . 2 ;
  1013. S3 = UY . 3 ;
  1014. S4 = UY . 4 ;
  1015. S5 = UY . 5 ;
  1016. S6 = UY . 6 ;
  1017. SI (DIMG EGA 3) ;
  1018. S7 = UY . 7 ;
  1019. S8 = UY . 8 ;
  1020. FINSI ;
  1021. SI (DIMG EGA 2) ;
  1022. AA = CHAINE FORMAT '(F10.2)' S1 S2 S3 S4 S5 S6;
  1023. MESS AA;
  1024. SINON ;
  1025. AA = CHAINE FORMAT '(F10.2)' S1 S2 S3 S4 S5 S6 S7 S8;
  1026. MESS AA;
  1027. FINSI ;
  1028. FINSI ;
  1029. * ======================================================================
  1030. * boucle sur les transitoires
  1031. * ======================================================================
  1032. REPETER TTRAN ( NTRAN ) ;
  1033. I = &TTRAN ;
  1034. SI ( NCOUP NEG ( DIME TABVT.I ) ) ;
  1035. MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
  1036. QUITTER @RCCM ;
  1037. FINSI ;
  1038. NOC = TABNT.I FLOT;
  1039. $NOC = CHAINE FORMAT '(F10.0)' NOC ;
  1040. MESSAGE $NOC ;
  1041. UY = TABVT.I.J.K;
  1042. TORS1 = UY . 1 . 3 ;
  1043. TORS2 = UY . 1 . 4 ;
  1044. TORS3 = UY . 2 . 3 ;
  1045. TORS4 = UY . 2 . 4;
  1046. S11 = EXTRAIRE TORS1 1 ;
  1047. S21 = EXTRAIRE TORS1 2 ;
  1048. S31 = EXTRAIRE TORS1 3 ;
  1049. S41 = EXTRAIRE TORS1 4 ;
  1050. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  1051. S51 = EXTRAIRE TORS1 5 ;
  1052. S61 = EXTRAIRE TORS1 6 ;
  1053. FINSI ;
  1054. S12 = EXTRAIRE TORS2 1 ;
  1055. S22 = EXTRAIRE TORS2 2 ;
  1056. S32 = EXTRAIRE TORS2 3 ;
  1057. S42 = EXTRAIRE TORS2 4 ;
  1058. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  1059. S52 = EXTRAIRE TORS2 5 ;
  1060. S62 = EXTRAIRE TORS2 6 ;
  1061. FINSI ;
  1062. S13 = EXTRAIRE TORS3 1 ;
  1063. S23 = EXTRAIRE TORS3 2 ;
  1064. S33 = EXTRAIRE TORS3 3 ;
  1065. S43 = EXTRAIRE TORS3 4 ;
  1066. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  1067. S53 = EXTRAIRE TORS3 5 ;
  1068. S63 = EXTRAIRE TORS3 6 ;
  1069. FINSI ;
  1070. S14 = EXTRAIRE TORS4 1 ;
  1071. S24 = EXTRAIRE TORS4 2 ;
  1072. S34 = EXTRAIRE TORS4 3 ;
  1073. S44 = EXTRAIRE TORS4 4 ;
  1074. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  1075. S54 = EXTRAIRE TORS4 5 ;
  1076. S64 = EXTRAIRE TORS4 6 ;
  1077. FINSI ;
  1078. SI ( ( DIMG EGA 3 ) OU ( EGA MODG 'FOUR' ) ) ;
  1079. AA = CHAINE FORMAT '(F10.2)' S11 S21 S31 S41 S61 S51;
  1080. MESS AA;
  1081. AA = CHAINE FORMAT '(F10.2)' S12 S22 S32 S42 S62 S52 ;
  1082. MESS AA;
  1083. AA = CHAINE FORMAT '(F10.2)' S13 S23 S33 S43 S63 S53 ;
  1084. MESS AA;
  1085. AA = CHAINE FORMAT '(F10.2)' S14 S24 S34 S44 S64 S54 ;
  1086. MESS AA;
  1087. SINON ;
  1088. AA = CHAINE FORMAT '(F10.2)' S11 S21 S31 S41 S12 S22 S32 S42 ;
  1089. MESS AA;
  1090. AA = CHAINE FORMAT '(F10.2)' S13 S23 S33 S43 S14 S24 S34 S44 ;
  1091. MESS AA;
  1092. FINSI ;
  1093. FIN TTRAN ;
  1094. SI ( ( J EGA NCOUP ) ET ( K EGA 2 ) ) ;
  1095. MESSAGE '0.' ;
  1096. SINON ;
  1097. MESSAGE '1.' ;
  1098. FINSI ;
  1099. FIN TPARO ;
  1100. FIN TCOUP ;
  1101. *FINPROC ;
  1102.  
  1103. SAUT LIGNE;
  1104. MESSAGE '---> fin phase fatigue' ;
  1105. MESSAGE ' -----------------' ;
  1106. SAUT LIGNE;
  1107. FINSI ;
  1108. FINSI ;
  1109. FINSI ;
  1110. SAUT LIGNE;
  1111. MESSAGE '***** FIN DU CALCUL RCCM *****' ;
  1112. MESSAGE '------------------------------' ;
  1113. SAUT LIGNE;
  1114. FINPROC ;
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  

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