Télécharger mrcfram3.procedur

Retour à la liste

Numérotation des lignes :

  1. * MRCFRAM3 PROCEDUR AF221230 18/04/20 21:15:03 9814
  2. DEBPROC MRCFRAM3 TYP_CAL2*'MOT '
  3. TAB_IN2*'TABLE' TOL_2*'FLOTTANT';
  4. *
  5. * --------------------------------------------------------
  6. * Procedure FRCFRAM3
  7. * Procedure appelee par MRCFRAME pour le calcul de la marge sismique
  8. * d'element frame type POUTRE COURTE
  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 = MRCFRAM3 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 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 'PT_COURT';
  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. *
  189. 'SI' ('EGA' TYP_CAL1 'ELLIPSOIDE');
  190. *
  191. *-------------------------------------------------------------
  192. * Methode Ellipse
  193. *
  194. * Test about the static state stress
  195. T_ST1 = G_ULTIFR TINI1;
  196. *
  197. 'SI' (T_ST1 '<EG' 0.0);
  198. LAM_FIN1 = 0.0;
  199. TIT1 = 'CHAINE' ' Element ' I_IE1 ' Lambda='
  200. LAM_FIN1 '.....Sig0 externe';
  201. 'MESS' TIT1;
  202. 'SINON';
  203. MAI1 = 0. 0. 0.;
  204. *
  205. * Matrix X
  206. MATX1 = VIDE 'RIGIDITE'/'RIGIDITE';
  207. MATX1 = MATX1 'ET' ('MANU' 'RIGIDITE' MAI1 (MOTS 'UY' 'UZ')
  208. ('PROG' VZVZ1 NNVZ1
  209. NNVZ1 NNNN1));
  210. *
  211. * Static state stress
  212. EF_ST0 = 'MANU' 'CHPO' MAI1 2 'FY' EFFZ0 'FZ' EFFX0;
  213. EF_ST0 = 'CHAN' 'ATTRIBUT' EF_ST0 'NATURE' 'DISCRET';
  214. *
  215. *
  216. * Initial Vecteur
  217. ALP_0 = 'MANU' 'CHPO' MAI1 2 'UY' 2.0 'UZ' 2.0;
  218. XALP_0 = (MATX1*ALP_0)/(('XTMX' MATX1 ALP_0)**(0.5));
  219. XALP_0 = ('CHAN' ATTRIBUT XALP_0 NATURE DISCRET) + EF_ST0;
  220. *
  221. * direction used for the ellispoide methode
  222. TB_DIR = 'TABLE';
  223. TB_DIR. 1 = 'MANU' 'CHPO' MAI1 2 'UY' 1.0 'UZ' 0.0;
  224. TB_DIR. 2 = 'MANU' 'CHPO' MAI1 2 'UY' 0.0 'UZ' 1.0;
  225. TB_DIR. 3 = 'MANU' 'CHPO' MAI1 2 'UY' -1.0 'UZ' 0.0;
  226. TB_DIR. 4 = 'MANU' 'CHPO' MAI1 2 'UY' 0.0 'UZ' -1.0;
  227. *
  228. SB0 = ('XTX' (XALP_0 - EF_ST0))**(0.5);
  229. RB0 = SB0;
  230. LAMB0 = RB0/SB0;
  231. *
  232. * incremental step
  233. H_VAL1 = (SB0)/(100000.0);
  234. H_VAL2 = (SB0)/(100000.0);
  235. *
  236. * variable for the convergence test
  237. ID1_CON = 0;
  238. *
  239. * loop for each direction
  240. I_K1 = 1;
  241. 'REPE' IND3 (4);
  242. *
  243. TAB_ITE = 'TABLE';
  244. TAB_ITE. 0 = 'TABLE';
  245. TAB_ITE. 0 . 'ALPA' = ALP_0;
  246. TAB_ITE. 0 . 'LAMBDA' = LAMB0;
  247. TAB_ITE. 0 . 'RB' = RB0;
  248. *
  249. ALP_K = (TB_DIR. I_K1);
  250. I_M1 = 1;
  251. * first loop in order to have n_elllips=n_limite
  252. 'REPE' IND2 (200);
  253. * sauving Lambda for j iteraction
  254. TAB_ITE. I_M1 = 'TABLE';
  255. TAB_ITE. I_M1 . 'ALPA' = ALP_K;
  256. * determination of the stress state for the chosen direction
  257. XALP_J = (MATX1*ALP_K)/(('XTMX' MATX1 ALP_K)**(0.5));
  258. XALP_J = ('CHAN' ATTRIBUT XALP_J NATURE DISCRET) + EF_ST0;
  259. * nomalisez vector of hte rayon of the ellipsoide for the
  260. * chosen direction
  261. SBJ = ('XTX' (XALP_J - EF_ST0))**(0.5);
  262. BJ = (XALP_J - EF_ST0)/(SBJ);
  263. * rayon of the ellipsoide for the chosen direction
  264. RBVAL1 = (TAB_ITE.(I_M1 - 1). 'RB');
  265. * second loop in order to have f=0
  266. I_I1 = 1;
  267. 'REPE' IND1 (200);
  268. * strees state x0, x0+h, x0-h
  269. VV1 = (RBVAL1 + H_VAL1)*(BJ);
  270. VV2 = (RBVAL1 - H_VAL1)*(BJ);
  271. VV3 = (RBVAL1)*(BJ);
  272. VV1 = ('CHAN' 'ATTRIBUT' VV1 'NATURE' 'DISCRET') + EF_ST0;
  273. VV2 = ('CHAN' 'ATTRIBUT' VV2 'NATURE' 'DISCRET') + EF_ST0;
  274. VV3 = ('CHAN' 'ATTRIBUT' VV3 'NATURE' 'DISCRET') + EF_ST0;
  275. TINIA1 = 'COPI' TINI1;
  276. TINIB1 = 'COPI' TINI1;
  277. TINIC1 = 'COPI' TINI1;
  278. TINIA1.'NN' = EXTR VV1 'FZ' MAI1;
  279. TINIA1.'VY' = 0.0;
  280. TINIA1.'VZ' = EXTR VV1 'FY' MAI1;
  281. TINIA1.'MT' = 0.0;
  282. TINIA1.'MY' = 0.0;
  283. TINIA1.'MZ' = 0.0;
  284. TINIB1.'NN' = EXTR VV2 'FZ' MAI1;
  285. TINIB1.'VY' = 0.0;
  286. TINIB1.'VZ' = EXTR VV2 'FY' MAI1;
  287. TINIB1.'MT' = 0.0;
  288. TINIB1.'MY' = 0.0;
  289. TINIB1.'MZ' = 0.0;
  290. TINIC1.'NN' = EXTR VV3 'FZ' MAI1;
  291. TINIC1.'VY' = 0.0;
  292. TINIC1.'VZ' = EXTR VV3 'FY' MAI1;
  293. TINIC1.'MT' = 0.0;
  294. TINIC1.'MY' = 0.0;
  295. TINIC1.'MZ' = 0.0;
  296. 'OUBL' VV1;
  297. 'OUBL' VV2;
  298. 'OUBL' VV3;
  299. F_VAL1 = G_ULTIFR TINIC1;
  300. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  301. ((2.0)*(H_VAL1));
  302.  
  303. * MESS '-------------------------';
  304. * LIST F_VAL1;
  305. * LIST D_VAL1;
  306. * LIST (TINIC1.'VZ');
  307. * LIST (TINIC1.'NN');
  308. * SI (I_I1 EGA 8);
  309. * ERRE 5;
  310. * FINSI;
  311. * controle
  312. 'SI' ((('ABS'(F_VAL1)) '<' TOL_1) 'OU' (I_I1 'EGA' 199));
  313. RBJ = RBVAL1;
  314. 'QUIT' IND1;
  315. 'SINON';
  316. 'SI' (('ABS'(D_VAL1)) < 1.E-12);
  317. 'SI' (((ABS(TINIC1.'VZ')) '<' ((TOL_1)*(1.E-4))));
  318. 'SI' (((TINIC1.'NN') '<' NLIMC1));
  319. RBVAL2 = RBVAL1;
  320. RBVAL1 = ((NLIMC1) -
  321. (EXTR EF_ST0 'FZ' MAI1))/
  322. (EXTR BJ 'FZ' MAI1);
  323. 'SINON';
  324. 'SI' (((TINIC1.'NN') '>' NLIMT1));
  325. RBVAL2 = RBVAL1;
  326. RBVAL1 = ((NLIMT1) -
  327. (EXTR EF_ST0 'FZ' MAI1))/
  328. (EXTR BJ 'FZ' MAI1);
  329. 'FINSI';
  330. 'FINSI';
  331. 'SI' ((((TINIC1.'NN') '>EG' NLIMC1))
  332. 'ET' (((TINIC1.'NN') '&lt;EG' NLIMT1)));
  333. 'SI' ((EXTR ALP_K MAI1 'UZ') '<' 0.0);
  334. RBVAL2 = RBVAL1;
  335. RBVAL1 = ((NLIMC1) -
  336. (EXTR EF_ST0 'FZ' MAI1))/
  337. (EXTR BJ 'FZ' MAI1);
  338. 'SINON';
  339. RBVAL2 = RBVAL1;
  340. RBVAL1 = ((NLIMT1) -
  341. (EXTR EF_ST0 'FZ' MAI1))/
  342. (EXTR BJ 'FZ' MAI1);
  343. 'FINSI';
  344. 'FINSI';
  345. 'SINON';
  346. 'SI' (((TINIC1.'NN') '<' 0.0));
  347. RBVAL2 = RBVAL1;
  348. RBVAL1 = ((NLIMC1) -
  349. (EXTR EF_ST0 'FZ' MAI1) +
  350. ((NLIMT1)*(TOL_1)))/
  351. (EXTR BJ 'FZ' MAI1);
  352. 'SINON';
  353. 'SI' (((TINIC1.'NN') '>EG' 0.0));
  354. RBVAL2 = RBVAL1;
  355. RBVAL1 = ((NLIMT1) -
  356. (EXTR EF_ST0 'FZ' MAI1) -
  357. ((NLIMT1)*(TOL_1)))/
  358. (EXTR BJ 'FZ' MAI1);
  359. 'FINSI';
  360. 'FINSI';
  361. 'FINSI';
  362. 'SINON';
  363. * otherwise
  364. RBVAL2 = RBVAL1;
  365. RBVAL1 = RBVAL1 - ((F_VAL1)/(D_VAL1));
  366. 'FINSI';
  367. 'FINSI';
  368. I_I1 = I_I1 + 1;
  369. 'FIN' IND1;
  370. * computation of lambda
  371. LAMBJ = RBJ/SBJ;
  372. TAB_ITE. I_M1 . 'LAMBDA' = LAMBJ;
  373. TAB_ITE. I_M1 . 'RB' = RBJ;
  374. XCOUB1 = (((TAB_ITE. I_M1 .'LAMBDA')*(TAB_ITE. I_M1 .'LAMBDA'))*
  375. (MATX1));
  376. * amplified stress state using the lambda coef
  377. XALP_L = (XCOUB1*ALP_K)/(('XTMX' XCOUB1 ALP_K)**(0.5));
  378. XALP_L = ('CHAN' ATTRIBUT XALP_L NATURE DISCRET) + EF_ST0;
  379. * Dh*ex ; Dh*ey ; Dh*ez
  380. DE_HX = 'MANU' 'CHPO' MAI1 2 'FY' H_VAL2 'FZ' 0.0;
  381. DE_HY = 'MANU' 'CHPO' MAI1 2 'FY' 0.0 'FZ' H_VAL2;
  382. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  383. VV_HXP = XALP_L + DE_HX;
  384. VV_HYP = XALP_L + DE_HY;
  385. * x0*lam + Dh*ex ; x0*lam + Dh*ey ; x0*lam + Dh*ez
  386. VV_HXN = XALP_L - DE_HX;
  387. VV_HYN = XALP_L - DE_HY;
  388. * x0*lam
  389. VV_0 = XALP_L;
  390. *
  391. VV_HXP1 = 'EXTR' VV_HXP 'FY' MAI1;
  392. VV_HXP2 = 'EXTR' VV_HXP 'FZ' MAI1;
  393. VV_HYP1 = 'EXTR' VV_HYP 'FY' MAI1;
  394. VV_HYP2 = 'EXTR' VV_HYP 'FZ' MAI1;
  395. VV_HXN1 = 'EXTR' VV_HXN 'FY' MAI1;
  396. VV_HXN2 = 'EXTR' VV_HXN 'FZ' MAI1;
  397. VV_HYN1 = 'EXTR' VV_HYN 'FY' MAI1;
  398. VV_HYN2 = 'EXTR' VV_HYN 'FZ' MAI1;
  399. *
  400. VV_01 = 'EXTR' VV_0 'FY' MAI1;
  401. VV_02 = 'EXTR' VV_0 'FZ' MAI1;
  402. *
  403. 'SI' ((VV_HYP2) '>' (NLIMT1));
  404. TINIA1 = 'COPI' TINI1;
  405. TINIB1 = 'COPI' TINI1;
  406. TINIA1.'NN' = VV_HXP2;
  407. TINIA1.'VY' = 0.0;
  408. TINIA1.'VZ' = VV_HXP1;
  409. TINIA1.'MT' = 0.0;
  410. TINIA1.'MY' = 0.0;
  411. TINIA1.'MZ' = 0.0;
  412. TINIB1.'NN' = VV_HXN2;
  413. TINIB1.'VY' = 0.0;
  414. TINIB1.'VZ' = VV_HXN1;
  415. TINIB1.'MT' = 0.0;
  416. TINIB1.'MY' = 0.0;
  417. TINIB1.'MZ' = 0.0;
  418. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  419. ((2.0)*(H_VAL2));
  420. *
  421. TINIA1 = 'COPI' TINI1;
  422. TINIB1 = 'COPI' TINI1;
  423. TINIA1.'NN' = VV_02;
  424. TINIA1.'VY' = 0.0;
  425. TINIA1.'VZ' = VV_01;
  426. TINIA1.'MT' = 0.0;
  427. TINIA1.'MY' = 0.0;
  428. TINIA1.'MZ' = 0.0;
  429. TINIB1.'NN' = VV_HYN2;
  430. TINIB1.'VY' = 0.0;
  431. TINIB1.'VZ' = VV_HYN1;
  432. TINIB1.'MT' = 0.0;
  433. TINIB1.'MY' = 0.0;
  434. TINIB1.'MZ' = 0.0;
  435. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  436. ((1.0)*(H_VAL2));
  437. 'SINON';
  438. 'SI' ((VV_HYN2) '<' (NLIMC1));
  439. TINIA1 = 'COPI' TINI1;
  440. TINIB1 = 'COPI' TINI1;
  441. TINIA1.'NN' = VV_HXP2;
  442. TINIA1.'VY' = 0.0;
  443. TINIA1.'VZ' = VV_HXP1;
  444. TINIA1.'MT' = 0.0;
  445. TINIA1.'MY' = 0.0;
  446. TINIA1.'MZ' = 0.0;
  447. TINIB1.'NN' = VV_HXN2;
  448. TINIB1.'VY' = 0.0;
  449. TINIB1.'VZ' = VV_HXN1;
  450. TINIB1.'MT' = 0.0;
  451. TINIB1.'MY' = 0.0;
  452. TINIB1.'MZ' = 0.0;
  453. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  454. ((2.0)*(H_VAL2));
  455. *
  456. TINIA1 = 'COPI' TINI1;
  457. TINIB1 = 'COPI' TINI1;
  458. TINIA1.'NN' = VV_HYP2;
  459. TINIA1.'VY' = 0.0;
  460. TINIA1.'VZ' = VV_HYP1;
  461. TINIA1.'MT' = 0.0;
  462. TINIA1.'MY' = 0.0;
  463. TINIA1.'MZ' = 0.0;
  464. TINIB1.'NN' = VV_02;
  465. TINIB1.'VY' = 0.0;
  466. TINIB1.'VZ' = VV_01;
  467. TINIB1.'MT' = 0.0;
  468. TINIB1.'MY' = 0.0;
  469. TINIB1.'MZ' = 0.0;
  470. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  471. ((1.0)*(H_VAL2));
  472. 'SINON';
  473. TINIA1 = 'COPI' TINI1;
  474. TINIB1 = 'COPI' TINI1;
  475. TINIA1.'NN' = VV_HXP2;
  476. TINIA1.'VY' = 0.0;
  477. TINIA1.'VZ' = VV_HXP1;
  478. TINIA1.'MT' = 0.0;
  479. TINIA1.'MY' = 0.0;
  480. TINIA1.'MZ' = 0.0;
  481. TINIB1.'NN' = VV_HXN2;
  482. TINIB1.'VY' = 0.0;
  483. TINIB1.'VZ' = VV_HXN1;
  484. TINIB1.'MT' = 0.0;
  485. TINIB1.'MY' = 0.0;
  486. TINIB1.'MZ' = 0.0;
  487. VAL_X1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  488. ((2.0)*(H_VAL2));
  489. *
  490. TINIA1 = 'COPI' TINI1;
  491. TINIB1 = 'COPI' TINI1;
  492. TINIA1.'NN' = VV_HYP2;
  493. TINIA1.'VY' = 0.0;
  494. TINIA1.'VZ' = VV_HYP1;
  495. TINIA1.'MT' = 0.0;
  496. TINIA1.'MY' = 0.0;
  497. TINIA1.'MZ' = 0.0;
  498. TINIB1.'NN' = VV_HYN2;
  499. TINIB1.'VY' = 0.0;
  500. TINIB1.'VZ' = VV_HYN1;
  501. TINIB1.'MT' = 0.0;
  502. TINIB1.'MY' = 0.0;
  503. TINIB1.'MZ' = 0.0;
  504. VAL_Y1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  505. ((2.0)*(H_VAL2));
  506. *
  507. 'FINSI';
  508. 'FINSI';
  509. *
  510. * costruction n_limit
  511. DELTG1 = 'MANU' 'CHPO' MAI1
  512. 'UY' ((-1.0)*(VAL_X1))
  513. 'UZ' ((-1.0)*(VAL_Y1));
  514. *
  515. * check on the n_limit
  516. 'SI' ((('XTX' DELTG1)**(0.5)) < 1.E-7);
  517. * if |n_limit|=0 rotate the chosen direction by 10 degrees
  518. MATR1 = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  519. MATR1 = MATR1 'ET'
  520. ('MANU' 'RIGIDITE' MAI1 ('MOTS' 'UY' 'UZ')
  521. ('PROG' (COS(10.0)) ((-1.0)*(SIN(10.0)))
  522. (SIN(10.0)) (COS(10.0))));
  523. AAA1 = MATR1*ALP_K;
  524. DELTG1 = MANU CHPO MAI1
  525. 'UY' (EXTR AAA1 MAI1 'FY')
  526. 'UZ' (EXTR AAA1 MAI1 'FZ');
  527. 'FINSI';
  528. DELTG1 = DELTG1/((XTX DELTG1)**(0.5));
  529. * convergence test
  530. VET_TEST = (TAB_ITE. I_M1 . 'ALPA')
  531. - (TAB_ITE. (I_M1 - 1) . 'ALPA');
  532. *
  533. * SI (I_K1 > 4);
  534. * ERRE 5;
  535. * FINSI;
  536.  
  537. 'SI' ((('XTX' VET_TEST)**(0.5)) '<' 0.00001);
  538. * deduction of the final value of Lambda
  539. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  540. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  541. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  542. 'SINON';
  543. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  544. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  545. 'FINSI';
  546. 'FINSI';
  547. 'FINSI';
  548. 'QUIT' IND2;
  549. 'SINON';
  550. 'SI' (I_M1 'EGA' 999);
  551. ID1_CON = 1;
  552. 'SI' ((TAB_ITE. I_M1 . 'LAMBDA') '>' 0.0);
  553. 'SI' ('NEG' ('TYPE' LAM_FIN1) 'FLOTTANT');
  554. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  555. 'SINON';
  556. 'SI' (LAM_FIN1 '>' (TAB_ITE. I_M1 . 'LAMBDA'));
  557. LAM_FIN1 = (TAB_ITE. I_M1 . 'LAMBDA');
  558. 'FINSI';
  559. 'FINSI';
  560. 'FINSI';
  561. 'SINON';
  562. * otherwise updating the n_limit
  563. ALP_K = DELTG1;
  564. 'FINSI';
  565. 'FINSI';
  566. * Display
  567. * SI (I_K1 EGA 4);
  568. * MESS '-----------------------------';
  569. * LIST F_VAL1;
  570. * LIST I_I1;
  571. * LIST LAMBJ;
  572. * MESS '*';
  573. * LIST NLIMT1;
  574. * LIST NLIMC1;
  575. * LIST TINIC1.'VY';
  576. * LIST TINIC1.'VZ';
  577. * LIST TINIC1.'NN';
  578. * MESS '*';
  579. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UX' MAI1);
  580. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UY' MAI1);
  581. * LIST ('EXTR' (TAB_ITE. I_M1 . 'ALPA') 'UZ' MAI1);
  582. * LIST ('EXTR' DELTG1 'UX' MAI1);
  583. * LIST ('EXTR' DELTG1 'UY' MAI1);
  584. * LIST ('EXTR' DELTG1 'UZ' MAI1);
  585. * MESS '-----------------------------';
  586. * SI (I_M1 EGA 100);
  587. * ERRE 5;
  588. * FINSI;
  589. * FINSI;
  590. I_M1 = I_M1 + 1;
  591. 'FIN' IND2;
  592. I_K1 = I_K1 + 1;
  593. 'FIN' IND3;
  594. *
  595. * screen message
  596. 'SI' (ID1_CON 'EGA' 0);
  597. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  598. LAM_FIN1;
  599. 'MESS' TIT1;
  600. 'FINSI';
  601. 'SI' (ID1_CON 'EGA' 1);
  602. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  603. LAM_FIN1 '.....Attention non convergence';
  604. 'FINSI';
  605. 'FINSI';
  606. 'SINON';
  607. *
  608. *-------------------------------------------------------------
  609. * Methode Rectangle
  610. *
  611. * Test about the static state stress
  612. T_ST1 = G_ULTIFR TINI1;
  613. *
  614. ID1_CON = 0;
  615. 'SI' (T_ST1 '&lt;EG' 0.0);
  616. LAM_FIN1 = 0.0;
  617. TIT1 = 'CHAINE' ' Element ' I_IE1 ' Lambda='
  618. LAM_FIN1 '.....Sig0 externe';
  619. 'MESS' TIT1;
  620. 'SINON';
  621. LAMB0 = 1.0;
  622. H_VAL3 = LAMB0/100;
  623. TOL_2 = FCBET1/1000;
  624. LL_LAMY = PROG -1.0 1.0 1.0 -1.0;
  625. LL_LAMZ = PROG -1.0 -1.0 1.0 1.0 ;
  626. *
  627. * reference list for the 4 point for rectangle solid
  628. LL_I = PROG 1. 2. 3. 4.;
  629. *
  630. * creation of the resuming table
  631. TAB_ITE = 'TABLE';
  632. TAB_ITE. 0 = 'TABLE';
  633. TAB_ITE. 0 .'LAMBDA' = LAMB0 ;
  634. *
  635. I_MM1 = 0;
  636. ID1_CON = 0;
  637. *
  638. * loop for in order to find f=0
  639. 'REPE' IND4 (200);
  640. *
  641. * stress state for the 8 points
  642. Y1_0 = (((VZVZ1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFZ0;
  643. Z1_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  644. Y2_0 = (((VZVZ1)**(0.5))*(((1.0)*(LAMB0)))) + EFFZ0;
  645. Z2_0 = (((NNNN1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFX0;
  646. Y3_0 = (((VZVZ1)**(0.5))*(((1.0)*(LAMB0)))) + EFFZ0;
  647. Z3_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  648. Y4_0 = (((VZVZ1)**(0.5))*(((-1.0)*(LAMB0)))) + EFFZ0;
  649. Z4_0 = (((NNNN1)**(0.5))*(((1.0)*(LAMB0)))) + EFFX0;
  650.  
  651. *
  652. * put the N11, N22 et N12 stress state in the lists
  653. LL_Y0 = 'PROG' (Y1_0) (Y2_0) (Y3_0) (Y4_0);
  654. LL_Z0 = 'PROG' (Z1_0) (Z2_0) (Z3_0) (Z4_0);
  655. LL_F0 = 'PROG';
  656. *
  657. * deduction of f for each point
  658. III1 = 1;
  659. 'REPE' IND2 (4);
  660. TINIC1 = 'COPI' TINI1;
  661. TINIC1.'NN' = ('EXTR' LL_Z0 III1);
  662. TINIC1.'VY' = 0.0;
  663. TINIC1.'VZ' = ('EXTR' LL_Y0 III1);
  664. TINIC1.'MT' = 0.0;
  665. TINIC1.'MY' = 0.0;
  666. TINIC1.'MZ' = 0.0;
  667. LL_F0 = LL_F0 ET
  668. ('PROG' (G_ULTIFR TINIC1));
  669. III1 = III1 + 1;
  670. 'FIN' IND2;
  671. * saving
  672. TAB_ITE. I_MM1 .'L_Y' = LL_Y0;
  673. TAB_ITE. I_MM1 .'L_Z' = LL_Z0;
  674. TAB_ITE. I_MM1 .'L_F' = LL_F0;
  675. * finding the minimum value of f and the corresponding point
  676. EV1 = 'EVOL' 'MANU' LL_I (LL_F0);
  677. II1 II2 VAL_F = 'MINI' EV1;
  678. * computation of D (gradiant) in case of Point_1=Argmin(fmin)
  679. Y1_DP =
  680. (((VZVZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0 + H_VAL3))))
  681. + EFFZ0;
  682. Z1_DP =
  683. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 + H_VAL3))))
  684. + EFFX0;
  685. Y1_0 =
  686. (((VZVZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0))))
  687. + EFFZ0;
  688. Z1_0 =
  689. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0))))
  690. + EFFX0;
  691. Y1_DN =
  692. (((VZVZ1)**(0.5))*((('EXTR' LL_LAMY II1)*(LAMB0 - H_VAL3))))
  693. + EFFZ0;
  694. Z1_DN =
  695. (((NNNN1)**(0.5))*((('EXTR' LL_LAMZ II1)*(LAMB0 - H_VAL3))))
  696. + EFFX0;
  697. 'SI' (Z1_DP '>EG' NLIMT1);
  698. TINIA1 = 'COPI' TINI1;
  699. TINIB1 = 'COPI' TINI1;
  700. TINIA1.'NN' = Z1_0;
  701. TINIA1.'VY' = 0.0;
  702. TINIA1.'VZ' = Y1_0;
  703. TINIA1.'MT' = 0.0;
  704. TINIA1.'MY' = 0.0;
  705. TINIA1.'MZ' = 0.0;
  706. TINIB1.'NN' = Z1_DN;
  707. TINIB1.'VY' = 0.0;
  708. TINIB1.'VZ' = Y1_DN;
  709. TINIB1.'MT' = 0.0;
  710. TINIB1.'MY' = 0.0;
  711. TINIB1.'MZ' = 0.0;
  712. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  713. ((1.0)*(H_VAL3));
  714. 'SINON';
  715. 'SI' (Z1_DN '&lt;EG' NLIMC1);
  716. TINIA1 = 'COPI' TINI1;
  717. TINIB1 = 'COPI' TINI1;
  718. TINIA1.'NN' = Z1_DP;
  719. TINIA1.'VY' = 0.0;
  720. TINIA1.'VZ' = Y1_DP;
  721. TINIA1.'MT' = 0.0;
  722. TINIA1.'MY' = 0.0;
  723. TINIA1.'MZ' = 0.0;
  724. TINIB1.'NN' = Z1_0;
  725. TINIB1.'VY' = 0.0;
  726. TINIB1.'VZ' = Y1_0;
  727. TINIB1.'MT' = 0.0;
  728. TINIB1.'MY' = 0.0;
  729. TINIB1.'MZ' = 0.0;
  730. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  731. ((1.0)*(H_VAL3));
  732. 'SINON';
  733. TINIA1 = 'COPI' TINI1;
  734. TINIB1 = 'COPI' TINI1;
  735. TINIA1.'NN' = Z1_DP;
  736. TINIA1.'VY' = 0.0;
  737. TINIA1.'VZ' = Y1_DP;
  738. TINIA1.'MT' = 0.0;
  739. TINIA1.'MY' = 0.0;
  740. TINIA1.'MZ' = 0.0;
  741. TINIB1.'NN' = Z1_DN;
  742. TINIB1.'VY' = 0.0;
  743. TINIB1.'VZ' = Y1_DN;
  744. TINIB1.'MT' = 0.0;
  745. TINIB1.'MY' = 0.0;
  746. TINIB1.'MZ' = 0.0;
  747. D_VAL1 = ((G_ULTIFR TINIA1) - (G_ULTIFR TINIB1))/
  748. ((2.0)*(H_VAL3));
  749. 'FINSI';
  750. 'FINSI';
  751. 'OUBL' X1_DP;
  752. 'OUBL' Y1_DP;
  753. 'OUBL' Z1_DP;
  754. 'OUBL' X1_DN;
  755. 'OUBL' Y1_DN;
  756. 'OUBL' Z1_DN;
  757. * 'OUBL' X1_0;
  758. * 'OUBL' Y1_0;
  759. * 'OUBL' Z1_0;
  760. *
  761. * Display
  762. * MESS '-----------------------';
  763. * LIST II1;
  764. * LIST LAMB0;
  765. * LIST VAL_F;
  766. * LIST D_VAL1;
  767. * MESS '*';
  768. * LIST NLIMT1;
  769. * LIST NLIMC1;
  770. * MESS '*';
  771. * LIST Y1_0;
  772. * LIST Z1_0;
  773. * SI (I_MM1 EGA 50);
  774. * ERRE 5;
  775. * FINSI;
  776. *
  777. * test convergence
  778. 'SI' (('ABS'(VAL_F)) '<' TOL_1);
  779. * convergence!!!
  780. LAM_FIN1 = LAMB0;
  781. 'QUIT' IND4;
  782. 'SINON';
  783. 'SI' (I_MM1 'EGA' 200);
  784. LAM_FIN1 = LAMB0;
  785. ID1_CON = 1;
  786. 'QUIT' IND4;
  787. 'FINSI';
  788. 'SI' (('ABS'(D_VAL1)) < 1.E-8);
  789. * 'SI' ((Z1_0) '>EG' (NLIMT1));
  790. * LAMB1 = LAMB0;
  791. * LAMB0 = ((NLIMT1) - EFFX0 - ((NLIMT1)*(TOL_1)))/
  792. * (((NNNN1)**(0.5))*('EXTR' LL_LAMZ II1));
  793. * 'SINON';
  794. * 'SI' ((Z1_0) '&lt;EG' (NLIMC1));
  795. * LAMB1 = LAMB0;
  796. * LAMB0 = ((NLIMC1) - EFFX0 + ((NLIMT1)*(TOL_1)))/
  797. * (((NNNN1)**(0.5))*('EXTR' LL_LAMZ II1));
  798. * 'FINSI';
  799. * 'FINSI';
  800. LAMB1 = LAMB0;
  801. LAMB0 = LAMB0*0.9;
  802. 'SINON';
  803. * otherwise
  804. LAMB1 = LAMB0;
  805. LAMB0 = LAMB0 - ((VAL_F)/(D_VAL1));
  806. 'SI' (((ABS(LAMB1 - LAMB0))/(LAMB0)) '<' (1.E-8));
  807. LAMB0 = LAMB0*0.90;
  808. 'FINSI';
  809. 'FINSI';
  810. 'FINSI';
  811. 'OUBL' VAL_F;
  812. 'OUBL' D_VAL1;
  813. *
  814. TAB_ITE. (I_MM1 + 1) = 'TABLE';
  815. TAB_ITE. (I_MM1 + 1) .'LAMBDA' = ABS(LAMB0) ;
  816. *
  817. I_MM1 = I_MM1 + 1;
  818. 'FIN' IND4;
  819.  
  820. 'FINSI';
  821. *
  822. * screen message
  823. 'SI' (ID1_CON 'EGA' 0);
  824. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  825. LAM_FIN1;
  826. 'MESS' TIT1;
  827. 'FINSI';
  828. 'SI' (ID1_CON 'EGA' 1);
  829. TIT1 = 'CHAINE' ' Element ' I_ELE1 ' Lambda='
  830. LAM_FIN1 '.....Attention non convergence';
  831. 'FINSI';
  832. *
  833. 'FINSI';
  834. * MESS 'SONO QUI';
  835. * MESS LAM_FIN1;
  836. FINPROC LAM_FIN1;
  837.  
  838.  
  839.  

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