Télécharger mrcfram2.procedur

Retour à la liste

Numérotation des lignes :

  1. * MRCFRAM2 PROCEDUR AF221230 18/04/20 21:15:02 9814
  2. DEBPROC MRCFRAM2 TYP_CAL2*'MOT '
  3. TAB_IN2*'TABLE' TOL_2*'FLOTTANT';
  4. *
  5. * --------------------------------------------------------
  6. * Procedure FRCFRAM2
  7. * Procedure appele par MRCFRAME pour le calcul de la marge sismique
  8. * d'elements frame type POUTEAU 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 = MRCFRAM2 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. * ellipsiodal
  26. * 'RECTANGLE' calcul des marges avec l'enveloppe
  27. * prismatique
  28. *
  29. * TAB1 type TABLE pour definir les donnes 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 'P_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' 'UY' 'UZ')
  206. ('PROG' MYMY1 MYMZ1 NNMY1
  207. MYMZ1 MZMZ1 NNMZ1
  208. NNMY1 NNMZ1 NNNN1));
  209. *
  210. * Static state stress
  211. EF_ST0 = 'MANU' 'CHPO' MAI1 3 'FX' MOMY0 'FY' MOMZ0 'FZ' EFFX0;
  212. EF_ST0 = 'CHAN' 'ATTRIBUT' EF_ST0 'NATURE' 'DISCRET';
  213. *
  214. *
  215. * Initial Vecteur
  216. ALP_0 = 'MANU' 'CHPO' MAI1 3 'UX' 2.0 'UY' 2.0 'UZ' 2.0;
  217. XALP_0 = (MATX1*ALP_0)/(('XTMX' MATX1 ALP_0)**(0.5));
  218. XALP_0 = ('CHAN' ATTRIBUT XALP_0 NATURE DISCRET) + EF_ST0;
  219. *
  220. * direction used for the ellispoide methode
  221. TB_DIR = 'TABLE';
  222. TB_DIR. 1 = 'MANU' 'CHPO' MAI1 3 'UX' 1.0 'UY' 0.0 'UZ' 0.0;
  223. TB_DIR. 2 = 'MANU' 'CHPO' MAI1 3 'UX' 0.0 'UY' 1.0 'UZ' 0.0;
  224. TB_DIR. 3 = 'MANU' 'CHPO' MAI1 3 'UX' 0.0 'UY' 0.0 'UZ' 1.0;
  225. TB_DIR. 4 = 'MANU' 'CHPO' MAI1 3 'UX' -1.0 'UY' 0.0 'UZ' 0.0;
  226. TB_DIR. 5 = 'MANU' 'CHPO' MAI1 3 'UX' 0.0 'UY' -1.0 'UZ' 0.0;
  227. TB_DIR. 6 = 'MANU' 'CHPO' MAI1 3 'UX' 0.0 'UY' 0.0 'UZ' -1.0;
  228. *
  229. SB0 = ('XTX' (XALP_0 - EF_ST0))**(0.5);
  230. RB0 = SB0;
  231. LAMB0 = RB0/SB0;
  232. *
  233. * incremental step
  234. H_VAL1 = (SB0)/(100000.0);
  235. H_VAL2 = (SB0)/(100000.0);
  236. *
  237. * variable for the convergence test
  238. ID1_CON = 0;
  239. *
  240. * loop for each direction
  241. I_K1 = 1;
  242. 'REPE' IND3 (6);
  243. *
  244. TAB_ITE = 'TABLE';
  245. TAB_ITE. 0 = 'TABLE';
  246. TAB_ITE. 0 . 'ALPA' = ALP_0;
  247. TAB_ITE. 0 . 'LAMBDA' = LAMB0;
  248. TAB_ITE. 0 . 'RB' = RB0;
  249. *
  250. ALP_K = (TB_DIR. I_K1);
  251. I_M1 = 1;
  252. * first loop in order to have n_elllips=n_limite
  253. 'REPE' IND2 (20);
  254. * sauving Lambda for j iteraction
  255. TAB_ITE. I_M1 = 'TABLE';
  256. TAB_ITE. I_M1 . 'ALPA' = ALP_K;
  257. * determination of the stress state for the chosen direction
  258. XALP_J = (MATX1*ALP_K)/(('XTMX' MATX1 ALP_K)**(0.5));
  259. XALP_J = ('CHAN' ATTRIBUT XALP_J NATURE DISCRET) + EF_ST0;
  260. * nomalisez vector of hte rayon of the ellipsoide for the
  261. * chosen direction
  262. SBJ = ('XTX' (XALP_J - EF_ST0))**(0.5);
  263. BJ = (XALP_J - EF_ST0)/(SBJ);
  264. * rayon of the ellipsoide for the chosen direction
  265. RBVAL1 = (TAB_ITE.(I_M1 - 1). 'RB');
  266. * second loop in order to have f=0
  267. I_I1 = 1;
  268. 'REPE' IND1 (200);
  269. * strees state x0, x0+h, x0-h
  270. VV1 = (RBVAL1 + H_VAL1)*(BJ);
  271. VV2 = (RBVAL1 - H_VAL1)*(BJ);
  272. VV3 = (RBVAL1)*(BJ);
  273. VV1 = ('CHAN' 'ATTRIBUT' VV1 'NATURE' 'DISCRET') + EF_ST0;
  274. VV2 = ('CHAN' 'ATTRIBUT' VV2 'NATURE' 'DISCRET') + EF_ST0;
  275. VV3 = ('CHAN' 'ATTRIBUT' VV3 'NATURE' 'DISCRET') + EF_ST0;
  276. TINIA1 = 'COPI' TINI1;
  277. TINIB1 = 'COPI' TINI1;
  278. TINIC1 = 'COPI' TINI1;
  279. TINIA1.'NN' = EXTR VV1 'FZ' MAI1;
  280. TINIA1.'VY' = 0.0;
  281. TINIA1.'VZ' = 0.0;
  282. TINIA1.'MT' = 0.0;
  283. TINIA1.'MY' = EXTR VV1 'FX' MAI1;
  284. TINIA1.'MZ' = EXTR VV1 'FY' MAI1;
  285. TINIB1.'NN' = EXTR VV2 'FZ' MAI1;
  286. TINIB1.'VY' = 0.0;
  287. TINIB1.'VZ' = 0.0;
  288. TINIB1.'MT' = 0.0;
  289. TINIB1.'MY' = EXTR VV2 'FX' MAI1;
  290. TINIB1.'MZ' = EXTR VV2 'FY' MAI1;
  291. TINIC1.'NN' = EXTR VV3 'FZ' MAI1;
  292. TINIC1.'VY' = 0.0;
  293. TINIC1.'VZ' = 0.0;
  294. TINIC1.'MT' = 0.0;
  295. TINIC1.'MY' = EXTR VV3 'FX' MAI1;
  296. TINIC1.'MZ' = EXTR VV3 'FY' MAI1;
  297. 'OUBL' VV1;
  298. 'OUBL' VV2;
  299. 'OUBL' VV3;
  300. F_VAL1 = G_ULTIFR TINIC1;
  301. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  302. ((2.0)*(H_VAL1));
  303. * MESS '-----';
  304. * LIST F_VAL1;
  305. * LIST D_VAL1;
  306. * SI (I_I1 EGA 6);
  307. * 'QUIT' IND1;
  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 3 'FX' H_VAL2 'FY' 0.0 'FZ' 0.0;
  337. DE_HY = 'MANU' 'CHPO' MAI1 3 'FX' 0.0 'FY' H_VAL2 'FZ' 0.0;
  338. DE_HZ = 'MANU' 'CHPO' MAI1 3 'FX' 0.0 'FY' 0.0 'FZ' H_VAL2;
  339. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  340. VV_HXP = XALP_L + DE_HX;
  341. VV_HYP = XALP_L + DE_HY;
  342. VV_HZP = XALP_L + DE_HZ;
  343. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  344. VV_HXN = XALP_L - DE_HX;
  345. VV_HYN = XALP_L - DE_HY;
  346. VV_HZN = XALP_L - DE_HZ;
  347. * x0*lam
  348. VV_0 = XALP_L;
  349. *
  350. VV_HXP1 = 'EXTR' VV_HXP 'FX' MAI1;
  351. VV_HXP2 = 'EXTR' VV_HXP 'FY' MAI1;
  352. VV_HXP3 = 'EXTR' VV_HXP 'FZ' MAI1;
  353. VV_HYP1 = 'EXTR' VV_HYP 'FX' MAI1;
  354. VV_HYP2 = 'EXTR' VV_HYP 'FY' MAI1;
  355. VV_HYP3 = 'EXTR' VV_HYP 'FZ' MAI1;
  356. VV_HZP1 = 'EXTR' VV_HZP 'FX' MAI1;
  357. VV_HZP2 = 'EXTR' VV_HZP 'FY' MAI1;
  358. VV_HZP3 = 'EXTR' VV_HZP 'FZ' MAI1;
  359. VV_HXN1 = 'EXTR' VV_HXN 'FX' MAI1;
  360. VV_HXN2 = 'EXTR' VV_HXN 'FY' MAI1;
  361. VV_HXN3 = 'EXTR' VV_HXN 'FZ' MAI1;
  362. VV_HYN1 = 'EXTR' VV_HYN 'FX' MAI1;
  363. VV_HYN2 = 'EXTR' VV_HYN 'FY' MAI1;
  364. VV_HYN3 = 'EXTR' VV_HYN 'FZ' MAI1;
  365. VV_HZN1 = 'EXTR' VV_HZN 'FX' MAI1;
  366. VV_HZN2 = 'EXTR' VV_HZN 'FY' MAI1;
  367. VV_HZN3 = 'EXTR' VV_HZN 'FZ' MAI1;
  368. *
  369. VV_01 = 'EXTR' VV_0 'FX' MAI1;
  370. VV_02 = 'EXTR' VV_0 'FY' MAI1;
  371. VV_03 = 'EXTR' VV_0 'FZ' MAI1;
  372. *
  373.  
  374. TINIA1 = 'COPI' TINI1;
  375. TINIB1 = 'COPI' TINI1;
  376. TINIA1.'NN' = VV_HXP3;
  377. TINIA1.'VY' = 0.0;
  378. TINIA1.'VZ' = 0.0;
  379. TINIA1.'MT' = 0.0;
  380. TINIA1.'MY' = VV_HXP1;
  381. TINIA1.'MZ' = VV_HXP2;
  382. TINIB1.'NN' = VV_HXN3;
  383. TINIB1.'VY' = 0.0;
  384. TINIB1.'VZ' = 0.0;
  385. TINIB1.'MT' = 0.0;
  386. TINIB1.'MY' = VV_HXN1;
  387. TINIB1.'MZ' = VV_HXN2;
  388. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  389. ((2.0)*(H_VAL2));
  390. *
  391. TINIA1 = 'COPI' TINI1;
  392. TINIB1 = 'COPI' TINI1;
  393. TINIA1.'NN' = VV_HYP3;
  394. TINIA1.'VY' = 0.0;
  395. TINIA1.'VZ' = 0.0;
  396. TINIA1.'MT' = 0.0;
  397. TINIA1.'MY' = VV_HYP1;
  398. TINIA1.'MZ' = VV_HYP2;
  399. TINIB1.'NN' = VV_HYN3;
  400. TINIB1.'VY' = 0.0;
  401. TINIB1.'VZ' = 0.0;
  402. TINIB1.'MT' = 0.0;
  403. TINIB1.'MY' = VV_HYN1;
  404. TINIB1.'MZ' = VV_HYN2;
  405. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  406. ((2.0)*(H_VAL2));
  407. *
  408. TINIA1 = 'COPI' TINI1;
  409. TINIB1 = 'COPI' TINI1;
  410. TINIA1.'NN' = VV_HZP3;
  411. TINIA1.'VY' = 0.0;
  412. TINIA1.'VZ' = 0.0;
  413. TINIA1.'MT' = 0.0;
  414. TINIA1.'MY' = VV_HZP1;
  415. TINIA1.'MZ' = VV_HZP2;
  416. TINIB1.'NN' = VV_HZN3;
  417. TINIB1.'VY' = 0.0;
  418. TINIB1.'VZ' = 0.0;
  419. TINIB1.'MT' = 0.0;
  420. TINIB1.'MY' = VV_HZN1;
  421. TINIB1.'MZ' = VV_HZN2;
  422. VAL_Z1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  423. ((2.0)*(H_VAL2));
  424. *
  425. * costruction n_limit
  426. DELTG1 = 'MANU' 'CHPO' MAI1 'UX' ((-1.0)*(VAL_X1))
  427. 'UY' ((-1.0)*(VAL_Y1))
  428. 'UZ' ((-1.0)*(VAL_Z1));
  429. DELTG1 = DELTG1/((XTX DELTG1)**(0.5));
  430. * check on the n_limit
  431. 'SI' ((('XTX' DELTG1)**(0.5)) < 1.E-7);
  432. * if |n_limit|=0 rotate the chosen direction by 10 degrees
  433. MATR1 = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  434. MATR1 = MATR1 'ET'
  435. ('MANU' 'RIGIDITE' MAI1 ('MOTS' 'UX' 'UY' 'UZ')
  436. ('PROG' (COS(10.0)) ((-1.0)*(SIN(10.0))) 0.0
  437. (SIN(10.0)) (COS(10.0)) 0.0
  438. 0.0 0.0 1.0));
  439. AAA1 = MATR1*ALP_K;
  440. DELTG1 = MANU CHPO MAI1 'UX' (EXTR AAA1 MAI1 'FX')
  441. 'UY' (EXTR AAA1 MAI1 'FY')
  442. 'UZ' (EXTR AAA1 MAI1 'FZ');
  443. 'FINSI';
  444. * convergence test
  445. VET_TEST = (TAB_ITE. I_M1 . 'ALPA')
  446. - (TAB_ITE. (I_M1 - 1) . 'ALPA');
  447. 'SI' ((('XTX' VET_TEST)**(0.5)) '<' TOL_2);
  448. * deduction of the final value of Lambda
  449. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  450. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  451. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  452. 'SINON';
  453. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  454. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  455. 'FINSI';
  456. 'FINSI';
  457. 'FINSI';
  458. * MESS '-----------------------------';
  459. * LIST F_VAL1;
  460. * LIST I_I1;
  461. * LIST LAMBJ;
  462. * LIST I_M1;
  463. * MESS '*';
  464. * LIST NLIMT1;
  465. * LIST NLIMC1;
  466. * LIST TINIC1.'MY';
  467. * LIST TINIC1.'MZ';
  468. * LIST TINIC1.'NN';
  469. * MESS '*';
  470. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UX' MAI1);
  471. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UY' MAI1);
  472. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UZ' MAI1);
  473. * LIST ('EXTR' DELTG1 'UX' MAI1);
  474. * LIST ('EXTR' DELTG1 'UY' MAI1);
  475. * LIST ('EXTR' DELTG1 'UZ' MAI1);
  476. * MESS '-----------------------------';
  477. 'QUIT' IND2;
  478. 'SINON';
  479. 'SI' (I_M1 'EGA' 50);
  480. ID1_CON = 1;
  481. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  482. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  483. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  484. 'SINON';
  485. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  486. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  487. 'FINSI';
  488. 'FINSI';
  489. 'FINSI';
  490. 'SINON';
  491. * otherwise updating the n_limit
  492. ALP_K = DELTG1;
  493. 'FINSI';
  494. 'FINSI';
  495. * Display
  496. * MESS '-----------------------------';
  497. * LIST F_VAL1;
  498. * LIST I_I1;
  499. * LIST LAMBJ;
  500. * LIST I_M1;
  501. * MESS '*';
  502. * LIST NLIMT1;
  503. * LIST NLIMC1;
  504. * LIST TINIC1.'MY';
  505. * LIST TINIC1.'MZ';
  506. * LIST TINIC1.'NN';
  507. * MESS '*';
  508. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UX' MAI1);
  509. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UY' MAI1);
  510. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UZ' MAI1);
  511. * LIST ('EXTR' DELTG1 'UX' MAI1);
  512. * LIST ('EXTR' DELTG1 'UY' MAI1);
  513. * LIST ('EXTR' DELTG1 'UZ' MAI1);
  514. * MESS '/////';
  515. * LIST (('XTX' VET_TEST)**(0.5));
  516. * MESS '-----------------------------';
  517. * SI (I_K1 > 1);
  518. * ERRE 5;
  519. * FINSI;
  520. SI (I_M1 EGA 30);
  521. ERRE 5;
  522. FINSI;
  523. I_M1 = I_M1 + 1;
  524. 'FIN' IND2;
  525. I_K1 = I_K1 + 1;
  526. 'FIN' IND3;
  527. *
  528. * screen message
  529. 'SI' (ID1_CON 'EGA' 0);
  530. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  531. LAM_FIN1;
  532. 'MESS' TIT1;
  533. 'FINSI';
  534. 'SI' (ID1_CON 'EGA' 1);
  535. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  536. LAM_FIN1 '.....Attention non convergence';
  537. 'MESS' TIT1;
  538. 'FINSI';
  539. 'FINSI';
  540. 'SINON';
  541. *
  542. *-------------------------------------------------------------
  543. * Methode Rectangle
  544. *
  545. *
  546. * Test about the static state stress
  547. T_ST1 = G_ULTIFR TINI1;
  548. *
  549. ID1_CON = 0;
  550. 'SI' (T_ST1 '&lt;EG' 0.0);
  551. LAM_FIN1 = 0.0;
  552. TIT1 = 'CHAINE' ' Element ' I_IE1 ' Lambda='
  553. LAM_FIN1 '.....Sig0 externe';
  554. 'MESS' TIT1;
  555. 'SINON';
  556. LAMB0 = 1.0;
  557. H_VAL3 = LAMB0/100;
  558. TOL_2 = FCBET1/1000;
  559. LL_LAMX = PROG -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0;
  560. LL_LAMY = PROG -1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0;
  561. LL_LAMZ = PROG -1.0 -1.0 -1.0 -1.0 1.0 1.0 1.0 1.0;
  562. *
  563. * reference list for the 8 point for rectangle solid
  564. LL_I = PROG 1. 2. 3. 4. 5. 6. 7. 8.;
  565. *
  566. * creation of the resuming table
  567. TAB_ITE = 'TABLE';
  568. TAB_ITE. 0 = 'TABLE';
  569. TAB_ITE. 0 .'LAMBDA' = LAMB0 ;
  570. *
  571. I_MM1 = 0;
  572. ID1_CON = 0;
  573. *
  574. * loop for in order to find f=0
  575. 'REPE' IND4 (200);
  576. *
  577. * stress state for the 8 points
  578. X1_0 = (((MYMY1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMY0;
  579. Y1_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  580. Z1_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  581. X2_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  582. Y2_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  583. Z2_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  584. X3_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  585. Y3_0 = (((MZMZ1)**(0.5))*(((1.0)*(LAMB0)))) + MOMZ0;
  586. Z3_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  587. X4_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  588. Y4_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  589. Z4_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  590. X5_0 = (((MYMY1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMY0;
  591. Y5_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  592. Z5_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  593. X6_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  594. Y6_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  595. Z6_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  596. X7_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  597. Y7_0 = (((MZMZ1)**(0.5))*(((1.0)*(LAMB0)))) + MOMZ0;
  598. Z7_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  599. X8_0 = (((MYMY1)**(0.5))*(((1.0)*(LAMB0)))) + MOMY0;
  600. Y8_0 = (((MZMZ1)**(0.5))*(((-1.0)*(LAMB0)))) + MOMZ0;
  601. Z8_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  602. *
  603. * put the N11, N22 et N12 stress state in the lists
  604. LL_X0 = 'PROG' (X1_0) (X2_0) (X3_0) (X4_0)
  605. (X5_0) (X6_0) (X7_0) (X8_0);
  606. LL_Y0 = 'PROG' (Y1_0) (Y2_0) (Y3_0) (Y4_0)
  607. (Y5_0) (Y6_0) (Y7_0) (Y8_0);
  608. LL_Z0 = 'PROG' (Z1_0) (Z2_0) (Z3_0) (Z4_0)
  609. (Z5_0) (Z6_0) (Z7_0) (Z8_0);
  610. LL_F0 = 'PROG';
  611. *
  612. * deduction of f for each point
  613. III1 = 1;
  614. 'REPE' IND2 (8);
  615. TINIC1 = 'COPI' TINI1;
  616. TINIC1.'NN' = ('EXTR' LL_Z0 III1);
  617. TINIC1.'VY' = 0.0;
  618. TINIC1.'VZ' = 0.0;
  619. TINIC1.'MT' = 0.0;
  620. TINIC1.'MY' = ('EXTR' LL_X0 III1);
  621. TINIC1.'MZ' = ('EXTR' LL_Y0 III1);
  622. LL_F0 = LL_F0 ET
  623. ('PROG' (G_ULTIFR TINIC1));
  624. III1 = III1 + 1;
  625. 'FIN' IND2;
  626. * saving
  627. TAB_ITE. I_MM1 .'L_X' = LL_X0;
  628. TAB_ITE. I_MM1 .'L_Y' = LL_Y0;
  629. TAB_ITE. I_MM1 .'L_Z' = LL_Z0;
  630. TAB_ITE. I_MM1 .'L_F' = LL_F0;
  631. * finding the minimum value of f and the corresponding point
  632. EV1 = 'EVOL' 'MANU' LL_I (LL_F0);
  633. II1 II2 VAL_F = 'MINI' EV1;
  634. * computation of D (gradiant) in case of Point_1=Argmin(fmin)
  635. X1_DP =
  636. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0 + H_VAL3))))
  637. + MOMY0;
  638. Y1_DP =
  639. (((MZMZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0 + H_VAL3))))
  640. + MOMZ0;
  641. Z1_DP =
  642. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 + H_VAL3))))
  643. + EFFX0;
  644. X1_0 =
  645. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0))))
  646. + MOMY0;
  647. Y1_0 =
  648. (((MZMZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0))))
  649. + MOMZ0;
  650. Z1_0 =
  651. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0))))
  652. + EFFX0;
  653. X1_DN =
  654. (((MYMY1)**(0.5))*((('EXTR' LL_LAMX II1)*(LAMB0 - H_VAL3))))
  655. + MOMY0;
  656. Y1_DN =
  657. (((MZMZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0 - H_VAL3))))
  658. + MOMZ0;
  659. Z1_DN =
  660. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 - H_VAL3))))
  661. + EFFX0;
  662. TINIA1 = 'COPI' TINI1;
  663. TINIB1 = 'COPI' TINI1;
  664. TINIA1.'NN' = Z1_DP;
  665. TINIA1.'VY' = 0.0;
  666. TINIA1.'VZ' = 0.0;
  667. TINIA1.'MT' = 0.0;
  668. TINIA1.'MY' = X1_DP;
  669. TINIA1.'MZ' = Y1_DP;
  670. TINIB1.'NN' = Z1_DN;
  671. TINIB1.'VY' = 0.0;
  672. TINIB1.'VZ' = 0.0;
  673. TINIB1.'MT' = 0.0;
  674. TINIB1.'MY' = X1_DN;
  675. TINIB1.'MZ' = Y1_DN;
  676. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  677. ((2.0)*(H_VAL3));
  678.  
  679. 'OUBL' X1_DP;
  680. 'OUBL' Y1_DP;
  681. 'OUBL' Z1_DP;
  682. 'OUBL' X1_DN;
  683. 'OUBL' Y1_DN;
  684. 'OUBL' Z1_DN;
  685. * 'OUBL' X1_0;
  686. * 'OUBL' Y1_0;
  687. * 'OUBL' Z1_0;
  688. *
  689. * Display
  690. * MESS '-----------------------';
  691. * LIST II1;
  692. * LIST LAMB0;
  693. * LIST VAL_F;
  694. * LIST D_VAL1;
  695. * LIST X1_0;
  696. * LIST Y1_0;
  697. * LIST Z1_0;
  698. * SI (I_MM1 EGA 5);
  699. * ERRE 5;
  700. * FINSI;
  701. *
  702. * test convergence
  703. 'SI' (('ABS'(VAL_F)) '<' TOL_1);
  704. * convergence!!!
  705. LAM_FIN1 = LAMB0;
  706. 'QUIT' IND4;
  707. 'SINON';
  708. 'SI' (I_MM1 'EGA' 199);
  709. LAM_FIN1 = LAMB0;
  710. ID1_CON = 1;
  711. 'QUIT' IND4;
  712. 'FINSI';
  713. 'SI' (('ABS'(D_VAL1)) < 1.E-12);
  714. LAMB1 = LAMB0;
  715. LAMB0 = LAMB0*1.10;
  716. 'SINON';
  717. * otherwise
  718. LAMB1 = LAMB0;
  719. LAMB0 = LAMB0 - ((VAL_F)/(D_VAL1));
  720. 'SI' (((ABS(LAMB1 - LAMB0))/(LAMB0)) '<' (1.E-8));
  721. LAMB0 = ((LAMB1)*(0.90));
  722. 'FINSI';
  723. 'FINSI';
  724. 'FINSI';
  725. 'OUBL' VAL_F;
  726. 'OUBL' D_VAL1;
  727. *
  728. TAB_ITE. (I_MM1 + 1) = 'TABLE';
  729. TAB_ITE. (I_MM1 + 1) .'LAMBDA' = ABS(LAMB0) ;
  730. *
  731. I_MM1 = I_MM1 + 1;
  732. 'FIN' IND4;
  733.  
  734. 'FINSI';
  735. *
  736. * screen message
  737. 'SI' (ID1_CON 'EGA' 0);
  738. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  739. LAM_FIN1;
  740. 'MESS' TIT1;
  741. 'FINSI';
  742. 'SI' (ID1_CON 'EGA' 1);
  743. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  744. LAM_FIN1 '.....Attention non convergence';
  745. 'FINSI';
  746. * LIST TAB_ITE;
  747. * LIST I_MM1;
  748. * LIST TAB_ITE.I_MM1;
  749. *ERRE 5;
  750. *
  751. 'FINSI';
  752. FINPROC LAM_FIN1;
  753.  
  754.  
  755.  

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