Télécharger @A1DDL.procedur

Retour à la liste

Numérotation des lignes :

  1. * @A1DDL PROCEDUR BR232186 14/06/03 21:15:01 8061
  2. DEBP @A1DDL TABDYN * TABLE;
  3. **********************************************
  4. * PROCEDURE @A1DDL.PROCEDUR
  5. **********************************************
  6. * Entree : TABDYN (type TABLE)
  7. * TABLE DE PARAMETRES
  8. **********************************************
  9. * Sortie : EVDR (type EVOLUTION)
  10. * EVOLUTION TEMP. DES DEPLACEMENTS
  11. *
  12. * EVVR (type EVOLUTION)
  13. * EVOLUTION TEMP. DES VITESSES
  14. *
  15. * EVAR (type EVOLUTION)
  16. * EVOLUTION TEMP. DES ACCELERATIONS
  17. *
  18. * TAB3 (type TABLE)
  19. * TABLE DE VARIABLES INTERNES
  20. * A CONVERGENCE
  21. **********************************************
  22. * Commentaire : Integration temporelle
  23. * des equations d un oscillateur
  24. * a 1DDL non lineaire
  25. * avec actualisation de
  26. * l amortissement
  27. **********************************************
  28. * Developpeur : COMPUTATIONAL ENGINEERING
  29. * AND STRUCTURES SAS
  30. * contact@c-e-s.fr
  31. **********************************************
  32.  
  33. * Recuperation des variables
  34. M = TABDYN . 1;
  35. BETA = TABDYN . 2;
  36. GAMMA = TABDYN . 3;
  37. FPLAS = TABDYN . 4;
  38. KA = TABDYN . 5;
  39. KB = TABDYN . 6;
  40. ACTU = TABDYN . 7;
  41. TIME = TABDYN . 8;
  42. AXTAB = TABDYN . 9;
  43. XI0 = TABDYN . 10;
  44. XMIN = TABDYN . 11;
  45. AMMAX = TABDYN . 12;
  46. NC = TABDYN . 13;
  47. DPLUS = TABDYN . 14;
  48. DMOIN = TABDYN . 15;
  49. MAXDP = TABDYN . 16;
  50. MAXDM = TABDYN . 17;
  51. AOLD = TABDYN . 18;
  52.  
  53. * Initialisation des parametres dynamiques
  54. F0 = (((KB + KA) / M)**0.5) / (2.0 * PI);
  55. DT = ((EXTR TIME 2) - (EXTR TIME 1));
  56. V0 = 0.0;
  57. D0 = 0.0;
  58. FD = 0.0;
  59. W0 = ((2.0 * PI) * F0);
  60. XNL = XI0 - XMIN;
  61. CA = (M * (2.0 * (XI0 * W0)));
  62. K = (M * (W0**2.0));
  63. S = 1.0 / (M + (((GAMMA * DT) * CA) + ((BETA * (DT**2)) * K)));
  64.  
  65. * Table pour la loi de comportement
  66. * TAB1 . 1 = K1 -- pente elastique
  67. * TAB1 . 2 = K2 -- pente endommagee
  68. * TAB1 . 3 = K3 -- pente plastique
  69. * TAB1 . 4 = X0 -- seuil 1
  70. * TAB1 . 5 = X1 -- seuil 2
  71. TAB1 = TABLE;
  72. TAB1 . 1 = KA + KB;
  73. TAB1 . 2 = 0.515 * (TAB1 . 1);
  74. TAB1 . 3 = 0.017 * (TAB1 . 1);
  75. TAB1 . 4 = 0.0022;
  76. TAB1 . 5 = 0.024;
  77.  
  78. * Calcul du chargement dynamique
  79. F = (-1.0 * (M * AXTAB));
  80.  
  81. * Nombre de pas de temps
  82. NSTEP = DIME TIME;
  83.  
  84. * Definition de quelques tables
  85. AR = PROG (S * ((EXTR F 1) - (CA * V0) - (K * D0)));
  86. DT22 = (((DT**2.0) / 2.0) *(1.0 - (2.0 * beta)));
  87. DT21 = (1.0 - GAMMA) * DT;
  88.  
  89. DR = PROG D0;
  90. VR = PROG V0;
  91. FCO = PROG NSTEP*0.0;
  92. ENDO = PROG NSTEP*0.0;
  93. AMPL = PROG NSTEP*0.0;
  94. CALXID = PROG NSTEP*0.0;
  95. AMD = PROG NSTEP*0.0;
  96. AMMD = PROG NSTEP*0.0;
  97. AMMS = PROG NSTEP*0.0;
  98. XI = PROG 0.0;
  99. CNL = PROG NSTEP*0.0;
  100. FNLR = PROG NSTEP*0.0;
  101.  
  102. DD = (EXTR DR 1) + (((EXTR VR 1) * DT) + (DT22 * (EXTR AR 1)));
  103. VV = (EXTR VR 1) + ((EXTR AR 1) * DT21);
  104.  
  105. * Boucle sur les pas de temps
  106.  
  107. I = 1;
  108.  
  109. REPE BOU1 (NSTEP - 1);
  110. I = I + 1;
  111.  
  112. * Valeur de l indice courant
  113. LIST ((NSTEP - I));
  114.  
  115. * Valeur du deplacement
  116. DI = (EXTR DR (I - 1));
  117.  
  118. * Predicteur en deplacement
  119. DD = (EXTR DR (I - 1)) +
  120. ((EXTR VR (I - 1)) * DT);
  121. DD = DD + ((1.0 - (2.0 * BETA)) *
  122. (((DT ** 2.0) / 2.0) * (EXTR AR (I - 1))));
  123.  
  124. * Predicteur en vitesse
  125. VV = (EXTR VR (I - 1)) + (((EXTR AR (I - 1)) * (1.0 - GAMMA)) * DT);
  126.  
  127. * Residu initial
  128. RESDU = 1.0;
  129.  
  130. SI (RESDU > 0.01);
  131.  
  132. REPE BOU2 1;
  133.  
  134. DJ = DD;
  135.  
  136. * Input des variables internes
  137. DATA = TABLE;
  138. DATA . 1 = TABDYN . 15;
  139. DATA . 2 = TABDYN . 16;
  140. DATA . 3 = DJ;
  141. DATA . 4 = TABDYN . 17;
  142. DATA . 5 = TABDYN . 18;
  143.  
  144. * Loi de comportement
  145. TAB3 = @MODTRI TAB1 DATA;
  146.  
  147. * Quelques stockages
  148. FO1 = TAB3 . 1;
  149. DPLUS = TAB3 . 2;
  150. DMOIN = TAB3 . 3;
  151. MAXDP = TAB3 . 4;
  152. MAXDM = TAB3 . 5;
  153. FF = TAB3 . 6;
  154.  
  155. FCO = INSE FCO I FO1;
  156.  
  157. * Gestion du pourcentage d effort maximum
  158. SI (>EG I 4);
  159.  
  160. FCOUR = (ABS (EXTR FCO I));
  161. FPREC = (ABS (EXTR FCO (I - 1)));
  162. FPREC2 = (ABS (EXTR FCO (I - 2)));
  163. FPREC3 = (ABS (EXTR FCO (I - 3)));
  164.  
  165. SI (FCOUR > FD);
  166. ENDO = INSE ENDO I (FCOUR / FPLAS);
  167. FD = FCOUR;
  168. SINON;
  169. ENDO = INSE ENDO I (EXTR ENDO (I - 1));
  170. FINSI;
  171.  
  172. SI (ET (ET (ET (FCOUR < FPREC) (FPREC > FPREC2))
  173. (FPREC2 > FPREC3)) (>EG (EXTR ENDO I) 0.0000001));
  174. AMPL = INSE AMPL I (FPREC / ((EXTR ENDO I) * FPLAS));
  175. SINON;
  176. AMPL = INSE AMPL I (EXTR AMPL (I - 1));
  177. FINSI;
  178.  
  179. SINON;
  180.  
  181. AMPL = INSE AMPL I 0.0;
  182. ENDO = INSE ENDO I 0.0;
  183.  
  184. FINSI;
  185.  
  186. * Parametres d actualisation de l amortissement
  187. CALXID = INSE CALXID I ((EXTR ENDO I) * 100.0);
  188.  
  189. TEMP1 = @CFD10 (EXTR CALXID I);
  190. AMD = INSE AMD I TEMP1;
  191.  
  192. AMMD = INSE AMMD I (MAXI (PROG (EXTR AMD I) AOLD));
  193.  
  194. TEMP1 = @CFS10 (EXTR AMPL I);
  195. AMMS = INSE AMMS I TEMP1;
  196.  
  197. * Quelques stockages
  198. TABDYN . 14 = DPLUS;
  199. TABDYN . 15 = DMOIN;
  200. TABDYN . 17 = MAXDP;
  201. TABDYN . 18 = MAXDM;
  202.  
  203. TAB3 . 7 = (EXTR AMMD I);
  204.  
  205. * Calcul du coefficient d amortissement actualise
  206. SI (ACTU EGA 3);
  207. XI = INSE XI I (((EXTR AMMD I) * (EXTR AMMS I)) + XMIN);
  208. SINON;
  209. SI (ACTU EGA 2);
  210. XI = INSE XI I (((1.0 - NC) * (MAXI (PROG (EXTR AMMD I) AOLD))) + XMIN);
  211. SINON;
  212. SI (ACTU EGA 1);
  213. XI = INSE XI I (((EXTR AMMD I) * (EXTR AMMS I)) + XMIN);
  214. SINON;
  215. XI = INSE XI I XMIN;
  216. FINSI;
  217. FINSI;
  218. FINSI;
  219.  
  220. * On sature le taux d amortissement
  221. SI ((EXTR XI I) > AMMAX);
  222. XI = INSE XI I AMMAX;
  223. FINSI;
  224.  
  225. * On calcule le coefficient d amortissement
  226. CNL = INSE CNL I (2.0 * (M * (W0 * (EXTR XI I))));
  227.  
  228. * Inversion de la raideur dynamique
  229. S = 1.0 / (M + (((GAMMA * DT) * (EXTR CNL I)) +
  230. ((BETA * (DT**2)) * K)));
  231.  
  232. * On stocke les efforts
  233. FNLR = INSE FNLR I FO1;
  234.  
  235. * On calcule l acceleration
  236. TEMP1 = (S * ((EXTR F I) - (1.0 *
  237. (((EXTR CNL I) * VV) + (EXTR FNLR I)))));
  238. AR = INSE AR I TEMP1;
  239.  
  240. * On corrige la vitesse et le deplacement
  241. TEMP2 = VV + ((GAMMA * DT) * TEMP1);
  242. VR = INSE VR I TEMP2;
  243.  
  244. TEMP3 = DD + (BETA * ((DT ** 2.0) * TEMP1));
  245. DR = INSE DR I TEMP3;
  246.  
  247. * On calcule le residu
  248. RESDU = (EXTR F I);
  249. TEMP1 = ((EXTR CNL I) * VV);
  250.  
  251. RESDU = RESDU + (-1.0 * TEMP1);
  252. RESDU = RESDU + (-1.0 * (EXTR FNLR I));
  253. TEMP1 = M * (EXTR AR I);
  254. RESDU = RESDU + (-1.0 * TEMP1);
  255.  
  256. DD = EXTR DR I;
  257. VV = EXTR VR I;
  258.  
  259. FIN BOU2;
  260.  
  261. FINSI;
  262.  
  263. FIN BOU1;
  264.  
  265. * On renvoie les evolutions de
  266. * deplacement, vitesse, l acceleration et l amortissement
  267. EVDR = EVOL MANU TIME DR;
  268. EVVR = EVOL MANU TIME VR;
  269. EVAR = EVOL MANU TIME AR;
  270. EVXI = EVOL MANU TIME XI;
  271.  
  272. RESPRO EVDR EVVR EVAR EVXI TAB3;
  273.  
  274. FINP;
  275.  
  276.  

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