Télécharger kpre.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : kpre.dgibi
  2. 'OPTI' echo 0 ;
  3. ************************************************************************
  4. ************************************************************************
  5. ************************************************************************
  6. * NOM : KPRE
  7. * DESCRIPTION : Test operateur preconditionnement KPRE
  8. *
  9. * Utilisation de la procédure EGARIG
  10. *
  11. * LANGAGE : GIBIANE-CAST3M
  12. * AUTEUR : Stephane GOUNAND (CEA/DES/ISAS/DM2S/SEMT/LTA)
  13. * mel : stephane.gounand@cea.fr
  14. **********************************************************************
  15. * VERSION : v1, 26/05/2025, version initiale
  16. * HISTORIQUE : v1, 26/05/2025, création
  17. * HISTORIQUE :
  18. * HISTORIQUE :
  19. ************************************************************************
  20. *
  21. *
  22. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  23. *
  24. * Test de l'egalite de 2 rigidites
  25. *
  26. 'DEBPROC' EGARIG ;
  27. 'ARGUMENT' rig1*'RIGIDITE' ;
  28. 'ARGUMENT' rig2*'RIGIDITE' ;
  29. 'ARGU' tol/'FLOTTANT' ;
  30. 'SI' ('NON' ('EXIS' tol)) ;
  31. tol = '*' ('VALE' 'PREC') 10. ;
  32. 'FINS' ;
  33. *
  34. cmm1 = 'CHPO' uniforme rig1 1. ;
  35. cmm2 = 'CHPO' uniforme rig2 1. ;
  36. lok = vrai ;
  37. dcmm = 'MAXI' 'ABS' ('-' cmm1 cmm2) ;
  38. *'MESS' 'dcmm, tol=' dcmm tol ;
  39. tst = ('<' dcmm tol) ;
  40. lok = lok 'ET' tst ;
  41. comps = 'EXTR' cmm1 'COMP' ;
  42. ncomps = 'DIME' comps ;
  43. 'REPE' icomp ncomps ;
  44. com = 'EXTR' comps &icomp ;
  45. * 'MESS' 'Composante i=' &icomp ' ' com ;
  46. cmmc = 'EXCO' com cmm1 ;
  47. nodes = 'EXTR' cmmc 'MAIL' ;
  48. nnodes = 'NBNO' nodes ;
  49. 'REPE' inode nnodes ;
  50. nod = 'POIN' nodes &inode ;
  51. * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ;
  52. ch1 = 'MANU' 'CHPO' nod 1 com 1. ;
  53. lig1 = '*' rig1 ch1 ;
  54. lig2 = '*' rig2 ch1 ;
  55. dlig = 'MAXI' 'ABS' ('-' lig1 lig2) ;
  56. * 'MESS' ' dlig, tol=' dlig tol ;
  57. tst = ('<' dlig tol) ;
  58. lok = lok 'ET' tst ;
  59. 'FIN' inode ;
  60. 'FIN' icomp ;
  61. *
  62. 'RESPRO' lok ;
  63. *
  64. * End of procedure file EGARIG
  65. *
  66. 'FINPROC' ;
  67. *
  68. * Matrice de masse
  69. *
  70. 'DEBPROC' GMASS ;
  71. 'ARGUMENT' _mt*'MAILLAGE' ;
  72. 'ARGUMENT' gdisc*'MOT ' ;
  73. 'ARGUMENT' nomt*'LISTOBJE' ;
  74. 'ARGUMENT' disct*'MOT ' ;
  75. 'ARGUMENT' nomq*'LISTOBJE' ;
  76. 'ARGUMENT' discq*'MOT ' ;
  77. methgau = 'GAU7' ;
  78. *
  79. dim = 'VALE' 'DIME' ;
  80. dnomt = 'DIME' nomt ;
  81. numop = dnomt ;
  82. numder = dim ;
  83. numvar = dnomt ; numdat = 0 ; numcof = 0 ;
  84. *
  85. A = ININLIN numop numvar numdat numcof numder ;
  86. 'REPE' iinomt dnomt ;
  87. inomt = &iinomt ;
  88. A . 'VAR' . inomt . 'NOMDDL' = 'EXTR' nomt inomt ;
  89. A . 'VAR' . inomt . 'DISC' = disct ;
  90. *
  91. A . inomt . inomt . 0 = 0 ;
  92. 'FIN' iinomt ;
  93. *
  94. dnomq = 'DIME' nomq ;
  95. 'SI' ('NEG' dnomq dnomt) ; 'ERRE' ' Dim duale .NE. Dim primale ' ; 'FINS' ;
  96. *
  97. B = ININLIN numop numvar numdat numcof numder ;
  98. 'REPE' iinomq dnomq ;
  99. inomq = &iinomq ;
  100. B . 'VAR' . inomq . 'NOMDDL' = 'EXTR' nomq inomq ;
  101. B . 'VAR' . inomq . 'DISC' = discq ;
  102. *
  103. B . inomq . inomq . 0 = 0 ;
  104. 'FIN' iinomq ;
  105. *
  106. mgmass = 'NLIN' gdisc _mt A B methgau ;
  107. *
  108. 'RESPRO' mgmass ;
  109. 'FINPROC' ;
  110. *
  111. * Matrice de gradient
  112. *
  113. 'DEBPROC' GGRAD ;
  114. 'ARGUMENT' _mt*'MAILLAGE' ;
  115. 'ARGUMENT' gdisc*'MOT ' ;
  116. 'ARGUMENT' nomt*'LISTOBJE' ;
  117. 'ARGUMENT' disct*'MOT ' ;
  118. 'ARGUMENT' nomq*'LISTOBJE' ;
  119. 'ARGUMENT' discq*'MOT ' ;
  120. methgau = 'GAU7' ;
  121. *
  122. dim = 'VALE' 'DIME' ;
  123. dnomt = 'DIME' nomt ;
  124. 'SI' ('NEG' dnomt 1) ; 'ERRE' ' Dim primale .NE. 1 ' ; 'FINS' ;
  125. numop = dim ;
  126. numder = dim ;
  127. numvar = 1 ; numdat = 0 ; numcof = 0 ;
  128. *
  129. A = ININLIN numop numvar numdat numcof numder ;
  130. A . 'VAR' . 1 . 'NOMDDL' = 'EXTR' nomt 1 ;
  131. A . 'VAR' . 1 . 'DISC' = disct ;
  132. *
  133. 'REPE' iidim dim ;
  134. idim = &iidim ;
  135. A . idim . 1 . idim = 0 ;
  136. 'FIN' iidim ;
  137. *
  138. dnomq = 'DIME' nomq ;
  139. 'SI' ('NEG' dnomq dim) ; 'ERRE' ' Dim duale .NE. Dim esp. ' ; 'FINS' ;
  140. *
  141. numvar = dim ;
  142. B = ININLIN numop numvar numdat numcof numder ;
  143. 'REPE' iinomq dnomq ;
  144. inomq = &iinomq ;
  145. B . 'VAR' . inomq . 'NOMDDL' = 'EXTR' nomq inomq ;
  146. B . 'VAR' . inomq . 'DISC' = discq ;
  147. *
  148. B . inomq . inomq . 0 = 0 ;
  149. 'FIN' iinomq ;
  150. *
  151. mggrad = 'NLIN' gdisc _mt A B methgau ;
  152. *
  153. 'RESPRO' mggrad ;
  154. 'FINPROC' ;
  155. *
  156. * Matrice de laplacien
  157. *
  158. 'DEBPROC' GLAPN ;
  159. 'ARGUMENT' _mt*'MAILLAGE' ;
  160. 'ARGUMENT' gdisc*'MOT ' ;
  161. 'ARGUMENT' nomt*'LISTOBJE' ;
  162. 'ARGUMENT' disct*'MOT ' ;
  163. 'ARGUMENT' nomq*'LISTOBJE' ;
  164. 'ARGUMENT' discq*'MOT ' ;
  165. methgau = 'GAU7' ;
  166. *
  167. dim = 'VALE' 'DIME' ;
  168. dnomt = 'DIME' nomt ;
  169. numop = dnomt '*' dim ;
  170. numder = dim ;
  171. numvar = dnomt ; numdat = 0 ; numcof = 0 ;
  172. *
  173. A = ININLIN numop numvar numdat numcof numder ;
  174. iop = 0 ;
  175. 'REPE' iinomt dnomt ;
  176. inomt = &iinomt ;
  177. A . 'VAR' . inomt . 'NOMDDL' = 'EXTR' nomt inomt ;
  178. A . 'VAR' . inomt . 'DISC' = disct ;
  179. *
  180. 'REPE' iidim dim ;
  181. idim = &iidim ;
  182. iop = '+' iop 1 ;
  183. A . iop . inomt . idim = 0 ;
  184. 'FIN' iidim ;
  185. 'FIN' iinomt ;
  186. *
  187. dnomq = 'DIME' nomq ;
  188. 'SI' ('NEG' dnomq dnomt) ; 'ERRE' ' Dim duale .NE. Dim primale ' ; 'FINS' ;
  189. *
  190. B = ININLIN numop numvar numdat numcof numder ;
  191. iop = 0 ;
  192. 'REPE' iinomq dnomq ;
  193. inomq = &iinomq ;
  194. B . 'VAR' . inomq . 'NOMDDL' = 'EXTR' nomq inomq ;
  195. B . 'VAR' . inomq . 'DISC' = discq ;
  196. *
  197. 'REPE' iidim dim ;
  198. idim = &iidim ;
  199. iop = '+' iop 1 ;
  200. B . iop . inomq . idim = 0 ;
  201. 'FIN' iidim ;
  202. 'FIN' iinomq ;
  203. *
  204. mglapn = 'NLIN' gdisc _mt A B methgau ;
  205. *
  206. 'RESPRO' mglapn ;
  207. 'FINPROC' ;
  208. *
  209. * Matrice de rigidite
  210. *
  211. 'DEBPROC' GRIGI ;
  212. 'ARGUMENT' _mt*'MAILLAGE' ;
  213. 'ARGUMENT' gdisc*'MOT ' ;
  214. 'ARGUMENT' nomt*'LISTOBJE' ;
  215. 'ARGUMENT' disct*'MOT ' ;
  216. 'ARGUMENT' nomq*'LISTOBJE' ;
  217. 'ARGUMENT' discq*'MOT ' ;
  218. methgau = 'GAU7' ;
  219. *
  220. dim = 'VALE' 'DIME' ;
  221. dnomt = 'DIME' nomt ;
  222. 'SI' ('NEG' dnomt dim) ; 'ERRE' ' Dim primale .NE. Dim esp. ' ; 'FINS' ;
  223. *
  224. numop = dim '*' dim ;
  225. numder = dim ;
  226. numvar = dnomt ; numdat = 1 ; numcof = 1 ;
  227. *
  228. A = ININLIN numop numvar numdat numcof numder ;
  229. 'REPE' iinomt dnomt ;
  230. inomt = &iinomt ;
  231. A . 'VAR' . inomt . 'NOMDDL' = 'EXTR' nomt inomt ;
  232. A . 'VAR' . inomt . 'DISC' = disct ;
  233. 'FIN' iinomt ;
  234. A . 'DAT' . 1 . 'VALEUR' = 2.D0 ;
  235. A . 'COF' . 1 . 'LDAT' = 1 ;
  236. *
  237. iop = 0 ;
  238. 'REPETER' bidim dim ;
  239. 'REPETER' bjdim dim ;
  240. iop = '+' iop 1 ;
  241. 'SI' ('EGA' &bidim &bjdim) ;
  242. A . iop . &bidim . &bjdim = 1 ;
  243. 'SINO' ;
  244. A . iop . &bidim . &bjdim = 0 ;
  245. A . iop . &bjdim . &bidim = 0 ;
  246. 'FINS' ;
  247. 'FIN' bjdim ;
  248. 'FIN' bidim ;
  249. *
  250. dnomq = 'DIME' nomq ;
  251. 'SI' ('NEG' dnomq dnomt) ; 'ERRE' ' Dim duale .NE. Dim primale ' ; 'FINS' ;
  252. numdat = 0 ; numcof = 0 ;
  253. *
  254. B = ININLIN numop numvar numdat numcof numder ;
  255. 'REPE' iinomq dnomq ;
  256. inomq = &iinomq ;
  257. B . 'VAR' . inomq . 'NOMDDL' = 'EXTR' nomq inomq ;
  258. B . 'VAR' . inomq . 'DISC' = discq ;
  259. 'FIN' iinomq ;
  260. *
  261. iop = 0 ;
  262. 'REPETER' bidim dim ;
  263. 'REPETER' bjdim dim ;
  264. iop = '+' iop 1 ;
  265. B . iop . &bidim . &bjdim = 0 ;
  266. 'FIN' bjdim ;
  267. 'FIN' bidim ;
  268. *
  269. mrigi = 'NLIN' gdisc _mt A B methgau ;
  270. *
  271. 'RESPRO' mrigi ;
  272. 'FINPROC' ;
  273. *
  274. * Matrice de convection
  275. *
  276. 'DEBPROC' GUGRAD ;
  277. 'ARGUMENT' _mt*'MAILLAGE' ;
  278. 'ARGUMENT' gdisc*'MOT ' ;
  279. 'ARGUMENT' nomt*'LISTOBJE' ;
  280. 'ARGUMENT' disct*'MOT ' ;
  281. 'ARGUMENT' nomq*'LISTOBJE' ;
  282. 'ARGUMENT' discq*'MOT ' ;
  283. 'ARGUMENT' nomv*'LISTOBJE' ;
  284. 'ARGUMENT' discv*'MOT ' ;
  285. 'ARGUMENT' vv*'CHPOINT ' ;
  286. methgau = 'GAU7' ;
  287. *
  288. dim = 'VALE' 'DIME' ;
  289. dnomt = 'DIME' nomt ;
  290. dnomv = 'DIME' nomv ;
  291. 'SI' ('NEG' dnomv dim) ; 'ERRE' ' Dim vitesse .NE. Dim esp. ' ; 'FINS' ;
  292. *
  293. numop = dnomt ;
  294. numder = dim ;
  295. numvar = dnomt ; numdat = dnomv ; numcof = dnomv ;
  296. *
  297. A = ININLIN numop numvar numdat numcof numder ;
  298. 'REPE' iinomt dnomt ;
  299. inomt = &iinomt ;
  300. A . 'VAR' . inomt . 'NOMDDL' = 'EXTR' nomt inomt ;
  301. A . 'VAR' . inomt . 'DISC' = disct ;
  302. 'FIN' iinomt ;
  303. 'REPE' iinomv dnomv ;
  304. inomv = &iinomv ;
  305. A . 'DAT' . inomv . 'NOMDDL' = 'EXTR' nomv inomv ;
  306. A . 'DAT' . inomv . 'DISC' = discv ;
  307. A . 'DAT' . inomv . 'VALEUR' = vv ;
  308. A . 'COF' . inomv . 'LDAT' = inomv ;
  309. 'FIN' iinomv ;
  310. *
  311. 'REPE' iinomt dnomt ;
  312. inomt = &iinomt ;
  313. 'REPETER' bidim dim ;
  314. idim = &bidim ;
  315. A . inomt . inomt . idim = idim ;
  316. 'FIN' bidim ;
  317. 'FIN' iinomt ;
  318. *
  319. dnomq = 'DIME' nomq ;
  320. 'SI' ('NEG' dnomq dnomt) ; 'ERRE' ' Dim duale .NE. Dim primale ' ; 'FINS' ;
  321. numdat = 0 ; numcof = 0 ;
  322. *
  323. B = ININLIN numop numvar numdat numcof numder ;
  324. 'REPE' iinomq dnomq ;
  325. inomq = &iinomq ;
  326. B . 'VAR' . inomq . 'NOMDDL' = 'EXTR' nomq inomq ;
  327. B . 'VAR' . inomq . 'DISC' = discq ;
  328. 'FIN' iinomq ;
  329. *
  330. 'REPE' iinomq dnomq ;
  331. inomq = &iinomq ;
  332. B . inomq . inomq . 0 = 0 ;
  333. 'FIN' iinomq ;
  334. *
  335. mugrad = 'NLIN' gdisc _mt A B methgau ;
  336. *
  337. 'RESPRO' mugrad ;
  338. 'FINPROC' ;
  339. **********************************************************************
  340. *
  341. * DEBUT CAS-TEST
  342. *
  343. **********************************************************************
  344. *
  345. interact = faux ;
  346. *
  347. * Maillage quelconque
  348. *
  349. pA = 0. 0. ; pB = 1. 0. ; pC = 0. 1. ;
  350. *
  351. l1 = pA 'DROIT' 2 pB ;
  352. l2 = pB 'CERC' 5 pA pC ;
  353. l3 = pC 'DROIT' 3 pA ;
  354. mt = 'SURFACE' (l1 'ET' l2 'ET' l3) ;
  355. _mt = 'CHANGER' mt 'QUAF' ;
  356. $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'QUAF' ;
  357. *
  358. discu = 'CSTE' ; discp = 'LINE' ;
  359. discg = 'LINE' ;
  360. *
  361. vdim = 'VALE' 'DIME' ;
  362. nomu = 'ENUM' ('MOTS' 'UX') ('MOTS' 'UY') ;
  363. nomf = 'ENUM' ('MOTS' 'FX') ('MOTS' 'FY') ;
  364. nomp = 'ENUM' ('MOTS' 'LXP') ;
  365. nomfp = 'ENUM' ('MOTS' 'FLXP') ;
  366. *
  367. nompri = 'ETG' ('ET' nomu nomp) ;
  368. nomdua = 'ETG' ('ET' nomf nomfp) ;
  369. *
  370. 'OPTI' inco nompri nomdua ;
  371. *
  372. masu = GMASS _mt discg nomu discu nomf discu ;
  373. cu1 = 'CHPO' uniforme masu 1. ;
  374. masu1 = 'NOMC' ('ETG' nomf) ('*' masu cu1) ('ETG' nomu) ;
  375. masud = 'MANU' 'RIGI' masu1 'DIAG' ;
  376. mgra = GGRAD _mt discg nomp discp nomf discu ;
  377. mdiv = 'KOPS' 'TRANSPOS' mgra ;
  378. mdiv2 = mdiv '*' 1.d0 ;
  379. *maspu = GGRAD tdisc _mt 'NPRI' 'PN' 'NDUA' 'UN' ;
  380. *masup = 'KOPS' 'TRANSPOS' maspu ;
  381. mstab = GLAPN _mt discg nomp discp nomfp discp ;
  382. *
  383. * Test 1
  384. *
  385. m1 = 'KOPS' 'CMCT' mdiv ('**' masu1 -1.) mdiv ;
  386. *'LIST' m1 ;
  387. m1b = 'KOPS' 'CMCT' mdiv ('**' masu1 -1.) mdiv2 ;
  388. *'LIST' m1 ;
  389. *'LIST' mdiv ;
  390. *'OPTI' 'DONN' 5 ;
  391. *'LIST' masu ;
  392. *'OPTI' surv 2138011 ;
  393. m2 = KPRE mdiv masud mdiv ;
  394. m2b = KPRE mdiv ('*' masud PI) ('*' mdiv PI ) ;
  395. *'LIST' m2 ;
  396. *
  397. tol = '**' ('VALE' 'PREC') 0.625 ;
  398. *'OPTI' impi 1 ;
  399. t0 = egarig m1 m1b tol ;
  400. 'SI' ('NON' t0) ; 'MESS' '!!!! Test 0 Failed' ; 'FINS' ;
  401. t1 = egarig (m1 '*' -1.) m2 tol ;
  402. 'SI' ('NON' t1) ; 'MESS' '!!!! Test 1 Failed' ; 'FINS' ;
  403. t2 = egarig (m1 '*' -1.) m2b tol ;
  404. 'SI' ('NON' t2) ; 'MESS' '!!!! Test 2 Failed' ; 'FINS' ;
  405. *
  406. 'OPTI' 'ELEM' 'TRI6' ;
  407. mtt = 'CHAN' mt 'TRI6' ;
  408. _mtt = 'CHANGER' mtt 'QUAF' ;
  409. $mtt = 'MODELISER' _mtt 'NAVIER_STOKES' 'QUAF' ;
  410. *
  411. masu = GMASS _mtt discg nomu discu nomf discu ;
  412. cu1 = 'CHPO' uniforme masu 1. ;
  413. masu1 = 'NOMC' ('ETG' nomf) ('*' masu cu1) ('ETG' nomu) ;
  414. masud = 'MANU' 'RIGI' masu1 'DIAG' ;
  415. mgra = GGRAD _mtt discg nomp discp nomf discu ;
  416. mdiv = 'KOPS' 'TRANSPOS' mgra ;
  417. mstab = GLAPN _mtt discg nomp discp nomfp discp ;
  418. *
  419. m1c = 'KOPS' 'CMCT' mdiv ('**' masu1 -1.) mdiv ;
  420. m3 = KPRE mdiv masud ('*' mdiv 1.) ;
  421. *
  422. t3 = egarig (m1c '*' -1.) m3 tol ;
  423. 'SI' ('NON' t3) ; 'MESS' '!!!! Test 3 Failed' ; 'FINS' ;
  424. t4 = egarig ('*' mstab -1.) m3 tol ;
  425. 'SI' ('NON' t4) ; 'MESS' '!!!! Test 4 Failed' ; 'FINS' ;
  426. *
  427. * Test en rajoutant un bloc de stabilisation
  428. *
  429. m4 = KPRE mdiv masud ('*' mdiv 1.) ('*' mstab -1.3) ;
  430. t5 = egarig ('*' mstab -2.3) m4 tol ;
  431. 'SI' ('NON' t5) ; 'MESS' '!!!! Test 5 Failed' ; 'FINS' ;
  432. *
  433. * Un test en faisant des produits et des résolutions en
  434. * quadratiques
  435. *
  436. discu = 'LINM' ; discp = 'QUAF' ;
  437. discg = 'QUAF' ;
  438. *discu = 'CSTE' ; discp = 'LINE' ;
  439. *discg = 'LINE' ;
  440. *
  441. nomu = 'ENUM' ('MOTS' 'UX1' 'UX2' 'UX3') ('MOTS' 'UY1' 'UY2' 'UY3') ;
  442. nomf = 'ENUM' ('MOTS' 'FX1' 'FX2' 'FX3') ('MOTS' 'FY1' 'FY2' 'FY3') ;
  443. nomp = 'ENUM' ('MOTS' 'LXP') ;
  444. nomfp = 'ENUM' ('MOTS' 'FLXP') ;
  445. *
  446. nompri = 'ETG' ('ET' nomu nomp) ;
  447. nomdua = 'ETG' ('ET' nomf nomfp) ;
  448. *
  449. 'OPTI' inco nompri nomdua ;
  450. *
  451. masu = GMASS _mt discg nomu discu nomf discu ;
  452. cu1 = 'CHPO' uniforme masu 1. ;
  453. masu1 = 'NOMC' ('ETG' nomf) ('*' masu cu1) ('ETG' nomu) ;
  454. masud = 'MANU' 'RIGI' masu1 'DIAG' ;
  455. mgra = GGRAD _mt discg nomp discp nomf discu ;
  456. mdiv = 'KOPS' 'TRANSPOS' mgra ;
  457. mstab = GLAPN _mt discg nomp discp nomfp discp ;
  458. *
  459. mstab2 = '*' mstab 1.3 ;
  460. m5 = KPRE mdiv masud ('*' mdiv 1.) ('*' mstab2 -1.) ;
  461. m5 = '*' m5 -1. ;
  462. *'LIST' m5 ;
  463. *
  464. cmm = 'CHPO' uniforme m5 1. ;
  465. mgra = 'KOPS' transpos mdiv ;
  466.  
  467. lok = vrai ;
  468. comps = 'EXTR' cmm 'COMP' ;
  469. ncomps = 'DIME' comps ;
  470. 'REPE' icomp ncomps ;
  471. com = 'EXTR' comps &icomp ;
  472. * 'MESS' 'Composante i=' &icomp ' ' com ;
  473. cmmc = 'EXCO' com cmm ;
  474. nodes = 'EXTR' cmmc 'MAIL' ;
  475. nnodes = 'NBNO' nodes ;
  476. 'REPE' inode nnodes ;
  477. nod = 'POIN' nodes &inode ;
  478. * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ;
  479. ch1 = 'MANU' 'CHPO' nod 1 com 1. ;
  480. lig1 = '*' m5 ch1 ;
  481. lig2a = '*' mstab2 ch1 ;
  482. gc = '*' mgra ch1 ;
  483. amgc = 'RESO' masud gc ;
  484. lig2b = '*' mdiv amgc ;
  485. lig2 = lig2a '+' lig2b ;
  486. dlig = 'MAXI' 'ABS' ('-' lig1 lig2) ;
  487. * 'MESS' ' dlig, tol=' dlig tol ;
  488. tst = ('<' dlig tol) ;
  489. lok = lok 'ET' tst ;
  490. 'FIN' inode ;
  491. 'FIN' icomp ;
  492. t6 = lok ;
  493. 'SI' ('NON' t6) ; 'MESS' '!!!! Test 6 Failed' ; 'FINS' ;
  494. *
  495. * Un dernier test en faisant des produits et des résolutions en
  496. * quadratiques en non-symétrique
  497. *
  498. rigu = GRIGI _mt discg nomu discu nomf discu ;
  499. vit = 'MANU' 'CHPO' _mt 6 'UX1' 0.1 'UX2' 0.1 'UX3' 0.1
  500. 'UY1' 0.213 'UY2' 0.213 'UY3' 0.213
  501. ;
  502. gugradu = GUGRAD _mt discg nomu discu nomf discu nomu discu vit ;
  503. mtotu = masu 'ET' rigu 'ET' gugradu ;
  504. *
  505. m6 = KPRE mdiv mtotu ('*' mdiv 1.) ('*' mstab2 -1.) ;
  506. m6 = '*' m6 -1. ;
  507. *'LIST' m5 ;
  508. *
  509. cmm = 'CHPO' uniforme m6 1. ;
  510. mgra = 'KOPS' transpos mdiv ;
  511.  
  512. lok = vrai ;
  513. comps = 'EXTR' cmm 'COMP' ;
  514. ncomps = 'DIME' comps ;
  515. 'REPE' icomp ncomps ;
  516. com = 'EXTR' comps &icomp ;
  517. * 'MESS' 'Composante i=' &icomp ' ' com ;
  518. cmmc = 'EXCO' com cmm ;
  519. nodes = 'EXTR' cmmc 'MAIL' ;
  520. nnodes = 'NBNO' nodes ;
  521. 'REPE' inode nnodes ;
  522. nod = 'POIN' nodes &inode ;
  523. * 'MESS' ' noeu i=' &inode ' ' ('NOEU' nod) ;
  524. ch1 = 'MANU' 'CHPO' nod 1 com 1. ;
  525. lig1 = '*' m6 ch1 ;
  526. lig2a = '*' mstab2 ch1 ;
  527. gc = '*' mgra ch1 ;
  528. amgc = 'RESO' mtotu gc ;
  529. lig2b = '*' mdiv amgc ;
  530. lig2 = lig2a '+' lig2b ;
  531. dlig = 'MAXI' 'ABS' ('-' lig1 lig2) ;
  532. * 'MESS' ' dlig, tol=' dlig tol ;
  533. tst = ('<' dlig tol) ;
  534. lok = lok 'ET' tst ;
  535. 'FIN' inode ;
  536. 'FIN' icomp ;
  537. t7 = lok ;
  538. 'SI' ('NON' t7) ; 'MESS' '!!!! Test 7 Failed' ; 'FINS' ;
  539. *
  540. ttot = t1 'ET' t2 'ET' t3 'ET' t4 'ET' t5 'ET' t6 'ET' t7 ;
  541. *
  542. 'SI' ('NON' ttot) ;
  543. 'MESSAGE' ('CHAINE' 'Il y a eu des erreurs') ;
  544. 'ERREUR' 5 ;
  545. 'SINON' ;
  546. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  547. 'FINSI' ;
  548. *
  549. 'SI' interact ;
  550. 'OPTION' 'ECHO' 1 ;
  551. 'OPTION' 'DONN' 5 ;
  552. 'FINSI' ;
  553. *
  554. * End of dgibi file KPRE
  555. *
  556. 'FIN' ;
  557.  
  558.  
  559.  

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