Télécharger test_kops_cmct.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : test_kops_cmct.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ************************************************************************
  5. * NOM : TEST_KOPS_CMCT
  6. * DESCRIPTION : On vérifie que KOPS CMCT donne des résultats corrects
  7. *
  8. *
  9. *
  10. * LANGAGE : GIBIANE-CAST3M
  11. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  12. * mél : gounand@semt2.smts.cea.fr
  13. **********************************************************************
  14. * VERSION : v1, 15/04/2005, version initiale
  15. * HISTORIQUE : v1, 15/04/2005, création
  16. * HISTORIQUE :
  17. * HISTORIQUE :
  18. ************************************************************************
  19. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  20. * en cas de modification de ce sous-programme afin de faciliter
  21. * la maintenance !
  22. ************************************************************************
  23. *
  24. interact = FAUX ;
  25. graph=FAUX;
  26. *
  27. *BEGINPROCEDUR glapn
  28. ************************************************************************
  29. * NOM : GLAPN
  30. * DESCRIPTION : Un laplacien scalaire
  31. *
  32. *
  33. *
  34. * LANGAGE : GIBIANE-CAST3M
  35. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  36. * mél : gounand@semt2.smts.cea.fr
  37. **********************************************************************
  38. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  39. * VERSION : v1, 13/05/2004, version initiale
  40. * HISTORIQUE : v1, 13/05/2004, création
  41. * HISTORIQUE :
  42. * HISTORIQUE :
  43. ************************************************************************
  44. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  45. * en cas de modification de ce sous-programme afin de faciliter
  46. * la maintenance !
  47. ************************************************************************
  48. *
  49. *
  50. 'DEBPROC' GLAPN ;
  51. 'ARGUMENT' _mt*'MAILLAGE' ;
  52. 'ARGUMENT' gdisc*'MOT ' ;
  53. 'ARGUMENT' nomt*'MOT ' ;
  54. 'ARGUMENT' disct*'MOT ' ;
  55. 'ARGUMENT' nomq*'MOT ' ;
  56. 'ARGUMENT' discq*'MOT ' ;
  57. 'ARGUMENT' coef/'FLOTTANT' ;
  58. 'SI' ('NON' ('EXISTE' coef)) ;
  59. 'ARGUMENT' coef2/'CHPOINT ' ;
  60. 'SI' ('NON' ('EXISTE' coef2)) ;
  61. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  62. 'SINON' ;
  63. coef = coef2 ;
  64. 'ARGUMENT' discc*'MOT ' ;
  65. 'FINSI' ;
  66. 'SINON' ;
  67. discc = 'CSTE' ;
  68. 'FINSI' ;
  69. 'ARGUMENT' methgau/'MOT ' ;
  70. 'SI' ('NON' ('EXISTE' methgau)) ;
  71. methgau = 'GAU7' ;
  72. 'FINSI' ;
  73. 'ARGUMENT' chpop/'CHPOINT' ;
  74. 'ARGUMENT' chpod/'CHPOINT' ;
  75. *
  76. vdim = 'VALEUR' 'DIME' ;
  77. vmod = 'VALEUR' 'MODE' ;
  78. idim = 0 ;
  79. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  80. idim = 2 ;
  81. iaxi = FAUX ;
  82. 'FINSI' ;
  83. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  84. idim = 2 ;
  85. iaxi = VRAI ;
  86. 'FINSI' ;
  87. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  88. idim = 3 ;
  89. iaxi = FAUX ;
  90. 'FINSI' ;
  91. 'SI' ('EGA' vdim 1) ;
  92. idim = 1 ;
  93. iaxi = FAUX ;
  94. 'FINSI' ;
  95. 'SI' ('EGA' idim 0) ;
  96. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  97. 'FINSI' ;
  98. 'SI' iaxi ;
  99. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  100. 'FINSI' ;
  101. * Test bête...
  102. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT ') ;
  103. mincoef = 'MINIMUM' coef ;
  104. 'SINON' ;
  105. mincoef = coef ;
  106. 'FINSI' ;
  107. 'SI' ('<' mincoef 0.D0) ;
  108. 'ERREUR' 'Le coef (une viscosité) doit etre positive' ;
  109. 'FINSI' ;
  110. *
  111. 'SI' iaxi ;
  112. lcoef = 'MOTS' 'NURR' 'NUZZ' ;
  113. 'SINON' ;
  114. 'SI' ('EGA' idim 2) ;
  115. lcoef = 'MOTS' 'NUXX' 'NUYY' ;
  116. 'SINON' ;
  117. lcoef = 'MOTS' 'NUXX' 'NUYY' 'NUZZ' ;
  118. 'FINSI' ;
  119. 'FINSI' ;
  120. *
  121. ltens = FAUX ;
  122. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT') ;
  123. ncomp = 'DIME' ('EXTRAIRE' coef 'COMP') ;
  124. 'SI' ('EGA' ncomp idim) ;
  125. ltens = VRAI ;
  126. 'FINSI' ;
  127. 'FINSI' ;
  128. *
  129. tcoef = 'TABLE' ;
  130. 'SI' ltens ;
  131. 'REPETER' iidim idim ;
  132. tcoef . &iidim = 'EXCO' ('EXTRAIRE' lcoef &iidim) coef ;
  133. 'FIN' iidim ;
  134. 'SINON' ;
  135. 'REPETER' iidim idim ;
  136. tcoef . &iidim = coef ;
  137. 'FIN' iidim ;
  138. 'FINSI' ;
  139. *
  140. numop = idim ;
  141. numder = idim ;
  142. mmt = 'MOTS' nomt ;
  143. mmq = 'MOTS' nomq ;
  144. numvar = 1 ;
  145. numdat = idim ;
  146. numcof = idim ;
  147. *
  148. A = ININLIN numop numvar numdat numcof numder ;
  149. A . 'VAR' . 1 . 'NOMDDL' = mmt ;
  150. A . 'VAR' . 1 . 'DISC' = disct ;
  151. 'SI' ('EXISTE' chpop) ;
  152. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  153. 'FINSI' ;
  154. 'REPETER' iidim idim ;
  155. A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' 'SCAL' ;
  156. A . 'DAT' . &iidim . 'DISC' = discc ;
  157. A . 'DAT' . &iidim . 'VALEUR' = tcoef . &iidim ;
  158. A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
  159. A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
  160. 'FIN' iidim ;
  161. *
  162. 'REPETER' iidim idim ;
  163. A . &iidim . 1 . &iidim = 'LECT' &iidim ;
  164. 'FIN' iidim ;
  165. *
  166. 'SI' iaxi ;
  167. numdat = 1 ;
  168. numcof = 1 ;
  169. 'SINON' ;
  170. numdat = 0 ;
  171. numcof = 0 ;
  172. 'FINSI' ;
  173. *
  174. B = ININLIN numop numvar numdat numcof numder ;
  175. B . 'VAR' . 1 . 'NOMDDL' = mmq ;
  176. B . 'VAR' . 1 . 'DISC' = discq ;
  177. 'SI' ('EXISTE' chpod) ;
  178. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  179. 'FINSI' ;
  180. 'SI' iaxi ;
  181. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  182. B . 'DAT' . 1 . 'DISC' = gdisc ;
  183. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  184. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  185. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  186. 'FINSI' ;
  187. *
  188. 'REPETER' iidim idim ;
  189. 'SI' iaxi ;
  190. B . &iidim . 1 . &iidim = 'LECT' 1 ;
  191. 'SINON' ;
  192. B . &iidim . 1 . &iidim = 'LECT' ;
  193. 'FINSI' ;
  194. 'FIN' iidim ;
  195. *
  196. mglapn = 'NLIN' gdisc _mt A B methgau ;
  197. * Integration par parties
  198. mglapn = '*' mglapn -1.D0 ;
  199. *
  200. 'RESPRO' mglapn ;
  201. 'FINPROC' ;
  202. *
  203. * End of procedure file GLAPN
  204. *
  205. *ENDPROCEDUR glapn
  206. *BEGINPROCEDUR gdiv
  207. ************************************************************************
  208. * NOM : GDIV
  209. * DESCRIPTION :
  210. *
  211. *
  212. *
  213. * LANGAGE : GIBIANE-CAST3M
  214. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  215. * mél : gounand@semt2.smts.cea.fr
  216. **********************************************************************
  217. * VERSION : v1, 08/03/2006, version initiale
  218. * HISTORIQUE : v1, 08/03/2006, création
  219. * HISTORIQUE :
  220. * HISTORIQUE :
  221. ************************************************************************
  222. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  223. * en cas de modification de ce sous-programme afin de faciliter
  224. * la maintenance !
  225. ************************************************************************
  226. *
  227. *
  228. 'DEBPROC' GDIV ;
  229. 'ARGUMENT' _mt*'MAILLAGE' ;
  230. 'ARGUMENT' gdisc*'MOT ' ;
  231. 'ARGUMENT' discv*'MOT ' ;
  232. 'ARGUMENT' discp*'MOT ' ;
  233. 'ARGUMENT' coef/'FLOTTANT' ;
  234. 'SI' ('NON' ('EXISTE' coef)) ;
  235. 'ARGUMENT' coef2/'CHPOINT ' ;
  236. 'SI' ('NON' ('EXISTE' coef2)) ;
  237. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  238. 'SINON' ;
  239. coef = coef2 ;
  240. 'ARGUMENT' discc*'MOT ' ;
  241. 'FINSI' ;
  242. 'SINON' ;
  243. discc = 'CSTE' ;
  244. 'FINSI' ;
  245. 'ARGUMENT' methgau/'MOT ' ;
  246. 'SI' ('NON' ('EXISTE' methgau)) ;
  247. methgau = 'GAU7' ;
  248. 'FINSI' ;
  249. *
  250. vdim = 'VALEUR' 'DIME' ;
  251. vmod = 'VALEUR' 'MODE' ;
  252. idim = 0 ;
  253. lpp = 'MOTS' 'LX' ; ldp = 'MOTS' 'FLX' ;
  254. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  255. lpv = 'MOTS' 'UX' 'UY' ; ldv = 'MOTS' 'FX' 'FY' ;
  256. idim = 2 ;
  257. iaxi = FAUX ;
  258. 'FINSI' ;
  259. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  260. lpv = 'MOTS' 'UR' 'UZ' ; ldv = 'MOTS' 'FR' 'FZ' ;
  261. idim = 2 ;
  262. iaxi = VRAI ;
  263. 'FINSI' ;
  264. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  265. lpv = 'MOTS' 'UX' 'UY' 'UZ' ; ldv = 'MOTS' 'FX' 'FY' 'FZ' ;
  266. idim = 3 ;
  267. iaxi = FAUX ;
  268. 'FINSI' ;
  269. 'SI' ('EGA' idim 0) ;
  270. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  271. 'FINSI' ;
  272. 'SI' iaxi ;
  273. dp = ('*' PI 2.D0) ;
  274. rmt = 'COORDONNEE' 1 _mt ;
  275. 'FINSI' ;
  276. *
  277. numop = 1 ;
  278. numder = idim ;
  279. mmp = 'MOTS' nomp ;
  280. numvar = idim ;
  281. 'SI' iaxi ;
  282. numdat = 3 ;
  283. numcof = 3 ;
  284. 'SINON' ;
  285. numdat = 1 ;
  286. numcof = 1 ;
  287. 'FINSI' ;
  288. *
  289. A = ININLIN numop numvar numdat numcof numder ;
  290. 'REPETER' iidim idim ;
  291. A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lpv &iidim) ;
  292. A . 'VAR' . &iidim . 'DISC' = discv ;
  293. 'FIN' iidim ;
  294. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  295. A . 'DAT' . 1 . 'DISC' = discc ;
  296. A . 'DAT' . 1 . 'VALEUR' = coef ;
  297. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  298. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  299. 'SI' iaxi ;
  300. A . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  301. A . 'DAT' . 2 . 'DISC' = 'CSTE' ;
  302. A . 'DAT' . 2 . 'VALEUR' = dp ;
  303. A . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  304. A . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  305. A . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  306. A . 'DAT' . 3 . 'DISC' = gdisc ;
  307. A . 'DAT' . 3 . 'VALEUR' = rmt ;
  308. A . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
  309. A . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
  310. 'FINSI' ;
  311. *
  312. 'SI' iaxi ;
  313. 'REPETER' iidim idim ;
  314. A . 1 . &iidim . &iidim = 'LECT' 1 2 3 ;
  315. 'FIN' iidim ;
  316. A . 1 . 1 . 0 = 'LECT' 1 2 ;
  317. 'SINON' ;
  318. 'REPETER' iidim idim ;
  319. A . 1 . &iidim . &iidim = 'LECT' 1 ;
  320. 'FIN' iidim ;
  321. 'FINSI' ;
  322. *
  323. numvar = 1 ;
  324. numdat = 0 ;
  325. numcof = 0 ;
  326. B = ININLIN numop numvar numdat numcof numder ;
  327. B . 'VAR' . 1 . 'NOMDDL' = ldp ;
  328. B . 'VAR' . 1 . 'DISC' = discp ;
  329. B . 1 . 1 . 0 = 'LECT' ;
  330. *
  331. mgdiv = 'NLIN' gdisc _mt A B methgau ;
  332. *
  333. 'RESPRO' mgdiv ;
  334. 'FINPROC' ;
  335. *
  336. * End of procedure file GDIV
  337. *
  338. *ENDPROCEDUR gdiv
  339. *BEGINPROCEDUR gmass
  340. ************************************************************************
  341. * NOM : GMASS
  342. * DESCRIPTION : Une matrice de masse
  343. *
  344. *
  345. *
  346. * LANGAGE : GIBIANE-CAST3M
  347. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  348. * mél : gounand@semt2.smts.cea.fr
  349. **********************************************************************
  350. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  351. * VERSION : v1, 13/05/2004, version initiale
  352. * HISTORIQUE : v1, 13/05/2004, création
  353. * HISTORIQUE :
  354. * HISTORIQUE :
  355. ************************************************************************
  356. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  357. * en cas de modification de ce sous-programme afin de faciliter
  358. * la maintenance !
  359. ************************************************************************
  360. *
  361. *
  362. 'DEBPROC' GMASS ;
  363. 'ARGUMENT' _mt*'MAILLAGE' ;
  364. 'ARGUMENT' gdisc*'MOT ' ;
  365. 'ARGUMENT' nomt*'MOT ' ;
  366. 'ARGUMENT' disct*'MOT ' ;
  367. 'ARGUMENT' nomq*'MOT ' ;
  368. 'ARGUMENT' discq*'MOT ' ;
  369. 'ARGUMENT' coef/'FLOTTANT' ;
  370. 'SI' ('NON' ('EXISTE' coef)) ;
  371. 'ARGUMENT' coef2/'CHPOINT ' ;
  372. 'SI' ('NON' ('EXISTE' coef2)) ;
  373. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  374. 'SINON' ;
  375. coef = coef2 ;
  376. 'ARGUMENT' discc*'MOT ' ;
  377. 'FINSI' ;
  378. 'SINON' ;
  379. discc = 'CSTE' ;
  380. 'FINSI' ;
  381. 'ARGUMENT' methgau/'MOT ' ;
  382. 'SI' ('NON' ('EXISTE' methgau)) ;
  383. methgau = 'GAU7' ;
  384. 'FINSI' ;
  385. 'ARGUMENT' chpop/'CHPOINT' ;
  386. 'ARGUMENT' chpod/'CHPOINT' ;
  387. *
  388. vdim = 'VALEUR' 'DIME' ;
  389. vmod = 'VALEUR' 'MODE' ;
  390. idim = 0 ;
  391. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  392. idim = 2 ;
  393. iaxi = FAUX ;
  394. 'FINSI' ;
  395. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  396. idim = 2 ;
  397. iaxi = VRAI ;
  398. 'FINSI' ;
  399. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  400. idim = 3 ;
  401. iaxi = FAUX ;
  402. 'FINSI' ;
  403. 'SI' ('EGA' vdim 1) ;
  404. idim = 1 ;
  405. iaxi = FAUX ;
  406. 'FINSI' ;
  407. 'SI' ('EGA' idim 0) ;
  408. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  409. 'FINSI' ;
  410. 'SI' iaxi ;
  411. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  412. 'FINSI' ;
  413. numop = 1 ;
  414. numder = idim ;
  415. mmt = 'MOTS' nomt ;
  416. mmq = 'MOTS' nomq ;
  417. numvar = 1 ;
  418. numdat = 1 ;
  419. numcof = 1 ;
  420. *
  421. A = ININLIN numop numvar numdat numcof numder ;
  422. A . 'VAR' . 1 . 'NOMDDL' = mmt ;
  423. A . 'VAR' . 1 . 'DISC' = disct ;
  424. 'SI' ('EXISTE' chpop) ;
  425. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  426. 'FINSI' ;
  427. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  428. A . 'DAT' . 1 . 'DISC' = discc ;
  429. A . 'DAT' . 1 . 'VALEUR' = coef ;
  430. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  431. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  432. *
  433. A . 1 . 1 . 0 = 'LECT' 1 ;
  434. *
  435. 'SI' iaxi ;
  436. numdat = 1 ;
  437. numcof = 1 ;
  438. 'SINON' ;
  439. numdat = 0 ;
  440. numcof = 0 ;
  441. 'FINSI' ;
  442. B = ININLIN numop numvar numdat numcof numder ;
  443. B . 'VAR' . 1 . 'NOMDDL' = mmq ;
  444. B . 'VAR' . 1 . 'DISC' = discq ;
  445. 'SI' ('EXISTE' chpod) ;
  446. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  447. 'FINSI' ;
  448. *
  449. 'SI' iaxi ;
  450. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  451. B . 'DAT' . 1 . 'DISC' = gdisc ;
  452. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  453. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  454. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  455. 'FINSI' ;
  456. 'SI' iaxi ;
  457. B . 1 . 1 . 0 = 'LECT' 1 ;
  458. 'SINON' ;
  459. B . 1 . 1 . 0 = 'LECT' ;
  460. 'FINSI' ;
  461. *
  462. mgmass = 'NLIN' gdisc _mt A B methgau ;
  463. *
  464. 'RESPRO' mgmass ;
  465. 'FINPROC' ;
  466. *
  467. * End of procedure file GMASS
  468. *
  469. *ENDPROCEDUR gmass
  470. *
  471. 'DEBPROC' FOIS ;
  472. 'ARGUMENT' matk*'MATRIK' ;
  473. 'ARGUMENT' ch*'CHPOINT' ;
  474. 'RESPRO' ('KOPS' matk '*' ch) ;
  475. 'FINPROC' ;
  476. *
  477. *
  478. 'OPTION' 'DIME' 2 'ELEM' QUA8 ;
  479. *
  480. * Maillage quelconque
  481. *
  482. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  483. l1 = pA 'DROIT' 2 pB ;
  484. l2 = pB 'DROIT' 4 pC ;
  485. l3 = pC 'DROIT' 3 pD ;
  486. l4 = pD 'DROIT' 5 pA ;
  487. mt = 'SURFACE' (l1 'ET' l2 'ET' l3 'ET' l4) ;
  488. _mt = 'CHANGER' mt 'QUAF' ;
  489. $mt = 'MODELISER' _mt 'NAVIER_STOKES' 'QUAF' ;
  490. *
  491. * Construction d'un matrice (ici de laplacien + blocage)
  492. *
  493. rv = 'EQEX' 'OPTI' 'EF' 'IMPL'
  494. 'ZONE' $mt 'OPER' 'LAPN' 1. 'INCO' 'T' ;
  495. rv . 'INCO' = 'TABLE' 'INCO' ;
  496. rv . 'INCO' . 'T' = 'KCHT' $mt 'SCAL' 'SOMMET' 0.D0 ;
  497. dummy mlapn = 'LAPN' (rv . '1LAPN') ;
  498. *mat1 = GLAPN _mt 'LINE' 'T' 'QUAF' 'Q' 'QUAF' 1.D0 ;
  499. mablo = 'BLOQUE' 'T' l4 ;
  500. mmt = 'MOTS' 'T' ;
  501. mmq = 'MOTS' 'Q' ;
  502.  
  503. matot = 'ET' ('KOPS' 'CHANINCO' mlapn mmt mmt mmt mmq)
  504. ('KOPS' 'RIMA' mablo) ;
  505. chdia = '+' ('MANUEL' 'CHPO' l4 1 'LX' ('/' 1.D0 3.14D0))
  506. ('MANUEL' 'CHPO' mt 1 'T' ('/' 1.D0 1.707D0)) ;
  507. mcmct = 'KOPS' 'CMCT' matot matot chdia ;
  508. *
  509. * Vérification
  510. *
  511. chtes = '+' ('MANUEL' 'CHPO' l4 1 'FLX' 3.14D0)
  512. ('MANUEL' 'CHPO' mt 1 'Q' 1.707D0) ;
  513. ch1 = FOIS mcmct chtes ;
  514. *
  515. *
  516. matott = 'KOPS' 'TRANSPOS' matot ;
  517. mo = 'MOTS' 'LX' 'T' ;
  518. ch2 = FOIS matot ('*' chdia (FOIS matott chtes) mo mo mo ) ;
  519. *
  520. test1 = 'MAXIMUM' ('-' ch2 ch1) 'ABS' ;
  521. *
  522. * Un deuxième test
  523. *
  524. nm = 4 ;
  525. p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
  526. bas = 'DROIT' nm p1 p2 ; dro = 'DROIT' nm p2 p3 ;
  527. hau = 'DROIT' nm p3 p4 ; gau = 'DROIT' nm p4 p1 ;
  528. cmt = bas 'ET' dro 'ET' hau 'ET' gau ;
  529. mt = 'SURFACE' cmt ;
  530. _mt = 'CHANGER' 'QUAF' mt ;
  531. discv = 'QUAF' ;
  532. discp = 'LINE' ;
  533. discg = 'LINE' ;
  534. mvp = 'MOTS' 'UX' 'UY' ;
  535. mvd = 'MOTS' 'FX' 'FY' ;
  536. mpp = 'MOTS' 'LX' ;
  537. mpd = 'MOTS' 'FLX' ;
  538. mlx = 'MOTS' 'LXX' 'LXY' ;
  539. mflx = 'MOTS' 'FLXX' 'FLXY' ;
  540. mlp = mvp 'ET' mpp 'ET' mlx ;
  541. mld = mvd 'ET' mpd 'ET' mflx ;
  542. * Matrice de rigidite
  543. rigx = GLAPN _mt discg 'UX' discv 'FX' discv 1. ;
  544. rigy = GLAPN _mt discg 'UY' discv 'FY' discv 1. ;
  545. rig = 'ET' rigx rigy ;
  546. rig = '*' rig -1.D0 ;
  547. krig = 'KOPS' 'RIMA' rig ;
  548. * Matrice de divergence
  549. div = GDIV _mt discg discv discp 1. ;
  550. kdiv = 'KOPS' 'RIMA' div ;
  551. * Gradient
  552. kgra2 = 'KOPS' 'TRANSPOS' kdiv ;
  553. kgra = 'KOPS' 'CHANINCO' kgra2 mpd mpp mvp mvd ;
  554. * Conditions aux limites
  555. mvit = gau 'ET' bas 'ET' dro ;
  556. cvit = 'MANUEL' 'CHPO' mvit mvp ('PROG' 0. 0.) ;
  557. mid = 'KOPS' 'MATIDE' mvp mvit 'MATRIK' ;
  558. mblo = 'KOPS' 'CHANINCO' mid mvp mvp mvp mflx ;
  559. mblot = 'KOPS' 'CHANINCO' mid mvp mlx mvp mvd ;
  560. cblo = 'NOMC' mvp mflx cvit ;
  561. * Lagrangien augmenté
  562. alpha = 1.D0 ;
  563. chd = 'MANUEL' 'CHPO' mvit mlx ('PROG' 1.D0 1.D0) ;
  564. * mlaga1 = 'KOPS' 'CMCT' mblot chd mblot ;
  565. mlaga = 'KOPS' 'CMCT' mblot mblot ;
  566. * 'OPTION' 'DONN' 5 ;
  567. mlaga = 'KOPS' 'CHANINCO' mlaga mvd mvp mvd mvd ;
  568. mlaga = 'KOPS' mlaga '*' alpha ;
  569. claga = 'NOMC' mflx mlx cblo ;
  570. claga = 'KOPS' mblot '*' claga ;
  571. claga = claga '*' alpha ;
  572. * Contrainte en surface
  573. fs = 'MANUEL' 'CHPO' hau 1 'UX' 1.D0 ;
  574. fsu = GMASS hau discg 'UX' discv 'FX' discv 1. fs ;
  575. *
  576. * Résolution directe
  577. *
  578. mtot = krig 'ET' kdiv 'ET' kgra 'ET' mblo 'ET' mblot 'ET' mlaga ;
  579. ftot = fsu '+' cblo '+' claga ;
  580. clim = cvit ;
  581. mtot = 'KOPS' 'CHANINCO' mtot mlp mlp mld mlp ;
  582. ftot = 'NOMC' mld mlp ftot ;
  583. *sol1 = 'KRES' mtot ftot 'CLIM' clim ;
  584. sol1 = 'KRES' mtot ftot ;
  585. vitdi = 'EXCO' mvp sol1 ;
  586. predi = 'EXCO' mpp sol1 ;
  587. lxdi = 'EXCO' mlx sol1 ;
  588. *
  589. echvit = '/' 3.1 nm ;
  590. *
  591. 'SI' graph ;
  592. vvit1 = 'VECTEUR' sol1 echvit 'DEPL' 'JAUN' ;
  593. 'TRACER' vvit1 mt 'TITR' 'vit1' ;
  594. 'FINSI' ;
  595. *
  596. chd = 'MANUEL' 'CHPO' _mt mvp ('PROG' 1.D0 1.D0) ;
  597. mcontr = mblo 'ET' kdiv ;
  598. mcontrt = mblot 'ET' kgra ;
  599. mcp = mpp 'ET' mlx ;
  600. mcd = mpd 'ET' mflx ;
  601. mlapd1 = 'KOPS' 'CMCT' mcontr chd mcontr ;
  602. mlapd2 = 'KOPS' 'CMCT' mcontr mcontr ;
  603. * Verif
  604. vec = predi '+' lxdi ;
  605. vec2 = 'NOMC' mcp mcd vec ;
  606. res1 = 'KOPS' mlapd1 '*' vec2 ;
  607. res2 = 'KOPS' mlapd2 '*' vec2 ;
  608. res3 = vec ;
  609. res3 = 'KOPS' mcontrt '*' res3 ;
  610. res3 = 'NOMC' mvd res3 mvp ;
  611. res3 = 'KOPS' mcontr '*' res3 ;
  612. test2 = 'MAXIMUM' ('-' res3 res1) 'ABS' ;
  613. test3 = 'MAXIMUM' ('-' res3 res2) 'ABS' ;
  614. 'MESSAGE' ('CHAINE' 'test1 = ' test1) ;
  615. 'MESSAGE' ('CHAINE' 'test2 = ' test2) ;
  616. 'MESSAGE' ('CHAINE' 'test3 = ' test3) ;
  617. ok1 = ('<' test1 1.D-12) ;
  618. ok2 = ('<' test2 1.D-12) ;
  619. ok3 = ('<' test3 1.D-12) ;
  620. *
  621. 'SI' interact ;
  622. 'OPTION' 'DONN' 5 ;
  623. 'FINSI' ;
  624. 'SI' ('NON' (ok1 'ET' ok2 'ET' ok3)) ;
  625. 'ERREUR' 5 ;
  626. 'SINON' ;
  627. 'MESSAGE' 'Tout sest bien passe' ;
  628. 'FINSI' ;
  629. *
  630. * End of dgibi file TEST_KOPS_CMCT
  631. *
  632. 'FIN' ;
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  

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