Télécharger mrcfram4.procedur

Retour à la liste

Numérotation des lignes :

  1. * MRCFRAM4 PROCEDUR AF221230 18/04/20 21:15:03 9814
  2. DEBPROC MRCFRAM4 TYP_CAL2*'MOT '
  3. TAB_IN2*'TABLE' TOL_2*'FLOTTANT';
  4. *
  5. * --------------------------------------------------------
  6. * Procedure FRCFRAM4
  7. * Procedure appele par MRCFRAME pour le calcul de la marge sismique
  8. * d'element frame tyep POUTRE LONG
  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. * LAM1 = MRCFRAM4 MOT1 TAB1 TOL1;
  19. *
  20. *
  21. * INPUT:
  22. *
  23. * MOT1 [MOT] afin de specifier le type de calcul:
  24. * 'ELLIPSOIDE' calcul des marges avec l'enveloppe
  25. * ellipsiodale
  26. * 'RECTANGLE' calcul des marges avec l'enveloppe
  27. * prismatique
  28. *
  29. * TAB1 type TABLE pour definir les donnees suivantes:
  30. * TAB1.'BASE_Y1' dimension section direction Y en m [FLOTTANT]
  31. * TAB1.'BASE_Z1' dimension section direction Z en m [FLOTTANT]
  32. * TAB1.'LONG_Y1' longuer ly [FLOTTANT]
  33. * TAB1.'LONG_Z1' longuer lz [FLOTTANT]
  34. * TAB1.'ENROBA1' enrobage en m [FLOTTANT]
  35. * TAB1.'ACADRY1' aire de l'armature transversale
  36. * direction y en m2 [FLOTTANT]
  37. * TAB1.'ACADRZ1' aire de l'armature transversale
  38. * direction z en m2 [FLOTTANT]
  39. * TAB1.'S_CADR1' espacement des cadres en
  40. * m [FLOTTANT]
  41. * TAB1.'LI_PHI1' LISTREEL des diam barres d'acier en mm
  42. * TAB1.'PY_PHI1' LISTREEL de la position y en m de
  43. * chaque barre par rapport au
  44. * baricentre de la section
  45. * TAB1.'PZ_PHI1' LISTREEL de la position z en m de
  46. * chaque barre par rapport au
  47. * baricentre de la section
  48. * TAB1.'E_ACIE1' Module Young acier [FLOTTANT]
  49. * TAB1.'EP_BET1' deformation ultime beton [FLOTTANT]
  50. * TAB1.'EP_ACI1' deformation ultime acier [FLOTTANT]
  51. * TAB1.'OM_SY1' omega_s_y [FLOTTANT]
  52. * TAB1.'OM_SZ1' omega_s_z [FLOTTANT]
  53. * TAB1.'OM_WZ1' omega_w_y [FLOTTANT]
  54. * TAB1.'OM_WY1' omega_w_z [FLOTTANT]
  55. * TAB1.'LAMB_Y1' lambda_y [FLOTTANT]
  56. * TAB1.'LAMB_Z1' lambda_y [FLOTTANT]
  57. * TAB1.'CHI_Z1' chi_z [FLOTTANT]
  58. * TAB1.'CHI_Y1' chi_y [FLOTTANT]
  59. * TAB1.'EFFX0' EFFX statique [FLOTTANT]
  60. * TAB1.'EFFY0' EFFY statique [FLOTTANT]
  61. * TAB1.'EFFZ0' EFFZ statique [FLOTTANT]
  62. * TAB1.'MOMX0' MOMX statique [FLOTTANT]
  63. * TAB1.'MOMY0' MOMY statique [FLOTTANT]
  64. * TAB1.'MOMZ0' MOMZ statique [FLOTTANT]
  65. * TAB1.'NNNN1' (EFFX)2 - matrice X seisme [FLOTTANT]
  66. * TAB1.'NNVY1' Cov EFFX et EFFY -matrice X seisme [FLOTTANT]
  67. * TAB1.'NNVZ1' Cov EFFX et EFFZ -matrice X seisme [FLOTTANT]
  68. * TAB1.'NNMT1' Cov EFFX et MOMX -matrice X seisme [FLOTTANT]
  69. * TAB1.'NNMY1' Cov EFFX et MOMY -matrice X seisme [FLOTTANT]
  70. * TAB1.'NNMZ1' Cov EFFX et MOMZ -matrice X seisme [FLOTTANT]
  71. * TAB1.'VYVY1' (EFFY)2 - matrice X seisme [FLOTTANT]
  72. * TAB1.'VYVZ1' Cov EFFY et EFFZ -matrice X seisme [FLOTTANT]
  73. * TAB1.'VYMT1' Cov EFFY et MOMX -matrice X seisme [FLOTTANT]
  74. * TAB1.'VYMY1' Cov EFFY et MOMY -matrice X seisme [FLOTTANT]
  75. * TAB1.'VYMZ1' Cov EFFY et MOMZ -matrice X seisme [FLOTTANT]
  76. * TAB1.'VZVZ1' (EFFZ)2 - matrice X seisme [FLOTTANT]
  77. * TAB1.'VZMT1' Cov EFFZ et MOMX -matrice X seisme [FLOTTANT]
  78. * TAB1.'VZMY1' Cov EFFZ et MOMY -matrice X seisme [FLOTTANT]
  79. * TAB1.'VZMZ1' Cov EFFZ et MOMZ -matrice X seisme [FLOTTANT]
  80. * TAB1.'MTMT1' (MOMX)2 - matrice X seisme [FLOTTANT]
  81. * TAB1.'MTMY1' Cov MOMX et MOMY -matrice X seisme [FLOTTANT]
  82. * TAB1.'MTMZ1' Cov MOMX et MOMZ -matrice X seisme [FLOTTANT]
  83. * TAB1.'MYMY1' (MOMY)2 - matrice X seisme [FLOTTANT]
  84. * TAB1.'MYMZ1' Cov MOMY et MOMZ -matrice X seisme [FLOTTANT]
  85. * TAB1.'MZMZ1' (MOMZ)2 - matrice X seisme [FLOTTANT]
  86. * TAB1.'FCD1' fcd du beton [FLOTTANT]
  87. * TAB1.'FSD1' fsd du acier [FLOTTANT]
  88. *
  89. * TOL1 Tolerance du calcul (1.e-4)
  90. *
  91. *
  92. * OUTPUT:
  93. *
  94. *
  95. * LAM1 Marge sismique
  96. *
  97. *
  98. *
  99. * --------------------------------------------------------
  100. *
  101. *
  102. * Input Phase
  103. BASE_Y1 = TAB_IN2.'BASE_Y1';
  104. BASE_Z1 = TAB_IN2.'BASE_Z1';
  105. LONG_Y1 = TAB_IN2.'LONG_Y1';
  106. LONG_Z1 = TAB_IN2.'LONG_Z1';
  107. ENROBA1 = TAB_IN2.'ENROBA1';
  108. ACADRY1 = TAB_IN2.'ACADRY1';
  109. ACADRZ1 = TAB_IN2.'ACADRZ1';
  110. S_CADR1 = TAB_IN2.'S_CADR1';
  111. LI_PHI1 = TAB_IN2.'LI_PHI1';
  112. PY_PHI1 = TAB_IN2.'PY_PHI1';
  113. PZ_PHI1 = TAB_IN2.'PZ_PHI1';
  114. E_ACIE1 = TAB_IN2.'E_ACIE1';
  115. EP_BET1 = TAB_IN2.'EP_BET1';
  116. EP_ACI1 = TAB_IN2.'EP_ACI1';
  117. OM_SY1 = TAB_IN2.'OM_SY1';
  118. OM_SZ1 = TAB_IN2.'OM_SZ1';
  119. OM_WZ1 = TAB_IN2.'OM_WZ1';
  120. OM_WY1 = TAB_IN2.'OM_WY1';
  121. LAMB_Y1 = TAB_IN2.'LAMB_Y1';
  122. LAMB_Z1 = TAB_IN2.'LAMB_Z1';
  123. CHI_Z1 = TAB_IN2.'CHI_Z1';
  124. CHI_Y1 = TAB_IN2.'CHI_Y1';
  125. EFFX0 = TAB_IN2.'EFFX0';
  126. EFFY0 = TAB_IN2.'EFFY0';
  127. EFFZ0 = TAB_IN2.'EFFZ0';
  128. MOMX0 = TAB_IN2.'MOMX0';
  129. MOMY0 = TAB_IN2.'MOMY0';
  130. MOMZ0 = TAB_IN2.'MOMZ0';
  131. NNNN1 = TAB_IN2.'NNNN1';
  132. NNVY1 = TAB_IN2.'NNVY1';
  133. NNVZ1 = TAB_IN2.'NNVZ1';
  134. NNMT1 = TAB_IN2.'NNMT1';
  135. NNMY1 = TAB_IN2.'NNMY1';
  136. NNMZ1 = TAB_IN2.'NNMZ1';
  137. VYVY1 = TAB_IN2.'VYVY1';
  138. VYVZ1 = TAB_IN2.'VYVZ1';
  139. VYMT1 = TAB_IN2.'VYMT1';
  140. VYMY1 = TAB_IN2.'VYMY1';
  141. VYMZ1 = TAB_IN2.'VYMZ1';
  142. VZVZ1 = TAB_IN2.'VZVZ1';
  143. VZMT1 = TAB_IN2.'VZMT1';
  144. VZMY1 = TAB_IN2.'VZMY1';
  145. VZMZ1 = TAB_IN2.'VZMZ1';
  146. MTMT1 = TAB_IN2.'MTMT1';
  147. MTMY1 = TAB_IN2.'MTMY1';
  148. MTMZ1 = TAB_IN2.'MTMZ1';
  149. MYMY1 = TAB_IN2.'MYMY1';
  150. MYMZ1 = TAB_IN2.'MYMZ1';
  151. MZMZ1 = TAB_IN2.'MZMZ1';
  152. FCD1 = TAB_IN2.'FCD1';
  153. FSD1 = TAB_IN2.'FSD1';
  154. *
  155. ENR1 = ENROBA1;
  156. *
  157. NLIMC1 = (-1.0 - OM_SY1)*(((BASE_Y1)*(BASE_Z1))*(FCD1));
  158. NLIMT1 = (OM_SY1)*(((BASE_Y1)*(BASE_Z1))*(FCD1));
  159. *
  160. * Static Point
  161. TINI1 = TABLE;
  162. TINI1.'TYPE' = CHAINE 'PT_LONG';
  163. TINI1.'NN' = EFFX0;
  164. TINI1.'VY' = EFFY0;
  165. TINI1.'VZ' = EFFZ0;
  166. TINI1.'MT' = MOMX0;
  167. TINI1.'MY' = MOMY0;
  168. TINI1.'MZ' = MOMZ0;
  169. TINI1.'BY' = BASE_Y1;
  170. TINI1.'BZ' = BASE_Z1;
  171. TINI1.'FCD' = FCD1;
  172. TINI1.'FSD' = FSD1;
  173. TINI1.'WSY' = OM_SY1;
  174. TINI1.'WSZ' = OM_SZ1;
  175. TINI1.'WWY' = OM_WY1;
  176. TINI1.'WWZ' = OM_WZ1;
  177. TINI1.'LY' = LAMB_Y1;
  178. TINI1.'LZ' = LAMB_Z1;
  179. TINI1.'XIY' = CHI_Y1;
  180. TINI1.'XIZ' = CHI_Z1;
  181. TINI1.'PHI_LON' = LI_PHI1;
  182. TINI1.'PHI_Y' = PY_PHI1;
  183. TINI1.'PHI_Z' = PZ_PHI1;
  184. TINI1.'EPSI_BET' = EP_BET1;
  185. TINI1.'EPSI_ACI' = EP_ACI1;
  186. TINI1.'YOUNG_ACIER' = E_ACIE1;
  187. *
  188. 'SI' ('EGA' TYP_CAL1 'ELLIPSOIDE');
  189. *
  190. *-------------------------------------------------------------
  191. * Methode Ellipse
  192. *
  193. * Test about the static state stress
  194. T_ST1 = G_ULTIFR TINI1;
  195. *
  196. 'SI' (T_ST1 '<EG' 0.0);
  197. LAM_FIN1 = 0.0;
  198. TIT1 = 'CHAINE' ' Element ' I_IE1 ' Lambda='
  199. LAM_FIN1 '.....Sig0 externe';
  200. 'MESS' TIT1;
  201. 'SINON';
  202. MAI1 = 0. 0. 0.;
  203. * Matrix X
  204. MATX1 = VIDE 'RIGIDITE'/'RIGIDITE';
  205. MATX1 = MATX1 'ET' ('MANU' 'RIGIDITE' MAI1 (MOTS 'UX' 'UZ')
  206. ('PROG' MYMY1 NNMY1
  207. NNMY1 NNNN1));
  208. *
  209. * Static state stress
  210. EF_ST0 = 'MANU' 'CHPO' MAI1 2 'FX' MOMY0 'FZ' EFFX0;
  211. EF_ST0 = 'CHAN' 'ATTRIBUT' EF_ST0 'NATURE' 'DISCRET';
  212. *
  213. *
  214. * Initial Vecteur
  215. ALP_0 = 'MANU' 'CHPO' MAI1 2 'UX' 2.0 'UZ' 2.0;
  216. XALP_0 = (MATX1*ALP_0)/(('XTMX' MATX1 ALP_0)**(0.5));
  217. XALP_0 = ('CHAN' ATTRIBUT XALP_0 NATURE DISCRET) + EF_ST0;
  218. *
  219. * direction used for the ellispoide methode
  220. TB_DIR = 'TABLE';
  221. TB_DIR. 1 = 'MANU' 'CHPO' MAI1 2 'UX' 1.0 'UZ' 0.0;
  222. TB_DIR. 2 = 'MANU' 'CHPO' MAI1 2 'UX' 0.0 'UZ' 1.0;
  223. TB_DIR. 3 = 'MANU' 'CHPO' MAI1 2 'UX' -1.0 'UZ' 0.0;
  224. TB_DIR. 4 = 'MANU' 'CHPO' MAI1 2 'UX' 0.0 'UZ' -1.0;
  225. *
  226. SB0 = ('XTX' (XALP_0 - EF_ST0))**(0.5);
  227. RB0 = SB0;
  228. LAMB0 = RB0/SB0;
  229. *
  230. * incremental step
  231. H_VAL1 = (SB0)/(100000.0);
  232. H_VAL2 = (SB0)/(100000.0);
  233. *
  234. * variable for the convergence test
  235. ID1_CON = 0;
  236. *
  237. * loop for each direction
  238. I_K1 = 1;
  239. 'REPE' IND3 (4);
  240. *
  241. TAB_ITE = 'TABLE';
  242. TAB_ITE. 0 = 'TABLE';
  243. TAB_ITE. 0 . 'ALPA' = ALP_0;
  244. TAB_ITE. 0 . 'LAMBDA' = LAMB0;
  245. TAB_ITE. 0 . 'RB' = RB0;
  246. *
  247. ALP_K = (TB_DIR. I_K1);
  248. I_M1 = 1;
  249. * first loop in order to have n_elllips=n_limite
  250. 'REPE' IND2 (200);
  251. * sauving Lambda for j iteraction
  252. TAB_ITE. I_M1 = 'TABLE';
  253. TAB_ITE. I_M1 . 'ALPA' = ALP_K;
  254. * determination of the stress state for the chosen direction
  255. XALP_J = (MATX1*ALP_K)/(('XTMX' MATX1 ALP_K)**(0.5));
  256. XALP_J = ('CHAN' ATTRIBUT XALP_J NATURE DISCRET) + EF_ST0;
  257. * nomalisez vector of hte rayon of the ellipsoide for the
  258. * chosen direction
  259. SBJ = ('XTX' (XALP_J - EF_ST0))**(0.5);
  260. BJ = (XALP_J - EF_ST0)/(SBJ);
  261. * rayon of the ellipsoide for the chosen direction
  262. RBVAL1 = (TAB_ITE.(I_M1 - 1). 'RB');
  263. * second loop in order to have f=0
  264. I_I1 = 1;
  265. 'REPE' IND1 (200);
  266. * strees state x0, x0+h, x0-h
  267. VV1 = (RBVAL1 + H_VAL1)*(BJ);
  268. VV2 = (RBVAL1 - H_VAL1)*(BJ);
  269. VV3 = (RBVAL1)*(BJ);
  270. VV1 = ('CHAN' 'ATTRIBUT' VV1 'NATURE' 'DISCRET') + EF_ST0;
  271. VV2 = ('CHAN' 'ATTRIBUT' VV2 'NATURE' 'DISCRET') + EF_ST0;
  272. VV3 = ('CHAN' 'ATTRIBUT' VV3 'NATURE' 'DISCRET') + EF_ST0;
  273. TINIA1 = 'COPI' TINI1;
  274. TINIB1 = 'COPI' TINI1;
  275. TINIC1 = 'COPI' TINI1;
  276. TINIA1.'NN' = EXTR VV1 'FZ' MAI1;
  277. TINIA1.'VY' = 0.0;
  278. TINIA1.'VZ' = 0.0;
  279. TINIA1.'MT' = 0.0;
  280. TINIA1.'MY' = EXTR VV1 'FX' MAI1;
  281. TINIA1.'MZ' = 0.0;
  282. TINIB1.'NN' = EXTR VV2 'FZ' MAI1;
  283. TINIB1.'VY' = 0.0;
  284. TINIB1.'VZ' = 0.0;
  285. TINIB1.'MT' = 0.0;
  286. TINIB1.'MY' = EXTR VV2 'FX' MAI1;
  287. TINIB1.'MZ' = 0.0;
  288. TINIC1.'NN' = EXTR VV3 'FZ' MAI1;
  289. TINIC1.'VY' = 0.0;
  290. TINIC1.'VZ' = 0.0;
  291. TINIC1.'MT' = 0.0;
  292. TINIC1.'MY' = EXTR VV3 'FX' MAI1;
  293. TINIC1.'MZ' = 0.0;
  294. 'OUBL' VV1;
  295. 'OUBL' VV2;
  296. 'OUBL' VV3;
  297. F_VAL1 = G_ULTIFR TINIC1;
  298. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  299. ((2.0)*(H_VAL1));
  300.  
  301. * MESS '-------------------------';
  302. * LIST F_VAL1;
  303. * LIST D_VAL1;
  304. * LIST (TINIC1.'MY');
  305. * LIST (TINIC1.'NN');
  306. * SI (I_I1 EGA 4);
  307. * ERRE 5;
  308. * FINSI;
  309. * controle
  310. 'SI' ((('ABS'(F_VAL1)) '<' ((TOL_2)/(100.0)))
  311. 'OU' (I_I1 'EGA' 200));
  312. RBJ = RBVAL1;
  313. 'QUIT' IND1;
  314. 'SINON';
  315. 'SI' (('ABS'(D_VAL1)) < 1.E-12);
  316. RBVAL2 = RBVAL1;
  317. RBVAL1 = RBVAL1*1.1;
  318. 'SINON';
  319. * otherwise
  320. RBVAL2 = RBVAL1;
  321. RBVAL1 = RBVAL1 - ((F_VAL1)/(D_VAL1));
  322. 'FINSI';
  323. 'FINSI';
  324. I_I1 = I_I1 + 1;
  325. 'FIN' IND1;
  326. * computation of lambda
  327. LAMBJ = RBJ/SBJ;
  328. TAB_ITE. I_M1 . 'LAMBDA' = LAMBJ;
  329. TAB_ITE. I_M1 . 'RB' = RBJ;
  330. XCOUB1 = (((TAB_ITE. I_M1 .'LAMBDA')*(TAB_ITE. I_M1 .'LAMBDA'))*
  331. (MATX1));
  332. * amplified stress state using the lambda coef
  333. XALP_L = (XCOUB1*ALP_K)/(('XTMX' XCOUB1 ALP_K)**(0.5));
  334. XALP_L = ('CHAN' ATTRIBUT XALP_L NATURE DISCRET) + EF_ST0;
  335. * Dh*ex ; Dh*ey ; Dh*ez
  336. DE_HX = 'MANU' 'CHPO' MAI1 2 'FX' H_VAL2 'FZ' 0.0;
  337. DE_HY = 'MANU' 'CHPO' MAI1 2 'FX' 0.0 'FZ' H_VAL2;
  338. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  339. VV_HXP = XALP_L + DE_HX;
  340. VV_HYP = XALP_L + DE_HY;
  341. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  342. VV_HXN = XALP_L - DE_HX;
  343. VV_HYN = XALP_L - DE_HY;
  344. * x0*lam
  345. VV_0 = XALP_L;
  346. *
  347. VV_HXP1 = 'EXTR' VV_HXP 'FX' MAI1;
  348. VV_HXP2 = 'EXTR' VV_HXP 'FZ' MAI1;
  349. VV_HYP1 = 'EXTR' VV_HYP 'FX' MAI1;
  350. VV_HYP2 = 'EXTR' VV_HYP 'FZ' MAI1;
  351. VV_HXN1 = 'EXTR' VV_HXN 'FX' MAI1;
  352. VV_HXN2 = 'EXTR' VV_HXN 'FZ' MAI1;
  353. VV_HYN1 = 'EXTR' VV_HYN 'FX' MAI1;
  354. VV_HYN2 = 'EXTR' VV_HYN 'FZ' MAI1;
  355. *
  356. VV_01 = 'EXTR' VV_0 'FX' MAI1;
  357. VV_02 = 'EXTR' VV_0 'FZ' MAI1;
  358. *
  359. 'SI' ((VV_HYP2) '>' (NLIMT1));
  360. TINIA1 = 'COPI' TINI1;
  361. TINIB1 = 'COPI' TINI1;
  362. TINIA1.'NN' = VV_HXP2;
  363. TINIA1.'VY' = 0.0;
  364. TINIA1.'VZ' = 0.0;
  365. TINIA1.'MT' = 0.0;
  366. TINIA1.'MY' = VV_HXP1;
  367. TINIA1.'MZ' = 0.0;
  368. TINIB1.'NN' = VV_HXN2;
  369. TINIB1.'VY' = 0.0;
  370. TINIB1.'VZ' = 0.0;
  371. TINIB1.'MT' = 0.0;
  372. TINIB1.'MY' = VV_HXN1;
  373. TINIB1.'MZ' = 0.0;
  374. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  375. ((2.0)*(H_VAL2));
  376. *
  377. TINIA1 = 'COPI' TINI1;
  378. TINIB1 = 'COPI' TINI1;
  379. TINIA1.'NN' = VV_02;
  380. TINIA1.'VY' = 0.0;
  381. TINIA1.'VZ' = 0.0;
  382. TINIA1.'MT' = 0.0;
  383. TINIA1.'MY' = VV_01;
  384. TINIA1.'MZ' = 0.0;
  385. TINIB1.'NN' = VV_HYN2;
  386. TINIB1.'VY' = 0.0;
  387. TINIB1.'VZ' = 0.0;
  388. TINIB1.'MT' = 0.0;
  389. TINIB1.'MY' = VV_HYN1;
  390. TINIB1.'MZ' = 0.0;
  391. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  392. ((1.0)*(H_VAL2));
  393. 'SINON';
  394. 'SI' ((VV_HYN2) '<' (NLIMC1));
  395. TINIA1 = 'COPI' TINI1;
  396. TINIB1 = 'COPI' TINI1;
  397. TINIA1.'NN' = VV_HXP2;
  398. TINIA1.'VY' = 0.0;
  399. TINIA1.'VZ' = 0.0;
  400. TINIA1.'MT' = 0.0;
  401. TINIA1.'MY' = VV_HXP1;
  402. TINIA1.'MZ' = 0.0;
  403. TINIB1.'NN' = VV_HXN2;
  404. TINIB1.'VY' = 0.0;
  405. TINIB1.'VZ' = 0.0;
  406. TINIB1.'MT' = 0.0;
  407. TINIB1.'MY' = VV_HXN1;
  408. TINIB1.'MZ' = 0.0;
  409. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  410. ((2.0)*(H_VAL2));
  411. *
  412. TINIA1 = 'COPI' TINI1;
  413. TINIB1 = 'COPI' TINI1;
  414. TINIA1.'NN' = VV_HYP2;
  415. TINIA1.'VY' = 0.0;
  416. TINIA1.'VZ' = 0.0;
  417. TINIA1.'MT' = 0.0;
  418. TINIA1.'MY' = VV_HYP1;
  419. TINIA1.'MZ' = 0.0;
  420. TINIB1.'NN' = VV_02;
  421. TINIB1.'VY' = 0.0;
  422. TINIB1.'VZ' = 0.0;
  423. TINIB1.'MT' = 0.0;
  424. TINIB1.'MY' = VV_01;
  425. TINIB1.'MZ' = 0.0;
  426. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  427. ((1.0)*(H_VAL2));
  428. 'SINON';
  429. TINIA1 = 'COPI' TINI1;
  430. TINIB1 = 'COPI' TINI1;
  431. TINIA1.'NN' = VV_HXP2;
  432. TINIA1.'VY' = 0.0;
  433. TINIA1.'VZ' = 0.0;
  434. TINIA1.'MT' = 0.0;
  435. TINIA1.'MY' = VV_HXP1;
  436. TINIA1.'MZ' = 0.0;
  437. TINIB1.'NN' = VV_HXN2;
  438. TINIB1.'VY' = 0.0;
  439. TINIB1.'VZ' = 0.0;
  440. TINIB1.'MT' = 0.0;
  441. TINIB1.'MY' = VV_HXN1;
  442. TINIB1.'MZ' = 0.0;
  443. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  444. ((2.0)*(H_VAL2));
  445. *
  446. TINIA1 = 'COPI' TINI1;
  447. TINIB1 = 'COPI' TINI1;
  448. TINIA1.'NN' = VV_HYP2;
  449. TINIA1.'VY' = 0.0;
  450. TINIA1.'VZ' = 0.0;
  451. TINIA1.'MT' = 0.0;
  452. TINIA1.'MY' = VV_HYP1;
  453. TINIA1.'MZ' = 0.0;
  454. TINIB1.'NN' = VV_HYN2;
  455. TINIB1.'VY' = 0.0;
  456. TINIB1.'VZ' = 0.0;
  457. TINIB1.'MT' = 0.0;
  458. TINIB1.'MY' = VV_HYN1;
  459. TINIB1.'MZ' = 0.0;
  460. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  461. ((2.0)*(H_VAL2));
  462. *
  463. 'FINSI';
  464. 'FINSI';
  465. *
  466. * costruction n_limit
  467. DELTG1 = 'MANU' 'CHPO' MAI1
  468. 'UX' ((-1.0)*(VAL_X1))
  469. 'UZ' ((-1.0)*(VAL_Y1));
  470. DELTG1 = DELTG1/((XTX DELTG1)**(0.5));
  471. * check on the n_limit
  472. 'SI' ((('XTX' DELTG1)**(0.5)) < 1.E-7);
  473. * if |n_limit|=0 rotate the chosen direction by 10 degrees
  474. MATR1 = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  475. MATR1 = MATR1 'ET'
  476. ('MANU' 'RIGIDITE' MAI1 ('MOTS' 'UX' 'UZ')
  477. ('PROG' (COS(10.0)) ((-1.0)*(SIN(10.0)))
  478. (SIN(10.0)) (COS(10.0))));
  479. AAA1 = MATR1*ALP_K;
  480. DELTG1 = MANU CHPO MAI1
  481. 'UX' (EXTR AAA1 MAI1 'FX')
  482. 'UZ' (EXTR AAA1 MAI1 'FZ');
  483. 'FINSI';
  484. * convergence test
  485. VET_TEST = (TAB_ITE. I_M1 . 'ALPA')
  486. - (TAB_ITE. (I_M1 - 1) . 'ALPA');
  487. *
  488. * SI (I_K1 > 3);
  489. * ERRE 5;
  490. * FINSI;
  491. 'SI' ((('XTX' VET_TEST)**(0.5)) '<' TOL_2);
  492. * deduction of the final value of Lambda
  493. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  494. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  495. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  496. 'SINON';
  497. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  498. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  499. 'FINSI';
  500. 'FINSI';
  501. 'FINSI';
  502. 'QUIT' IND2;
  503. 'SINON';
  504. 'SI' (I_M1 'EGA' 199);
  505. ID1_CON = 1;
  506. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  507. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  508. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  509. 'SINON';
  510. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  511. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  512. 'FINSI';
  513. 'FINSI';
  514. 'FINSI';
  515. 'SINON';
  516. * otherwise updating the n_limit
  517. ALP_K = DELTG1;
  518. 'FINSI';
  519. 'FINSI';
  520. * Display
  521. * SI (I_K1 EGA 3);
  522. * MESS '-----------------------------';
  523. * LIST F_VAL1;
  524. * LIST I_I1;
  525. * LIST LAMBJ;
  526. * MESS '*';
  527. * LIST NLIMT1;
  528. * LIST NLIMC1;
  529. * LIST TINIC1.'VY';
  530. * LIST TINIC1.'VZ';
  531. * LIST TINIC1.'NN';
  532. * MESS '*';
  533. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UX' MAI1);
  534. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UY' MAI1);
  535. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UZ' MAI1);
  536. * LIST ('EXTR' DELTG1 'UX' MAI1);
  537. * LIST ('EXTR' DELTG1 'UY' MAI1);
  538. * LIST ('EXTR' DELTG1 'UZ' MAI1);
  539. * MESS '-----------------------------';
  540. * SI (I_M1 EGA 10);
  541. * ERRE 5;
  542. * FINSI;
  543. * FINSI;
  544. I_M1 = I_M1 + 1;
  545. 'FIN' IND2;
  546. I_K1 = I_K1 + 1;
  547. 'FIN' IND3;
  548. *
  549. * screen message
  550. 'SI' (ID1_CON 'EGA' 0);
  551. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  552. LAM_FIN1;
  553. 'MESS' TIT1;
  554. 'FINSI';
  555. 'SI' (ID1_CON 'EGA' 1);
  556. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  557. LAM_FIN1 '.....Attention non convergence';
  558. 'FINSI';
  559. 'FINSI';
  560. 'SINON';
  561. *
  562. *-------------------------------------------------------------
  563. * Methode Rectangle
  564. *
  565. * Test about the static state stress
  566. T_ST1 = G_ULTIFR TINI1;
  567. *
  568. ID1_CON = 0;
  569. 'SI' (T_ST1 '&lt;EG' 0.0);
  570. LAM_FIN1 = 0.0;
  571. TIT1 = 'CHAINE' ' Element ' I_IE1 ' Lambda='
  572. LAM_FIN1 '.....Sig0 externe';
  573. 'MESS' TIT1;
  574. 'SINON';
  575. LAMB0 = 1.0;
  576. H_VAL3 = LAMB0/1000;
  577. TOL_2 = FCBET1/1000;
  578. LL_LAMX = PROG -1.0 1.0 1.0 -1.0;
  579. LL_LAMZ = PROG -1.0 -1.0 1.0 1.0 ;
  580. *
  581. * reference list for the 4 point for rectangle solid
  582. LL_I = PROG 1. 2. 3. 4.;
  583. *
  584. * creation of the resuming table
  585. TAB_ITE = 'TABLE';
  586. TAB_ITE. 0 = 'TABLE';
  587. TAB_ITE. 0 .'LAMBDA' = LAMB0 ;
  588. *
  589. I_MM1 = 0;
  590. ID1_CON = 0;
  591. *
  592. * loop for in order to find f=0
  593. 'REPE' IND4 (200);
  594. *
  595. * stress state for the 8 points
  596. X1_0 = (((MYMY1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMY0;
  597. Z1_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  598. X2_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  599. Z2_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  600. X3_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  601. Z3_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  602. X4_0 = (((MYMY1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMY0;
  603. Z4_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  604. *
  605. * put the N11, N22 et N12 stress state in the lists
  606. LL_X0 = 'PROG' (X1_0) (X2_0) (X3_0) (X4_0);
  607. LL_Z0 = 'PROG' (Z1_0) (Z2_0) (Z3_0) (Z4_0);
  608. LL_F0 = 'PROG';
  609. *
  610. * deduction of f for each point
  611. III1 = 1;
  612. 'REPE' IND2 (4);
  613. TINIC1 = 'COPI' TINI1;
  614. TINIC1.'NN' = ('EXTR' LL_Z0 III1);
  615. TINIC1.'VY' = 0.0;
  616. TINIC1.'VZ' = 0.0;
  617. TINIC1.'MT' = 0.0;
  618. TINIC1.'MY' = ('EXTR' LL_X0 III1);
  619. TINIC1.'MZ' = 0.0;
  620. LL_F0 = LL_F0 ET
  621. ('PROG' (G_ULTIFR TINIC1));
  622. III1 = III1 + 1;
  623. 'FIN' IND2;
  624. * saving
  625. TAB_ITE. I_MM1 .'L_X' = LL_X0;
  626. TAB_ITE. I_MM1 .'L_Z' = LL_Z0;
  627. TAB_ITE. I_MM1 .'L_F' = LL_F0;
  628. * finding the minimum value of f and the corresponding point
  629. EV1 = 'EVOL' 'MANU' LL_I (LL_F0);
  630. II1 II2 VAL_F = 'MINI' EV1;
  631. VAL_F = EXTR LL_F0 II1;
  632. * computation of D (gradiant) in case of Point_1=Argmin(fmin)
  633. X1_DP =
  634. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0 + H_VAL3))))
  635. + MOMY0;
  636. Z1_DP =
  637. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 + H_VAL3))))
  638. + EFFX0;
  639. X1_0 =
  640. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0))))
  641. + MOMY0;
  642. Z1_0 =
  643. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0))))
  644. + EFFX0;
  645. X1_DN =
  646. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0 - H_VAL3))))
  647. + MOMY0;
  648. Z1_DN =
  649. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 - H_VAL3))))
  650. + EFFX0;
  651. TINIA1 = 'COPI' TINI1;
  652. TINIB1 = 'COPI' TINI1;
  653. TINIA1.'NN' = Z1_DP;
  654. TINIA1.'VY' = 0.0;
  655. TINIA1.'VZ' = 0.0;
  656. TINIA1.'MT' = 0.0;
  657. TINIA1.'MY' = X1_DP;
  658. TINIA1.'MZ' = 0.0;
  659. TINIB1.'NN' = Z1_DN;
  660. TINIB1.'VY' = 0.0;
  661. TINIB1.'VZ' = 0.0;
  662. TINIB1.'MT' = 0.0;
  663. TINIB1.'MY' = X1_DN;
  664. TINIB1.'MZ' = 0.0;
  665. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  666. ((2.0)*(H_VAL3));
  667. 'OUBL' X1_DP;
  668. 'OUBL' Y1_DP;
  669. 'OUBL' Z1_DP;
  670. 'OUBL' X1_DN;
  671. 'OUBL' Y1_DN;
  672. 'OUBL' Z1_DN;
  673. * 'OUBL' X1_0;
  674. * 'OUBL' Y1_0;
  675. * 'OUBL' Z1_0;
  676. *
  677. * Display
  678. * MESS '-----------------------';
  679. * LIST II1;
  680. * LIST LAMB0;
  681. * LIST VAL_F;
  682. * LIST D_VAL1;
  683. * MESS '*';
  684. * LIST NLIMT1;
  685. * LIST NLIMC1;
  686. * MESS '*';
  687. * LIST X1_0;
  688. * LIST Z1_0;
  689. * SI (I_MM1 EGA 30);
  690. * ERRE 5;
  691. * FINSI;
  692. *
  693. * test convergence
  694. 'SI' (('ABS'(VAL_F)) '<' TOL_1);
  695. * convergence!!!
  696. LAM_FIN1 = LAMB0;
  697. * MESS '-----------------------';
  698. * LIST II1;
  699. * LIST LAMB0;
  700. * LIST VAL_F;
  701. * LIST D_VAL1;
  702. * MESS '*';
  703. * LIST NLIMT1;
  704. * LIST NLIMC1;
  705. * MESS '*';
  706. * LIST X1_0;
  707. * LIST Z1_0;
  708. 'QUIT' IND4;
  709. 'SINON';
  710. 'SI' (I_MM1 'EGA' 199);
  711. LAM_FIN1 = LAMB0;
  712. ID1_CON = 1;
  713. 'QUIT' IND4;
  714. 'FINSI';
  715. 'SI' (('ABS'(D_VAL1)) < 1.E-8);
  716. * 'SI' ((Z1_0) '>EG' (NLIMT1));
  717. * LAMB1 = LAMB0;
  718. * LAMB0 = ((NLIMT1) - EFFX0 - ((NLIMT1)*(TOL_1)))/
  719. * (((NNNN1)**(0.5))*('EXTR' LL_LAMZ II1));
  720. * 'SINON';
  721. * 'SI' ((Z1_0) '&lt;EG' (NLIMC1));
  722. * LAMB1 = LAMB0;
  723. * LAMB0 = ((NLIMC1) - EFFX0 + ((NLIMT1)*(TOL_1)))/
  724. * (((NNNN1)**(0.5))*('EXTR' LL_LAMZ II1));
  725. * 'FINSI';
  726. * 'FINSI';
  727. LAMB1 = LAMB0;
  728. LAMB0 = LAMB1*0.9;
  729. 'SINON';
  730. * otherwise
  731. LAMB1 = LAMB0;
  732. LAMB0 = LAMB0 - ((VAL_F)/(D_VAL1));
  733. 'SI' ((ABS((LAMB1 - LAMB0)/(LAMB0))) '<' (1.E-8));
  734. LAMB0 = LAMB1*0.90;
  735. 'FINSI';
  736. 'SI' ((LAMB0) '<' (0.0));
  737. LAMB0 = ABS(LAMB0);
  738. 'FINSI';
  739. 'FINSI';
  740. 'FINSI';
  741. * MESS '-----------------------';
  742. * LIST II1;
  743. * LIST LAMB0;
  744. * LIST VAL_F;
  745. * LIST D_VAL1;
  746. * MESS '*';
  747. * LIST NLIMT1;
  748. * LIST NLIMC1;
  749. * MESS '*';
  750. * LIST X1_0;
  751. * LIST Z1_0;
  752. * SI (I_MM1 EGA 5);
  753. * QUIT MRCFRAME;
  754. * FINSI;
  755. 'OUBL' VAL_F;
  756. 'OUBL' D_VAL1;
  757. *
  758. TAB_ITE. (I_MM1 + 1) = 'TABLE';
  759. TAB_ITE. (I_MM1 + 1) .'LAMBDA' = ABS(LAMB0) ;
  760. *
  761. I_MM1 = I_MM1 + 1;
  762. 'FIN' IND4;
  763.  
  764. 'FINSI';
  765. *
  766. * screen message
  767. 'SI' (ID1_CON 'EGA' 0);
  768. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  769. LAM_FIN1;
  770. 'MESS' TIT1;
  771. 'FINSI';
  772. 'SI' (ID1_CON 'EGA' 1);
  773. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  774. LAM_FIN1 '.....Attention non convergence';
  775. 'MESS' TIT1;
  776. 'FINSI';
  777. *
  778. 'FINSI';
  779. * MESS 'SONO QUI';
  780. FINPROC LAM_FIN1;
  781.  
  782.  
  783.  

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