Télécharger lapn_impl1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : lapn_impl1.dgibi
  2. ***********************************************************
  3. ***********************************************************
  4. **** APPROCHE VF "Cell-Centred Formulation" pour la ****
  5. **** solution des ****
  6. **** Equations de 'NS' pour un gaz parfait ****
  7. **** OPERATEURS PRIM, PENT, LAPN ****
  8. **** Implicit: calcul du jacobien du residu ****
  9. **** ****
  10. **** Cas gaz monoespece, "calorically perfect" ****
  11. **** ****
  12. **** Methodes: DIAMAN2 ****
  13. **** ****
  14. **** A. BECCANTINI DRN/DMT/SEMT/LTMF MARS 2003 ****
  15. **** S. GOUNAND DEN/DM2S/SFME/LTMF AOUT 2001 ****
  16. ***********************************************************
  17. ***********************************************************
  18.  
  19. 'OPTION' 'DIME' 2 ;
  20. 'OPTION' 'ELEM' QUA4 ;
  21. 'OPTION' 'ECHO' 0;
  22. 'OPTION' 'TRAC' 'X' ;
  23.  
  24. *
  25. *** GRAPH
  26. *
  27.  
  28. GRAPH = FAUX ;
  29. * GRAPH = VRAI ;
  30.  
  31. ERRTOL = 1.0D-3 ;
  32. *
  33.  
  34. CV = PI ;
  35. MU = '*' PI PI ;
  36. KAPPA = '*' ('*' PI PI) PI ;
  37.  
  38. ***************************
  39. ***** DOMAINE SPATIAL ****
  40. ***************************
  41.  
  42.  
  43. A0 = 0.0D0 0.0D0;
  44. A1 = 1.0D0 0.0D0;
  45. A2 = 2.0D0 0.0D0;
  46. A3 = 3.0D0 0.0D0;
  47.  
  48. A0A1 = A0 'DROIT' 1 A1;
  49. A1A2 = A1 'DROIT' 1 A2;
  50. A2A3 = A2 'DROIT' 1 A3;
  51.  
  52.  
  53. DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ;
  54. DOM2 = DOM1 'PLUS' (0.0 1.0) ;
  55. DOM3 = DOM2 'PLUS' (0.0 1.0) ;
  56. DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ;
  57. DOM5 = DOM4 'PLUS' (0.0 1.0) ;
  58. DOM6 = DOM5 'PLUS' (0.0 1.0) ;
  59. DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ;
  60. DOM8 = DOM7 'PLUS' (0.0 1.0) ;
  61. DOM9 = DOM8 'PLUS' (0.0 1.0) ;
  62.  
  63. DOM9 = DOM9 'COULEUR' 'ROUG ' ;
  64. DOM6 = DOM6 'COULEUR' 'VERT' ;
  65. DOM7 = DOM7 'COULEUR' 'JAUN' ;
  66.  
  67. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
  68. DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ;
  69.  
  70. *
  71. **** On calcule le JACOBIAN dans le centre de DOM9;
  72. * qui doit dependre de la valeur en DOM9, DOM6, mais il ne doit
  73. * pas dependre de DOM7
  74. *
  75.  
  76. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  77.  
  78. $DOM6 = 'MODELISER' DOM6 'EULER';
  79. $DOM7 = 'MODELISER' DOM7 'EULER';
  80. $DOM9 = 'MODELISER' DOM9 'EULER';
  81.  
  82. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  83.  
  84. TDOM6 = 'DOMA' $DOM6 'VF';
  85. TDOM7 = 'DOMA' $DOM7 'VF';
  86. TDOM9 = 'DOMA' $DOM9 'VF';
  87.  
  88. MDOM6 = TDOM6 . 'QUAF' ;
  89. MDOM7 = TDOM7 . 'QUAF' ;
  90. MDOM9 = TDOM9 . 'QUAF' ;
  91.  
  92. **** old stuff $DOMTOT = 'DOMA' DOMTOT ;
  93.  
  94. MDOMTOT = TDOMTOT . 'QUAF' ;
  95.  
  96. 'ELIMINATION' (MDOMTOT ET MDOM6) 0.0001 ;
  97. 'ELIMINATION' (MDOMTOT ET MDOM7) 0.0001 ;
  98. 'ELIMINATION' (MDOMTOT ET MDOM9) 0.0001 ;
  99.  
  100. RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
  101. RN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 ;
  102. PN0 = 'BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE') ;
  103. GAMMAN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.4 ;
  104.  
  105. CSONN = (GAMMAN '*' PN0) '/' RN0 ;
  106. CSONN = 'KOPS' CSONN '**' 0.5 ;
  107. UXN0 = 0.2 * CSONN ;
  108. UYN0 = 0.3 * CSONN ;
  109.  
  110. GN0 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (
  111. ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
  112. ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET')) ;
  113.  
  114.  
  115. *
  116. *** retgd
  117. *
  118.  
  119. ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0)) ;
  120. RETN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  121. ((PN0 '/' (GAMMAN '-' 1.0)) '+' ECIN) ;
  122.  
  123. CV=PI ;
  124. TN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  125. ((PN0 '/' (GAMMAN '-' 1.0)) '/' (RN0 '*' CV)) ;
  126.  
  127. *
  128. **** BC on temperature
  129. *
  130.  
  131. cnt = 'CONTOUR' DOMTOT ;
  132. $cnt = 'MODELISER' cnt 'EULER' ;
  133. tcnt = 'DOMA' $cnt 'VF' ;
  134. mcnt = tcnt . 'QUAF' ;
  135. 'ELIMINATION' (mcnt et mdomtot) 0.1D-6 ;
  136.  
  137. cvnt = 'ELEM' 1 ('DOMA' $cnt 'CENTRE') ;
  138. cdirt = 'DIFF' ('DOMA' $cnt 'CENTRE') cvnt ;
  139. tnlim1 = 'MANUEL' 'CHPO' cdirt 1 'SCAL' 1.15 ;
  140. tnlim2 = 'MANUEL' 'CHPO' cvnt 2 'P1DX' 0.77 'P1DY' 0.79 ;
  141. qlim = ('NOMC' ('MOTS' 'P1DX' 'P1DY') tnlim2 ('MOTS' 'UX' 'UY'))
  142. '*' (kappa '*' -1) ;
  143.  
  144. *
  145. **** BC on speed
  146. *
  147.  
  148. cvnv = 'ELEM' ('NBEL' ('DOMA' $cnt 'CENTRE'))
  149. ('DOMA' $cnt 'CENTRE') ;
  150. cdirv = 'DIFF' ('DOMA' $cnt 'CENTRE') cvnv ;
  151. vnlim1 = 'MANUEL' 'CHPO' cdirv 2 'UX' 0.11 'UY' 0.13 ;
  152. vnlim2 = 'MANUEL' 'CHPO' cvnv 4 'P1DX' 0.12 'P1DY' 0.29
  153. 'P2DX' 0.15 'P2DY' 0.119 ;
  154. taulim = 'MANUEL' 'CHPO' cvnv 3 'TXX' 1.17 'TXY' 0.11 'TYY' 0.15 ;
  155.  
  156.  
  157. VIT PRES = PRIM 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  158.  
  159. ERR1 = 'MAXIMUM' (PRES '-' PN0) 'ABS' ;
  160. ERR2 = 'MAXIMUM' (GN0 '-' (RN0 '*' VIT ('MOTS' 'SCAL' 'SCAL')
  161. ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) 'ABS' ;
  162.  
  163. 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ) 'ABS' ) > 1.0D-6) ;
  164. 'MESSAGE' 'Problem 0' ;
  165. 'ERREUR' 5 ;
  166. 'FINSI' ;
  167.  
  168.  
  169. 'SI' GRAPH;
  170. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET'
  171. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
  172. 'FINSI' ;
  173.  
  174. *
  175. ***** Les valeurs en $DOM9 'CENTRE'
  176. *
  177.  
  178. PCON = ('DOMA' $DOM9 'CENTRE') 'POIN' 1 ;
  179. ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
  180. cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ;
  181. ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
  182.  
  183.  
  184. ***********************
  185. **** Les CHPOINTs ****
  186. ***********************
  187.  
  188. RN = 'COPIER' RN0 ;
  189.  
  190. GN = 'COPIER' GN0 ;
  191.  
  192. RETN = 'COPIER' RETN0 ;
  193.  
  194. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  195.  
  196. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  197.  
  198. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  199. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  200. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  201. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  202. tnlim1 tnlim2 ;
  203. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  204. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  205. vnlim1 vnlim2 ;
  206. *
  207. JACO CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  208. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  209. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  210. * 'TAUI' tauimp
  211. LISTINCO ;
  212.  
  213. ***********************
  214. ***** Le residu *******
  215. ***********************
  216.  
  217. DEBRN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  218. DEBGNX0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  219. DEBGNY0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  220. DEBRETN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  221.  
  222.  
  223. *****************************************************
  224. *****************************************************
  225. ******* TEST1 ***************************************
  226. *****************************************************
  227. *****************************************************
  228. *
  229. * On compare le jacobien et la variation du residu
  230. * en $DOM9 'CENTRE' par rapport à une variation
  231. * infinitésimal en $DOM9 'CENTRE'
  232. *
  233.  
  234. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  235. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  236. 'NATURE' 'DISCRET') 'ET'
  237. ('MANUEL' 'CHPO' ('DOMA' $DOM9 CENTRE) 4 'RN' 1.0
  238. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  239. 'NATURE' 'DISCRET') ;
  240. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  241. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  242. 'NATURE' 'DISCRET') 'ET'
  243. ('MANUEL' 'CHPO' ('DOMA' $DOM9 CENTRE) 4 'RN' 0.0
  244. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0
  245. 'NATURE' 'DISCRET') ;
  246. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  247. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  248. 'NATURE' 'DISCRET') 'ET'
  249. ('MANUEL' 'CHPO' ('DOMA' $DOM9 CENTRE) 4 'RN' 0.0
  250. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0
  251. 'NATURE' 'DISCRET') ;
  252. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  253. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  254. 'NATURE' 'DISCRET') 'ET'
  255. ('MANUEL' 'CHPO' ('DOMA' $DOM9 CENTRE) 4 'RN' 0.0
  256. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0
  257. 'NATURE' 'DISCRET') ;
  258.  
  259.  
  260. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  261.  
  262. *
  263. *
  264. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  265. * dRES_GXN '/' dRN ('RUXN') ;
  266. * dRES_GYN '/' dRN ('RUYN') ;
  267. * dRES_RETN '/' dRN ('RETN') ;
  268. * DDGX contient ...
  269. *
  270. *
  271.  
  272. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  273. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  274. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  275.  
  276. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  277. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  278. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  279. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  280.  
  281. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  282. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  283. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  284. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  285.  
  286. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  287. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  288. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  289. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  290.  
  291. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  292. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  293. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  294. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  295.  
  296.  
  297. *********************************************************************
  298. *********************************************************************
  299. ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) *******
  300. *********************************************************************
  301. *********************************************************************
  302.  
  303. DELTA = 1.0D-6 ;
  304. ro1 = ro0 '*' (1 '+' DELTA) ;
  305. RNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ro1 ;
  306.  
  307. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM9 ;
  308.  
  309. GN = 'COPIER' GN0 ;
  310.  
  311. RETN = 'COPIER' RETN0 ;
  312.  
  313. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  314. CV = PI ;
  315. MU = '*' PI PI ;
  316. KAPPA = '*' ('*' PI PI) PI ;
  317. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  318. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  319. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  320. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  321. tnlim1 tnlim2 ;
  322. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  323. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  324. vnlim1 vnlim2 ;
  325. *
  326. *
  327. *
  328. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  329. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  330. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  331. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  332. * 'TAUI' tauimp
  333. LISTINCO ;
  334.  
  335. ***********************
  336. ***** Le residu *******
  337. ***********************
  338.  
  339. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  340. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  341. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  342. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  343.  
  344. *
  345. **** On calcule le jacobien numeriquement
  346. *
  347.  
  348. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  349. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  350. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  351. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  352.  
  353.  
  354. ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
  355. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
  356. 'SI' (ERR1 > ERRTOL) ;
  357. 'MESSAGE' 'Problem 1';
  358. 'ERREUR' 5 ;
  359. 'FINSI' ;
  360.  
  361. ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
  362. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  363. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
  364. 'SI' (ERR1 > ERRTOL) ;
  365. 'MESSAGE' 'Problem 2';
  366. 'ERREUR' 5 ;
  367. 'FINSI' ;
  368.  
  369. ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
  370. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  371. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
  372. 'SI' (ERR1 > ERRTOL) ;
  373. 'MESSAGE' 'Problem 3';
  374. 'ERREUR' 5 ;
  375. 'FINSI' ;
  376.  
  377. ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
  378. (ro0 '/' (ret0 '*' cson0)) ;
  379. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
  380. 'SI' (ERR1 > ERRTOL) ;
  381. 'MESSAGE' 'Problem 4';
  382. 'ERREUR' 5 ;
  383. 'FINSI' ;
  384.  
  385.  
  386. ***************************************************************************
  387. ***************************************************************************
  388. ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) *****
  389. ***************************************************************************
  390. ***************************************************************************
  391.  
  392.  
  393. DELTA = 1.0D-6 ;
  394. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  395. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  396. gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ;
  397. GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx1 gny0) ;
  398.  
  399.  
  400. RN = 'COPIER' RN0 ;
  401.  
  402. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
  403.  
  404. RETN = 'COPIER' RETN0 ;
  405.  
  406. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  407. CV = PI ;
  408. MU = '*' PI PI ;
  409. KAPPA = '*' ('*' PI PI) PI ;
  410. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  411. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  412. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  413. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  414. tnlim1 tnlim2 ;
  415. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  416. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  417. vnlim1 vnlim2 ;
  418. *
  419. *
  420. *
  421. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  422. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  423. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  424. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  425. * 'TAUI' tauimp
  426. LISTINCO ;
  427.  
  428. ***********************
  429. ***** Le residu *******
  430. ***********************
  431.  
  432. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  433. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  434. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  435. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  436.  
  437. *
  438. **** On calcule le jacobien numeriquement
  439. *
  440.  
  441. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  442. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  443. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  444. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  445.  
  446. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  447. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
  448. 'SI' (ERR1 > ERRTOL) ;
  449. 'MESSAGE' 'Problem 5';
  450. 'ERREUR' 5 ;
  451. 'FINSI' ;
  452.  
  453. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
  454. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
  455. 'SI' (ERR1 > ERRTOL) ;
  456. 'MESSAGE' 'Problem 6';
  457. 'ERREUR' 5 ;
  458. 'FINSI' ;
  459.  
  460. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
  461. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
  462. 'SI' (ERR1 > ERRTOL) ;
  463. 'MESSAGE' 'Problem 7';
  464. 'ERREUR' 5 ;
  465. 'FINSI' ;
  466.  
  467. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
  468. (ro0 / ret0) ;
  469. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
  470. 'SI' (ERR1 > ERRTOL) ;
  471. 'MESSAGE' 'Problem 8';
  472. 'ERREUR' 5 ;
  473. 'FINSI' ;
  474.  
  475.  
  476. ***************************************************************************
  477. ***************************************************************************
  478. ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) ******
  479. ***************************************************************************
  480. ***************************************************************************
  481.  
  482.  
  483. DELTA = 1.0D-6 ;
  484.  
  485. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  486. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  487. gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ;
  488. GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx0 gny1) ;
  489.  
  490.  
  491. RN = 'COPIER' RN0 ;
  492.  
  493. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
  494.  
  495. RETN = 'COPIER' RETN0 ;
  496.  
  497. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  498. CV = PI ;
  499. MU = '*' PI PI ;
  500. KAPPA = '*' ('*' PI PI) PI ;
  501. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  502. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  503. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  504. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  505. tnlim1 tnlim2 ;
  506. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  507. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  508. vnlim1 vnlim2 ;
  509. *
  510. *
  511. *
  512. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  513. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  514. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  515. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  516. * 'TAUI' tauimp
  517. LISTINCO ;
  518.  
  519. ***********************
  520. ***** Le residu *******
  521. ***********************
  522.  
  523. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  524. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  525. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  526. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  527.  
  528. *
  529. **** On calcule le jacobien numeriquement
  530. *
  531.  
  532. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  533. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  534. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  535. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  536.  
  537. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  538. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
  539. 'SI' (ERR1 > ERRTOL) ;
  540. 'MESSAGE' 'Problem 9';
  541. 'ERREUR' 5 ;
  542. 'FINSI' ;
  543.  
  544. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ;
  545. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
  546. 'SI' (ERR1 > ERRTOL) ;
  547. 'MESSAGE' 'Problem 10';
  548. 'ERREUR' 5 ;
  549. 'FINSI' ;
  550.  
  551. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
  552. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
  553. 'SI' (ERR1 > ERRTOL) ;
  554. 'MESSAGE' 'Problem 11';
  555. 'ERREUR' 5 ;
  556. 'FINSI' ;
  557.  
  558.  
  559. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*'
  560. (ro0 / ret0) ;
  561. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
  562. 'SI' (ERR1 > ERRTOL) ;
  563. 'MESSAGE' 'Problem 12';
  564. 'ERREUR' 5 ;
  565. 'FINSI' ;
  566.  
  567.  
  568. ***************************************************************************
  569. ***************************************************************************
  570. ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ******
  571. ***************************************************************************
  572. ***************************************************************************
  573.  
  574.  
  575. DELTA = 1.0D-6 ;
  576. ret1 = ret0 '*' (1. '+' DELTA) ;
  577. RETNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ret1 ;
  578.  
  579. RN = 'COPIER' RN0 ;
  580.  
  581. GN = 'COPIER' GN0 ;
  582.  
  583. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM9 ;
  584.  
  585. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  586. CV = PI ;
  587. MU = '*' PI PI ;
  588. KAPPA = '*' ('*' PI PI) PI ;
  589. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  590. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  591. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  592. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  593. tnlim1 tnlim2 ;
  594. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  595. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  596. vnlim1 vnlim2 ;
  597. *
  598. *
  599. *
  600. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  601. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  602. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  603. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  604. * 'TAUI' tauimp
  605. LISTINCO ;
  606.  
  607. ***********************
  608. ***** Le residu *******
  609. ***********************
  610.  
  611. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  612. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  613. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  614. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  615.  
  616. *
  617. **** On calcule le jacobien numeriquement
  618. *
  619.  
  620. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  621. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  622. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  623. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  624.  
  625. ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ;
  626. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
  627. 'SI' (ERR1 > ERRTOL) ;
  628. 'MESSAGE' 'Problem 13';
  629. 'ERREUR' 5 ;
  630. 'FINSI' ;
  631.  
  632. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
  633. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  634. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
  635. 'SI' (ERR1 > ERRTOL) ;
  636. 'MESSAGE' 'Problem 14';
  637. 'ERREUR' 5 ;
  638. 'FINSI' ;
  639.  
  640. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*'
  641. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  642. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
  643. 'SI' (ERR1 > ERRTOL) ;
  644. 'MESSAGE' 'Problem 15';
  645. 'ERREUR' 5 ;
  646. 'FINSI' ;
  647.  
  648.  
  649. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
  650. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
  651. 'SI' (ERR1 > ERRTOL) ;
  652. 'MESSAGE' 'Problem 16';
  653. 'ERREUR' 5 ;
  654. 'FINSI' ;
  655. *****************************************************
  656. *****************************************************
  657. ******* TEST2 ***************************************
  658. *****************************************************
  659. *****************************************************
  660. *
  661. * On compare le jacobien et la variation du residu
  662. * en $DOM9 'CENTRE' par rapport à une variation
  663. * infinitésimal en $DOM6 'CENTRE'
  664. *
  665.  
  666. PCELL = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
  667. ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
  668. cson0 = 'EXTRAIRE' CSONN PCELL 'SCAL' ;
  669. ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;
  670.  
  671.  
  672. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  673. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  674. 'NATURE' 'DISCRET') 'ET'
  675. ('MANUEL' 'CHPO' ('DOMA' $DOM6 CENTRE) 4 'RN' 1.0
  676. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  677. 'NATURE' 'DISCRET') ;
  678. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  679. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  680. 'NATURE' 'DISCRET') 'ET'
  681. ('MANUEL' 'CHPO' ('DOMA' $DOM6 CENTRE) 4 'RN' 0.0
  682. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0
  683. 'NATURE' 'DISCRET') ;
  684. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  685. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  686. 'NATURE' 'DISCRET') 'ET'
  687. ('MANUEL' 'CHPO' ('DOMA' $DOM6 CENTRE) 4 'RN' 0.0
  688. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0
  689. 'NATURE' 'DISCRET') ;
  690. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  691. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  692. 'NATURE' 'DISCRET') 'ET'
  693. ('MANUEL' 'CHPO' ('DOMA' $DOM6 CENTRE) 4 'RN' 0.0
  694. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0
  695. 'NATURE' 'DISCRET') ;
  696.  
  697.  
  698. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  699.  
  700. *
  701. *
  702. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  703. * dRES_GXN '/' dRN ('RUXN') ;
  704. * dRES_GYN '/' dRN ('RUYN') ;
  705. * dRES_RETN '/' dRN ('RETN') ;
  706. * DDGX contient ...
  707. *
  708. *
  709.  
  710. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  711. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  712. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  713.  
  714. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  715. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  716. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  717. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  718.  
  719. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  720. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  721. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  722. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  723.  
  724. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  725. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  726. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  727. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  728.  
  729. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  730. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  731. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  732. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  733.  
  734.  
  735.  
  736. *********************************************************************
  737. *********************************************************************
  738. ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) *******
  739. *********************************************************************
  740. *********************************************************************
  741.  
  742. DELTA = 1.0D-6 ;
  743. ro1 = ro0 '*' (1 '+' DELTA) ;
  744. RNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ro1 ;
  745.  
  746. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM6 ;
  747.  
  748. GN = 'COPIER' GN0 ;
  749.  
  750. RETN = 'COPIER' RETN0 ;
  751.  
  752. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  753. CV = PI ;
  754. MU = '*' PI PI ;
  755. KAPPA = '*' ('*' PI PI) PI ;
  756. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  757. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  758. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  759. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  760. tnlim1 tnlim2 ;
  761. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  762. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  763. vnlim1 vnlim2 ;
  764. *
  765. *
  766. *
  767. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  768. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  769. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  770. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  771. LISTINCO ;
  772.  
  773. ***********************
  774. ***** Le residu *******
  775. ***********************
  776.  
  777. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  778. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  779. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  780. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  781.  
  782.  
  783. *
  784. **** On calcule le jacobien numeriquement
  785. *
  786.  
  787. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  788. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  789. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  790. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  791.  
  792.  
  793. ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
  794. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
  795. 'SI' (ERR1 > ERRTOL) ;
  796. 'MESSAGE' 'Problem 1';
  797. 'ERREUR' 5 ;
  798. 'FINSI' ;
  799.  
  800. ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
  801. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  802. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
  803. 'SI' (ERR1 > ERRTOL) ;
  804. 'MESSAGE' 'Problem 2';
  805. 'ERREUR' 5 ;
  806. 'FINSI' ;
  807.  
  808. ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
  809. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  810. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
  811. 'SI' (ERR1 > ERRTOL) ;
  812. 'MESSAGE' 'Problem 3';
  813. 'ERREUR' 5 ;
  814. 'FINSI' ;
  815.  
  816. ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
  817. (ro0 '/' (ret0 '*' cson0)) ;
  818. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
  819. 'SI' (ERR1 > ERRTOL) ;
  820. 'MESSAGE' 'Problem 4';
  821. 'ERREUR' 5 ;
  822. 'FINSI' ;
  823.  
  824. ***************************************************************************
  825. ***************************************************************************
  826. ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) *****
  827. ***************************************************************************
  828. ***************************************************************************
  829.  
  830. DELTA = 1.0D-6 ;
  831. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  832. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  833. gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ;
  834. GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx1 gny0) ;
  835.  
  836.  
  837. RN = 'COPIER' RN0 ;
  838.  
  839. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
  840.  
  841. RETN = 'COPIER' RETN0 ;
  842.  
  843. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  844. CV = PI ;
  845. MU = '*' PI PI ;
  846. KAPPA = '*' ('*' PI PI) PI ;
  847. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  848. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  849. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  850. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  851. tnlim1 tnlim2 ;
  852. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  853. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  854. vnlim1 vnlim2 ;
  855. *
  856. *
  857. *
  858. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  859. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  860. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  861. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  862. LISTINCO ;
  863.  
  864. ***********************
  865. ***** Le residu *******
  866. ***********************
  867.  
  868. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  869. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  870. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  871. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  872.  
  873. *
  874. **** On calcule le jacobien numeriquement
  875. *
  876.  
  877. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  878. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  879. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  880. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  881.  
  882. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  883. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
  884. 'SI' (ERR1 > ERRTOL) ;
  885. 'MESSAGE' 'Problem 5';
  886. 'ERREUR' 5 ;
  887. 'FINSI' ;
  888.  
  889. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
  890. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
  891. 'SI' (ERR1 > ERRTOL) ;
  892. 'MESSAGE' 'Problem 6';
  893. 'ERREUR' 5 ;
  894. 'FINSI' ;
  895.  
  896. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
  897. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
  898. 'SI' (ERR1 > ERRTOL) ;
  899. 'MESSAGE' 'Problem 7';
  900. 'ERREUR' 5 ;
  901. 'FINSI' ;
  902.  
  903.  
  904. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
  905. (ro0 / ret0) ;
  906. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
  907. 'SI' (ERR1 > ERRTOL) ;
  908. 'MESSAGE' 'Problem 8';
  909. 'ERREUR' 5 ;
  910. 'FINSI' ;
  911.  
  912.  
  913. ***************************************************************************
  914. ***************************************************************************
  915. ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) ******
  916. ***************************************************************************
  917. ***************************************************************************
  918.  
  919.  
  920. DELTA = 1.0D-6 ;
  921.  
  922. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  923. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  924. gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ;
  925. GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx0 gny1) ;
  926.  
  927.  
  928. RN = 'COPIER' RN0 ;
  929.  
  930. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
  931.  
  932. RETN = 'COPIER' RETN0 ;
  933.  
  934. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  935. CV = PI ;
  936. MU = '*' PI PI ;
  937. KAPPA = '*' ('*' PI PI) PI ;
  938. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  939. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  940. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  941. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  942. tnlim1 tnlim2 ;
  943. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  944. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  945. vnlim1 vnlim2 ;
  946. *
  947. *
  948. *
  949. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  950. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  951. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  952. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  953. LISTINCO ;
  954.  
  955. ***********************
  956. ***** Le residu *******
  957. ***********************
  958.  
  959. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  960. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  961. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  962. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  963.  
  964.  
  965. *
  966. **** On calcule le jacobien numeriquement
  967. *
  968.  
  969. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  970. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  971. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  972. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  973.  
  974. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  975. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
  976. 'SI' (ERR1 > ERRTOL) ;
  977. 'MESSAGE' 'Problem 9';
  978. 'ERREUR' 5 ;
  979. 'FINSI' ;
  980.  
  981. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ;
  982. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
  983. 'SI' (ERR1 > ERRTOL) ;
  984. 'MESSAGE' 'Problem 10';
  985. 'ERREUR' 5 ;
  986. 'FINSI' ;
  987.  
  988. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
  989. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
  990. 'SI' (ERR1 > ERRTOL) ;
  991. 'MESSAGE' 'Problem 11';
  992. 'ERREUR' 5 ;
  993. 'FINSI' ;
  994.  
  995. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*'
  996. (ro0 / ret0) ;
  997. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
  998. 'SI' (ERR1 > ERRTOL) ;
  999. 'MESSAGE' 'Problem 12';
  1000. 'ERREUR' 5 ;
  1001. 'FINSI' ;
  1002.  
  1003.  
  1004. ***************************************************************************
  1005. ***************************************************************************
  1006. ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ******
  1007. ***************************************************************************
  1008. ***************************************************************************
  1009.  
  1010.  
  1011. DELTA = 1.0D-6 ;
  1012. ret1 = ret0 '*' (1. '+' DELTA) ;
  1013. RETNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ret1 ;
  1014.  
  1015. RN = 'COPIER' RN0 ;
  1016.  
  1017. GN = 'COPIER' GN0 ;
  1018.  
  1019. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM6 ;
  1020.  
  1021. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1022. CV = PI ;
  1023. MU = '*' PI PI ;
  1024. KAPPA = '*' ('*' PI PI) PI ;
  1025. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1026. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1027. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  1028. ('MOTS' 'SCAL') ('MOTS' 'P1DX' 'P1DY') T0
  1029. tnlim1 tnlim2 ;
  1030. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMAN2'
  1031. ('MOTS' 'UX' 'UY') ('MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY') V0
  1032. vnlim1 vnlim2 ;
  1033. *
  1034. *
  1035. *
  1036. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' ;
  1037. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1038. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1039. 'VIMP' vnlim1 'TAUI' taulim 'QIMP' qlim 'TIMP' tnlim1
  1040. LISTINCO ;
  1041.  
  1042. ***********************
  1043. ***** Le residu *******
  1044. ***********************
  1045.  
  1046. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1047. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1048. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1049. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1050.  
  1051. *
  1052. **** On calcule le jacobien numeriquement
  1053. *
  1054.  
  1055. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  1056. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  1057. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  1058. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  1059.  
  1060. ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ;
  1061. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
  1062. 'SI' (ERR1 > ERRTOL) ;
  1063. 'MESSAGE' 'Problem 13';
  1064. 'ERREUR' 5 ;
  1065. 'FINSI' ;
  1066.  
  1067.  
  1068. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
  1069. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1070. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
  1071. 'SI' (ERR1 > ERRTOL) ;
  1072. 'MESSAGE' 'Problem 14';
  1073. 'ERREUR' 5 ;
  1074. 'FINSI' ;
  1075.  
  1076. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*'
  1077. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1078. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
  1079. 'SI' (ERR1 > ERRTOL) ;
  1080. 'MESSAGE' 'Problem 15';
  1081. 'ERREUR' 5 ;
  1082. 'FINSI' ;
  1083.  
  1084.  
  1085. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
  1086. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
  1087. 'SI' (ERR1 > ERRTOL) ;
  1088. 'MESSAGE' 'Problem 16';
  1089. 'ERREUR' 5 ;
  1090. 'FINSI' ;
  1091.  
  1092.  
  1093. *****************************************************
  1094. *****************************************************
  1095. ******* TEST3 ***************************************
  1096. *****************************************************
  1097. *****************************************************
  1098. *
  1099. * On observe que la variation du residu
  1100. * en $DOM9 'CENTRE' par rapport à une variation
  1101. * infinitésimal en $DOM7 'CENTRE' doit etre nulle.
  1102. * Donc les elements du jacobien relatifs à ça
  1103. * doivent etre nuls.
  1104. *
  1105.  
  1106. PCELL = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
  1107.  
  1108. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1109. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  1110. 'NATURE' 'DISCRET') 'ET'
  1111. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 4 'RN' 1.0
  1112. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  1113. 'NATURE' 'DISCRET') ;
  1114. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1115. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  1116. 'NATURE' 'DISCRET') 'ET'
  1117. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 4 'RN' 0.0
  1118. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0
  1119. 'NATURE' 'DISCRET') ;
  1120. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1121. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  1122. 'NATURE' 'DISCRET') 'ET'
  1123. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 4 'RN' 0.0
  1124. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0
  1125. 'NATURE' 'DISCRET') ;
  1126. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1127. 4 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0
  1128. 'NATURE' 'DISCRET') 'ET'
  1129. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 4 'RN' 0.0
  1130. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0
  1131. 'NATURE' 'DISCRET') ;
  1132.  
  1133. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  1134.  
  1135. *
  1136. *
  1137. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  1138. * dRES_GXN '/' dRN ('RUXN') ;
  1139. * dRES_GYN '/' dRN ('RUYN') ;
  1140. * dRES_RETN '/' dRN ('RETN') ;
  1141. * DDGX contient ...
  1142. *
  1143. *
  1144.  
  1145. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  1146. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  1147. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  1148.  
  1149. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  1150. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  1151. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  1152. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  1153.  
  1154. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  1155. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  1156. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  1157. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  1158.  
  1159. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  1160. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  1161. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  1162. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  1163.  
  1164. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  1165. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  1166. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  1167. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  1168.  
  1169. 'MESSAGE' ('CHAINE' 'DRR =' DRR ' DGXR =' DGXR) ;
  1170. 'MESSAGE' ('CHAINE' 'DGYR=' DGYR ' DRETR=' DRETR) ;
  1171. 'MESSAGE' ('CHAINE' 'DRGX =' DRGX ' DGXGX =' DGXGX) ;
  1172. 'MESSAGE' ('CHAINE' 'DGYGX=' DGYGX ' DRETGX=' DRETGX) ;
  1173. 'MESSAGE' ('CHAINE' 'DRGY =' DRGY ' DGXGY =' DGXGY) ;
  1174. 'MESSAGE' ('CHAINE' 'DGYGY=' DGYGY ' DRETGY=' DRETGY) ;
  1175. 'MESSAGE' ('CHAINE' 'DRRET =' DRRET ' DGXRET =' DGXRET) ;
  1176. 'MESSAGE' ('CHAINE' 'DGYRET=' DGYRET ' DRETRET=' DRETRET) ;
  1177.  
  1178. 'SI' (('MAXIMUM'
  1179. ('PROG' DRR DGXR DGYR DRETR
  1180. DRGX DGXGX DGYGX DRETGX
  1181. DRGY DGXGY DGYGY DRETGY
  1182. DRRET DGXRET DGYRET DRETRET ) 'ABS' )
  1183. > ERRTOL) ;
  1184. 'MESSAGE' 'Problem 17' ;
  1185. 'ERREUR' 5 ;
  1186. 'FINSI' ;
  1187.  
  1188. 'FIN' ;
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  

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