Télécharger @rccm.procedur

Retour à la liste

Numérotation des lignes :

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

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