Télécharger pilotage_indirect_1_cndi.dgibi

Retour à la liste

Numérotation des lignes :

  1. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. * Problem description:
  3. *
  4. * In the example below, we study the effects caused by the progressive
  5. * strain localization. The structure consists of a bar under uniform
  6. * tension in which the load is applied via displacement control at the
  7. * right edge. At this edge, only the direction of the displacement
  8. * is known a priori. The displacement intensity is calculated in such
  9. * a way to respect the path equation specified by the user. Here, the
  10. * defaut path equation (CMSI) is replaced by the CNDI (De Borst, 1987)
  11. * via the user procedure PILOINDI. The relative displacement variation
  12. * between two user-defined nodes is controlled during the simulations.
  13. * For more details, the interested reader is referred to
  14. * (De Borst, 1987; Rastiello et al., 2019; Oliveira et al., 2021,
  15. * Rastiello et al., 2022). An unstable response is induced by
  16. * increasing the value of NELX. The higher this number, the more
  17. * severe the snap-back becomes. On the other hand, the lower this
  18. * number, the more the snap-back tends to fade away.
  19. *
  20. * R. De Borst. Computation of post-bifurcation and post-failure behavior
  21. * of strain-softening solids, Comput. Struct., Volume 25 (1987) no. 2,
  22. * pp. 211-224
  23. *
  24. * G. Rastiello, F. Riccard,, B. Richard. Discontinuity-scale
  25. * path-following methods for the embedded discontinuity modeling of
  26. * failure in solids. Computer Methods in Applied Mechanics and
  27. * Engineering. Volume 349, 2019, Pages 431-457, ISSN 0045-7825,
  28. * https://doi.org/10.1016/j.cma.2019.02.030.
  29. *
  30. * H. Oliveira, G. Rastiello, A. Millard, I. Bitar, B. Richard.
  31. * Implementation of path-following solvers in the finite element toolbox
  32. * Cast3M: formulations, algorithms and applications. Volume 161, 2021,
  33. * 103055, ISSN 0965-9978,
  34. * https://doi.org/10.1016/j.advengsoft.2021.103055.
  35. *
  36. * G. Rastiello, H.L. Oliveira, A. Millard. Path-following
  37. * methods for unstable structural responses induced by strain softening:
  38. * a critical review. Comptes Rendus. Mécanique, Tome 350 (2022),
  39. * pp. 205-236.
  40. * doi : 10.5802/crmeca.112.
  41. *
  42. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  43. * Contact:
  44. * Giuseppe RASTIELLO
  45. * CEA Paris-Saclay, Université Paris-Saclay
  46. * DES/ISAS/DM2S/SEMT/EMSI
  47. * email : giuseppe.rastiello[at]cea.fr
  48. *
  49. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  50. *'OPTI' 'ECHO' 0;
  51. 'OPTI' 'DIME' 2 'ELEM' 'QUA4' 'MODE' 'PLAN CONTR';
  52. 'OPTI' 'TRAC' 'PSC';
  53. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  54. * export psc figures
  55. PLT1 = FAUX;
  56. * export output text
  57. EXP1 = FAUX;
  58. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  59. *
  60. * DEFINING THE PARAMETRIC GEOMETRY
  61. *
  62. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  63. * bar height
  64. H1 = 0.1;
  65. * bar length
  66. L1 = 1.0;
  67. * total number of elements along the x direction
  68. NELX = 29;
  69. * total number of elements along the y direction
  70. NELY = 3;
  71. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  72.  
  73. PIN = 'TABLE';
  74.  
  75. 'SI' (NELX < 3);
  76. 'MESS' 'error: the NELX must be greater than 3 and odd';
  77. 'SINON';
  78. PIN.1 = 0. 0.;
  79. 'FINSI';
  80.  
  81. 'REPE' BOPO NELX;
  82. CX = 'COOR' 1 PIN.(&BOPO);
  83. CX = CX + (L1/NELX);
  84. CY = 'COOR' 2 PIN.(&BOPO);
  85. PIN.(&BOPO + 1) = CX CY;
  86. 'FIN' BOPO;
  87.  
  88. LINH = 'TABLE';
  89. 'REPE' BOLI NELX;
  90. LINH.(&BOLI) = 'DROI' 1 PIN.(&BOLI) PIN.(&BOLI + 1);
  91. 'FIN' BOLI;
  92.  
  93. 'REPE' BOLI NELX;
  94. 'SI' (&BOLI 'EGA' 1);
  95. MALHA = LINH.(&BOLI);
  96. 'SINON';
  97. MALHA = MALHA 'ET' LINH.(&BOLI);
  98. 'FINSI';
  99. 'FIN' BOLI;
  100.  
  101. PSU = 'TABLE';
  102. PSU.1 = 0. H1;
  103.  
  104. 'REPE' BOPO NELX;
  105. CX = 'COOR' 1 PSU.(&BOPO);
  106. CX = CX + (L1/NELX);
  107. CY = 'COOR' 2 PSU.(&BOPO);
  108. PSU.(&BOPO + 1) = CX CY;
  109. 'FIN' BOPO;
  110.  
  111. 'REPE' BOPO NELX;
  112. CX = 'COOR' 1 PSU.(&BOPO);
  113. CX = CX + (L1/NELX);
  114. CY = 'COOR' 2 PSU.(&BOPO);
  115. PSU.(&BOPO + 1) = CX CY;
  116. 'FIN' BOPO;
  117.  
  118. 'REPE' BOLI NELX;
  119. LINH.(NELX + &BOLI) = 'DROI' 1 PSU.(&BOLI) PSU.(&BOLI + 1);
  120. 'FIN' BOLI;
  121.  
  122. 'REPE' BOLI NELX;
  123. MALHA = MALHA 'ET' LINH.(NELX + &BOLI);
  124. 'FIN' BOLI;
  125.  
  126. *VERTICAL LINES
  127.  
  128. 'REPE' BOLI (NELX+1);
  129. LINH.((2*NELX) + &BOLI) = 'DROI' NELY PIN.(&BOLI) PSU.(&BOLI);
  130. 'FIN' BOLI;
  131.  
  132. 'REPE' BOLI (NELX+1);
  133. MALHA = MALHA 'ET' LINH.((2*NELX) + &BOLI);
  134. 'FIN' BOLI;
  135.  
  136. *SURFACES
  137. AREA = 'TABLE';
  138. 'REPE' BOEX NELX;
  139. AREA.(&BOEX) = 'DALL' LINH.(&BOEX)
  140. LINH.(&BOEX + (2*NELX) + 1)
  141. LINH.(&BOEX + NELX)
  142. LINH.(&BOEX + (2*NELX)) ;
  143. 'FIN' BOEX;
  144.  
  145. 'REPE' BOEX NELX;
  146. 'SI' (&BOEX 'EGA' 1);
  147. ELASPART = AREA.(&BOEX);
  148. 'SINON';
  149. 'SI' (&BOEX 'EGA' ((NELX+1)/2));
  150. DAMMPART = AREA.(&BOEX);
  151. 'SINON';
  152. ELASPART = ELASPART 'ET' AREA.(&BOEX);
  153. 'FINSI';
  154. 'FINSI';
  155. 'FIN' BOEX;
  156.  
  157. str1 = (DAMMPART 'ET' ELASPART);
  158. leftedg = LINH.(2*NELX + 1);
  159. PA = PIN.1;
  160. PB = PIN.(NELX+1);
  161. rigtedg = LINH.(3*NELX + 1);
  162.  
  163. 'SI' PLT1;
  164. 'TRAC' str1;
  165. 'FINSI';
  166. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  167. *
  168. * END OF PARAMETRIC GEOMETRY
  169. *
  170. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  171.  
  172. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  173. *
  174. * DEFINING MODEL AND MATERIAL
  175. *
  176. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  177. AT=1.0e0;
  178. AC=1.2e0;
  179. BC=1.5e+03;
  180. BT=1.0E4;
  181. epsd0=1.0E-4;
  182. YG=1.0E+9;
  183. BBT=1.06e0;
  184. NNU=0.0;
  185. RO =2.3E+03;
  186.  
  187. MOD1 = 'MODE' ELASPART 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE';
  188. MAT1 = 'MATE' MOD1 'YOUN' YG 'NU' NNU 'RHO' RO;
  189.  
  190. MOD2 = 'MODE' DAMMPART 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE'
  191. 'ENDOMMAGEMENT' 'MAZARS';
  192. MAT2 = 'MATE' MOD2 'YOUN' YG 'NU' NNU 'RHO' RO 'BTRA' BT
  193. 'KTR0' epsd0 'ATRA' AT 'ACOM' AC 'BCOM' BC 'BETA' BBT;
  194.  
  195. MODTOT = MOD1 'ET' MOD2;
  196. MATTOT = MAT1 'ET' MAT2;
  197.  
  198. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  199. *
  200. * END OF MODEL AND MATERIAL
  201. *
  202. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  203.  
  204. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  205. *
  206. * DEFINING BOUNDARY CONDITIONS (known a priori)
  207. *
  208. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  209. CL1 = 'BLOQ' 'UX' leftedg;
  210. CL2 = 'BLOQ' 'UY' PA;
  211. CLT = CL1 'ET' CL2;
  212.  
  213. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  214. *
  215. * END OF BOUNDARY CONDITIONS
  216. *
  217. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  218.  
  219. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  220. *
  221. * SPECIFYING THE PATH-FOLLOWING EQUATION (CNDI)
  222. *
  223. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  224.  
  225. 'DEBP' PILOINDI PRECED*'TABLE' U*'CHPOINT' DU*'CHPOINT'
  226. DUI*'CHPOINT' DUII*'CHPOINT' DTAU*'FLOTTANT';
  227.  
  228. UU3 = 'EXTR' DU 'UX' PIN.((NELX+3)/2);
  229. UU2 = 'EXTR' DU 'UX' PIN.((NELX+1)/2);
  230. Pk = (UU3 - UU2) + (-1.0*DTAU);
  231.  
  232. HK = 'MANU' 'CHPO' PIN.((NELX+3)/2) 'UX' 1.;
  233. HK = HK + ('MANU' 'CHPO' PIN.((NELX+1)/2) 'UX' -1.);
  234.  
  235. COMP_PF = 'MOTS' 'UX' 'UY' ;
  236.  
  237. * --- Obtaining D_eta -----------------
  238. AUX1 = 'XTY' HK duI COMP_PF COMP_PF;
  239. AUX2 = 'XTY' HK duII COMP_PF COMP_PF;
  240. D_eta= (-1.0)*((Pk+AUX1)/AUX2);
  241.  
  242. 'FINPROC' D_ETA ;
  243.  
  244. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  245. *
  246. * END OF USER DEFINED PROCEDURE
  247. *
  248. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  249.  
  250. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  251. *
  252. * PROBLEM SOLUTION
  253. *
  254. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  255. *
  256. * number of time increments
  257. ntincrem = 40;
  258. *
  259. * control parameter
  260. TAU = 1.0E-6;
  261. *
  262. * direction of the applied displacement (u_hat)
  263. CL3 = 'BLOQ' 'UX' rigtedg;
  264. CLT = CLT 'ET' CL3;
  265. uch = 'DEPI' CL3 1.0;
  266. *
  267. lis_incr= 'PROG' 0. 'PAS' 1 (ntincrem. * 1) ;
  268. lis_tau = 'PROG' 0. 'PAS' TAU (ntincrem. * TAU) ;
  269. ev1 = 'EVOL' 'MANU' 't' lis_incr 'tau' lis_tau ;
  270. *
  271. **** preparing PASAPAS input table
  272. tab1 = 'TABLE';
  273. tab1 . 'MOVA' = 'D' ;
  274. tab1 . 'BLOCAGES_MECANIQUES' = CLT ;
  275. tab1 . 'CARACTERISTIQUES' = mattot ;
  276. tab1 . 'MODELE' = modtot ;
  277. tab1 . 'TEMPS_CALCULES' = lis_incr ;
  278. tab1 . 'INITIALISATION' = FAUX;
  279.  
  280. **** lines to be included for ativating path-following control ******
  281. tab1 . 'PILOTAGE_INDIRECT' = VRAI;
  282. tab1 . 'DEPLACEMENTS_PILOTES' = uch ;
  283. tab1 . 'PARAMETRE_DE_PILOTAGE' = ev1 ;
  284.  
  285.  
  286.  
  287. PASAPAS tab1;
  288.  
  289. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  290. *
  291. * END OF SOLUTION
  292. *
  293. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  294.  
  295. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  296. *
  297. * BEGIN OF POST-PROCESSING
  298. *
  299. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  300. *
  301. **** procedure @TOTAL adapted
  302. 'DEBPROC' RESFORCE CH1*'CHPOINT' GEO*'MAILLAGE' COMP1*'MOT' ;
  303. CH2 = 'REDU' CH1 GEO ;
  304. CHTOT = 'RESU' CH2 ;
  305. P1 = ('EXTR' CHTOT MAIL) 'POIN' 1 ;
  306. TOT1 = 'EXTR' CHTOT COMP1 P1 ;
  307. 'FINPROC' TOT1 ;
  308. *
  309. *
  310. nn = 'DIME' tab1 . 'TEMPS';
  311. *
  312. PROF = 'PROG' 0.;
  313. PROT = 'PROG' 0.;
  314. PROD = 'PROG' 0.;
  315. LISCT = 'PROG' 0.;
  316. *
  317. deplaca = 0.*(tab1 . 'DEPLACEMENTS' . 1) ;
  318. *
  319. 'REPE' LAB (nn - 1 ) ;
  320. ii = &LAB ;
  321. TT = tab1 . 'TEMPS' . ii ;
  322. deplac = tab1 . 'DEPLACEMENTS' . ii ;
  323. force_indirect = 'REAC' CL3 deplac ;
  324. FF = RESFORCE force_indirect rigtedg 'FX' ;
  325. DD = 'EXTR' deplac 'UX' PB ;
  326. du = deplac - deplaca;
  327. CT = ('EXTR' du 'UX' PIN.((NELX+3)/2)) - ('EXTR' du 'UX' PIN.((NELX+1)/2));
  328. deplaca = deplac ;
  329.  
  330. PROT = PROT 'ET' ( 'PROG' TT) ;
  331. PROF = PROF 'ET' ( 'PROG' FF) ;
  332. PROD = PROD 'ET' ( 'PROG' DD) ;
  333. LISCT= LISCT 'ET' ('PROG' CT);
  334. 'FIN' LAB ;
  335.  
  336.  
  337. PROETA = TAB1 . 'COEFFICIENT_DE_PILOTAGE' ;
  338. evo11 = 'EVOL' 'TURQ' 'MANU' 'disp' PROD 'forc' PROF ;
  339. evo12 = 'EVOL' 'ROUG' 'MANU' 'increment' PROT 'eta' PROETA ;
  340. evo13 = 'EVOL' 'BLEU' 'MANU' 'increment' PROT 'crit pilo' LISCT ;
  341.  
  342. 'SI' PLT1;
  343. 'DESS' evo11 ;
  344. 'DESS' evo12 ;
  345. 'DESS' evo13 ;
  346. 'FINSI';
  347.  
  348. 'SI' EXP1;
  349. @EXCEL1 evo11 'forc_displ_cndi.txt' ;
  350. @EXCEL1 evo13 'crit_pilo_cndi.txt' ;
  351. 'FINSI';
  352. fin;
  353. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  354. *
  355. * END OF POST-PROCESSING
  356. *
  357. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  358.  
  359. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  360. *
  361. * BEGIN OF NON-REGRESSION TEST
  362. *
  363. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  364. refx = 'PROG' 0.;
  365. refx = refx 'ET' ('PROG' 2.90000E-05);
  366. refx = refx 'ET' ('PROG' 5.80000E-05);
  367. refx = refx 'ET' ('PROG' 8.70000E-05);
  368. refx = refx 'ET' ('PROG' 9.94401E-05);
  369. refx = refx 'ET' ('PROG' 9.42679E-05);
  370. refx = refx 'ET' ('PROG' 8.61551E-05);
  371. refx = refx 'ET' ('PROG' 7.69734E-05);
  372. refx = refx 'ET' ('PROG' 6.78383E-05);
  373. refx = refx 'ET' ('PROG' 5.93717E-05);
  374. refx = refx 'ET' ('PROG' 5.18792E-05);
  375. refx = refx 'ET' ('PROG' 4.54704E-05);
  376. refx = refx 'ET' ('PROG' 4.01377E-05);
  377. refx = refx 'ET' ('PROG' 3.58090E-05);
  378. refx = refx 'ET' ('PROG' 3.23800E-05);
  379. refx = refx 'ET' ('PROG' 2.97354E-05);
  380. refx = refx 'ET' ('PROG' 2.77612E-05);
  381. refx = refx 'ET' ('PROG' 2.63512E-05);
  382. refx = refx 'ET' ('PROG' 2.54126E-05);
  383. refx = refx 'ET' ('PROG' 2.51180E-05);
  384. refx = refx 'ET' ('PROG' 2.49084E-05);
  385. refx = refx 'ET' ('PROG' 2.48010E-05);
  386. refx = refx 'ET' ('PROG' 2.48025E-05);
  387. refx = refx 'ET' ('PROG' 2.48823E-05);
  388. refx = refx 'ET' ('PROG' 2.57337E-05);
  389. refx = refx 'ET' ('PROG' 2.63513E-05);
  390. refx = refx 'ET' ('PROG' 2.70516E-05);
  391. refx = refx 'ET' ('PROG' 2.78171E-05);
  392. refx = refx 'ET' ('PROG' 2.86341E-05);
  393. refx = refx 'ET' ('PROG' 2.94914E-05);
  394. refx = refx 'ET' ('PROG' 3.03804E-05);
  395. refx = refx 'ET' ('PROG' 3.12941E-05);
  396. refx = refx 'ET' ('PROG' 3.22272E-05);
  397. refx = refx 'ET' ('PROG' 3.31753E-05);
  398. refx = refx 'ET' ('PROG' 3.41351E-05);
  399. refx = refx 'ET' ('PROG' 3.51041E-05);
  400. refx = refx 'ET' ('PROG' 3.60801E-05);
  401. refx = refx 'ET' ('PROG' 3.70616E-05);
  402. refx = refx 'ET' ('PROG' 3.80473E-05);
  403. refx = refx 'ET' ('PROG' 3.90364E-05);
  404. refx = refx 'ET' ('PROG' 4.00279E-05);
  405.  
  406. refy = 'PROG' 0.;
  407. refy = refy 'ET' ('PROG' 2.90000E+03);
  408. refy = refy 'ET' ('PROG' 5.80000E+03);
  409. refy = refy 'ET' ('PROG' 8.70000E+03);
  410. refy = refy 'ET' ('PROG' 9.88487E+03);
  411. refy = refy 'ET' ('PROG' 9.24561E+03);
  412. refy = refy 'ET' ('PROG' 8.30178E+03);
  413. refy = refy 'ET' ('PROG' 7.24724E+03);
  414. refy = refy 'ET' ('PROG' 6.19754E+03);
  415. refy = refy 'ET' ('PROG' 5.21707E+03);
  416. refy = refy 'ET' ('PROG' 4.33749E+03);
  417. refy = refy 'ET' ('PROG' 3.57014E+03);
  418. refy = refy 'ET' ('PROG' 2.91426E+03);
  419. refy = refy 'ET' ('PROG' 2.36236E+03);
  420. refy = refy 'ET' ('PROG' 1.90364E+03);
  421. refy = refy 'ET' ('PROG' 1.52618E+03);
  422. refy = refy 'ET' ('PROG' 1.21822E+03);
  423. refy = refy 'ET' ('PROG' 9.69401E+02);
  424. refy = refy 'ET' ('PROG' 7.73314E+02);
  425. refy = refy 'ET' ('PROG' 7.19625E+02);
  426. refy = refy 'ET' ('PROG' 6.63529E+02);
  427. refy = refy 'ET' ('PROG' 6.09011E+02);
  428. refy = refy 'ET' ('PROG' 5.45930E+02);
  429. refy = refy 'ET' ('PROG' 4.77951E+02);
  430. refy = refy 'ET' ('PROG' 1.79610E+02);
  431. refy = refy 'ET' ('PROG' 1.39974E+02);
  432. refy = refy 'ET' ('PROG' 1.08913E+02);
  433. refy = refy 'ET' ('PROG' 8.46308E+01);
  434. refy = refy 'ET' ('PROG' 6.56719E+01);
  435. refy = refy 'ET' ('PROG' 5.08949E+01);
  436. refy = refy 'ET' ('PROG' 3.93960E+01);
  437. refy = refy 'ET' ('PROG' 3.04612E+01);
  438. refy = refy 'ET' ('PROG' 2.35283E+01);
  439. refy = refy 'ET' ('PROG' 1.81555E+01);
  440. refy = refy 'ET' ('PROG' 1.39968E+01);
  441. refy = refy 'ET' ('PROG' 1.07813E+01);
  442. refy = refy 'ET' ('PROG' 8.29775E+00);
  443. refy = refy 'ET' ('PROG' 6.38138E+00);
  444. refy = refy 'ET' ('PROG' 4.90400E+00);
  445. refy = refy 'ET' ('PROG' 3.76605E+00);
  446. refy = refy 'ET' ('PROG' 2.89026E+00);
  447.  
  448. tol1 = 1.0e-4;
  449. maxres = 0.;
  450. 'REPE' BTEST (nn - 1 ) ;
  451. V1 = 'EXTR' refx (&BTEST + 1);
  452. V2 = 'EXTR' prod (&BTEST + 1);
  453. res1 = 'ABS' ((V1 - V2)/V1);
  454. 'SI' (res1 > maxres); maxres = res1; 'FINSI';
  455.  
  456. W1 = 'EXTR' refy (&BTEST + 1);
  457. W2 = 'EXTR' prof (&BTEST + 1);
  458. res2 = 'ABS' ((W1 - W2)/W1);
  459. 'SI' (res2 > maxres); maxres = res2; 'FINSI';
  460.  
  461. 'FIN' BTEST ;
  462.  
  463. err1 = maxres > tol1;
  464.  
  465. 'SI' err1;
  466. 'ERRE' 5 ;
  467. 'FINSI';
  468.  
  469. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  470. *
  471. * END OF NON-REGRESSION TEST
  472. *
  473. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  474. 'FIN';
  475.  
  476.  

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