Télécharger kopscmct2.dgibi

Retour à la liste

Numérotation des lignes :

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

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