Télécharger lapn_impl3D.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : lapn_impl3D.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. ***********************************************************
  6. **** APPROCHE VF "Cell-Centered Formulation" pour la ****
  7. **** solution des ****
  8. **** Equations d'Euler pour un gaz parfait ****
  9. **** OPERATEURS PRIM, PRET, LAPN ****
  10. **** Implicit: calcul du jacobien du residu ****
  11. **** ****
  12. **** Cas gaz monoespece, "calorically perfect" ****
  13. **** 3D ****
  14. **** ****
  15. **** Methodes: DIAMANT ****
  16. **** ****
  17. **** A. BECCANTINI SFME/LTMF AOUT 2001 ****
  18. **** S. GOUNAND DEN/DM2S/SFME/LTMF AOUT 2001 ****
  19. ***********************************************************
  20. ***********************************************************
  21.  
  22. 'OPTION' 'DIME' 3
  23. 'ELEM' 'CUB8'
  24. 'ECHO' 0
  25. 'TRAC' 'X' ;
  26.  
  27. *
  28. *** GRAPH
  29. *
  30.  
  31. GRAPH = FAUX ;
  32. * GRAPH = VRAI ;
  33.  
  34. ERRTOL = 1.0D-3 ;
  35.  
  36. ***************************
  37. ***** DOMAINE SPATIAL ****
  38. ***************************
  39.  
  40.  
  41. A0 = 0.0D0 0.0D0 0.0D0;
  42. A1 = 1.0D0 0.0D0 0.0D0;
  43. A2 = 1.0D0 1.0D0 0.0D0;
  44. A3 = 0.0D0 1.0D0 0.0D0;
  45.  
  46. SUR1 = 'MANUEL' 'QUA4' A0 A1 A2 A3 ;
  47. DOM1 = SUR1 'VOLUME' 'TRAN' 1 (0.0 0.0 1.0) ;
  48.  
  49. DOM2 = DOM1 'PLUS' (1.0 0.0 0.0) ;
  50. DOM3 = DOM1 'PLUS' (-1.0 0.0 0.0) ;
  51. DOM4 = DOM1 'PLUS' (0.0 1.0 0.0) ;
  52. DOM5 = DOM1 'PLUS' (0.0 -1.0 0.0) ;
  53. DOM6 = DOM1 'PLUS' (1.0 1.0 0.0) ;
  54. DOM7 = DOM1 'PLUS' (-1.0 -1.0 0.0) ;
  55. DOM8 = DOM1 'PLUS' (1.0 -1.0 0.0) ;
  56. DOM9 = DOM1 'PLUS' (-1.0 1.0 0.0) ;
  57.  
  58. DOM10 = DOM1 'PLUS' (0.0 0.0 1.0) ;
  59. DOM11 = DOM1 'PLUS' (1.0 0.0 1.0) ;
  60. DOM12 = DOM1 'PLUS' (-1.0 0.0 1.0) ;
  61. DOM13 = DOM1 'PLUS' (0.0 1.0 1.0) ;
  62. DOM14 = DOM1 'PLUS' (0.0 -1.0 1.0) ;
  63. DOM15 = DOM1 'PLUS' (1.0 1.0 1.0) ;
  64. DOM16 = DOM1 'PLUS' (-1.0 -1.0 1.0) ;
  65. DOM17 = DOM1 'PLUS' (1.0 -1.0 1.0) ;
  66. DOM18 = DOM1 'PLUS' (-1.0 1.0 1.0) ;
  67.  
  68. DOM19 = DOM1 'PLUS' (0.0 0.0 -1.0) ;
  69. DOM20 = DOM1 'PLUS' (1.0 0.0 -1.0) ;
  70. DOM21 = DOM1 'PLUS' (-1.0 0.0 -1.0) ;
  71. DOM22 = DOM1 'PLUS' (0.0 1.0 -1.0) ;
  72. DOM23 = DOM1 'PLUS' (0.0 -1.0 -1.0) ;
  73. DOM24 = DOM1 'PLUS' (1.0 1.0 -1.0) ;
  74. DOM25 = DOM1 'PLUS' (-1.0 -1.0 -1.0) ;
  75. DOM26 = DOM1 'PLUS' (1.0 -1.0 -1.0) ;
  76. DOM27 = DOM1 'PLUS' (-1.0 1.0 -1.0) ;
  77.  
  78. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5
  79. 'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ET' DOM10
  80. 'ET' DOM11 'ET' DOM12 'ET' DOM13 'ET' DOM14 'ET' DOM15
  81. 'ET' DOM16 'ET' DOM17 'ET' DOM18 'ET' DOM19 'ET' DOM20
  82. 'ET' DOM21 'ET' DOM22 'ET' DOM23 'ET' DOM24 'ET' DOM25
  83. 'ET' DOM26 'ET' DOM27 ;
  84.  
  85. 'ELIMINATION' DOMTOT 0.0001 ;
  86.  
  87. *
  88. **** Perturbation du domaine
  89. *
  90.  
  91. CHPBRU = ('NOMC' 'UX' ('BRUI' 'BLAN' 'UNIF' 0.0 0.4 DOMTOT)
  92. 'NATU' 'DISCRET') 'ET'
  93. ('NOMC' 'UY' ('BRUI' 'BLAN' 'UNIF' 0.0 0.2 DOMTOT)
  94. 'NATU' 'DISCRET') 'ET'
  95. ('NOMC' 'UZ' ('BRUI' 'BLAN' 'UNIF' 0.0 0.3 DOMTOT)
  96. 'NATU' 'DISCRET');
  97.  
  98. 'FORME' CHPBRU ;
  99.  
  100.  
  101. *
  102. **** On calcule le JACOBIAN dans le centre de DOM27;
  103. *
  104.  
  105.  
  106. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  107. $DOM1 = 'MODELISER' DOM1 'EULER';
  108. $DOM27 = 'MODELISER' DOM27 'EULER';
  109.  
  110. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  111. TDOM1 = 'DOMA' $DOM1 'VF';
  112. TDOM27 = 'DOMA' $DOM27 'VF';
  113.  
  114. MDOM1 = TDOM1 . 'QUAF' ;
  115. MDOM27 = TDOM27 . 'QUAF' ;
  116. MDOMTOT = TDOMTOT . 'QUAF' ;
  117.  
  118. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  119. 'ELIMINATION' (MDOMTOT ET MDOM27) 0.0001 ;
  120.  
  121. RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
  122. RN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 ;
  123. PN0 = 'BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE') ;
  124. GAMMAN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 1.4 ;
  125.  
  126. CSONN = (GAMMAN '*' PN0) '/' RN0 ;
  127. CSONN = 'KOPS' CSONN '**' 0.5 ;
  128. UXN0 = 0.2 * CSONN ;
  129. UYN0 = 0.3 * CSONN ;
  130. UZN0 = 0.4 * CSONN ;
  131.  
  132. GN0 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (
  133. ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
  134. ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET') 'ET'
  135. ('NOMC' (RN0 '*' UZN0) 'UZ' 'NATU' 'DISCRET') ) ;
  136.  
  137. vitimp = 'KCHT' $DOMTOT 'VECT' 'FACE' (0.D0 0.D0 0.D0) ;
  138. tauimp = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 6
  139. 'TXX' 0.D0 'TYY' 0.D0 'TZZ' 0.D0
  140. 'TXY' 0.D0 'TXZ' 0.D0 'TYZ' 0.D0 ;
  141. fchimp = 'KCHT' $DOMTOT 'VECT' 'FACE' (1.D0 1.D0 1.D0) ;
  142. *
  143. *** retgd
  144. *
  145.  
  146. ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0) '+'
  147. (UZN0 * UZN0)) ;
  148. RETN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  149. ((PN0 '/' (GAMMAN '-' 1.0)) '+' ECIN) ;
  150.  
  151. CV=PI ;
  152. TN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  153. ((PN0 '/' (GAMMAN '-' 1.0)) '/' (RN0 '*' CV)) ;
  154.  
  155. VIT PRES = PRIM 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  156.  
  157. ERR1 = 'MAXIMUM' (PRES '-' PN0) 'ABS' ;
  158. ERR2 = 'MAXIMUM' (GN0 '-' (RN0 '*' VIT ('MOTS' 'SCAL' 'SCAL' 'SCAL')
  159. ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ'))) 'ABS' ;
  160.  
  161. 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ) 'ABS' ) > 1.0D-6) ;
  162. 'MESSAGE' 'Problem 0' ;
  163. 'ERREUR' 5 ;
  164. 'FINSI' ;
  165.  
  166.  
  167. 'SI' GRAPH;
  168. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET'
  169. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
  170. 'FINSI' ;
  171.  
  172.  
  173. *
  174. ***** Les valeurs en $DOM1 'CENTRE'
  175. *
  176.  
  177. PCON = ('DOMA' $DOM1 'CENTRE') 'POIN' 1 ;
  178. ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
  179. cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ;
  180. ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
  181.  
  182.  
  183. ***********************
  184. **** Les CHPOINTs ****
  185. ***********************
  186.  
  187. RN = 'COPIER' RN0 ;
  188.  
  189. GN = 'COPIER' GN0 ;
  190.  
  191. RETN = 'COPIER' RETN0 ;
  192.  
  193. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  194.  
  195. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  196.  
  197. CV = PI ;
  198. MU = '*' PI PI ;
  199. KAPPA = '*' ('*' PI PI) PI ;
  200. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  201. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  202. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  203. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  204. *
  205. JACO CHPRES0 DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  206. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  207. LISTINCO ;
  208.  
  209. ***********************
  210. ***** Le residu *******
  211. ***********************
  212.  
  213. DEBRN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 1) ;
  214. DEBGNX0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 2) ;
  215. DEBGNY0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 3) ;
  216. DEBGNZ0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 4) ;
  217. DEBRETN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 5) ;
  218.  
  219. *****************************************************
  220. *****************************************************
  221. ******* TEST1 ***************************************
  222. *****************************************************
  223. *****************************************************
  224. 'MESSAGE' '**************' ;
  225. 'MESSAGE' ' TEST 1 ' ;
  226. 'MESSAGE' '**************' ;
  227. *
  228. * On compare le jacobien et la variation du residu
  229. * en $DOM1 'CENTRE' par rapport à une variation
  230. * infinitésimal en $DOM1 'CENTRE'
  231. *
  232.  
  233. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  234. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  235. 'NATURE' 'DISCRET') 'ET'
  236. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 1.0
  237. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  238. 'NATURE' 'DISCRET') ;
  239. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  240. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  241. 'NATURE' 'DISCRET') 'ET'
  242. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
  243. 'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  244. 'NATURE' 'DISCRET') ;
  245. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  246. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  247. 'NATURE' 'DISCRET') 'ET'
  248. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
  249. 'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
  250. 'NATURE' 'DISCRET') ;
  251. UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  252. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  253. 'NATURE' 'DISCRET') 'ET'
  254. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
  255. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
  256. 'NATURE' 'DISCRET') ;
  257. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  258. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  259. 'NATURE' 'DISCRET') 'ET'
  260. ('MANUEL' 'CHPO' ('DOMA' $DOM1 'CENTRE') 5 'RN' 0.0
  261. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
  262. 'NATURE' 'DISCRET') ;
  263.  
  264. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  265.  
  266. *
  267. *
  268. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  269. * dRES_GXN '/' dRN ('RUXN') ;
  270. * dRES_GYN '/' dRN ('RUYN') ;
  271. * dRES_RETN '/' dRN ('RETN') ;
  272. * DDGX contient ...
  273. *
  274. *
  275.  
  276. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  277. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  278. DDGZ = 'KOPS' JACO 'MULT' UNGZ ;
  279. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  280.  
  281. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  282. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  283. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  284. DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
  285. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  286.  
  287. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  288. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  289. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  290. DGZGX = 'EXTRAIRE' DDGX PCON 'RUZN' ;
  291. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  292.  
  293. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  294. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  295. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  296. DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
  297. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  298.  
  299. DRGZ = 'EXTRAIRE' DDGZ PCON 'RN' ;
  300. DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
  301. DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
  302. DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
  303. DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;
  304.  
  305. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  306. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  307. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  308. DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
  309. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  310.  
  311.  
  312. *********************************************************************
  313. *********************************************************************
  314. ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) *******
  315. *********************************************************************
  316. *********************************************************************
  317.  
  318. DELTA = 1.0D-6 ;
  319. ro1 = ro0 '*' (1 '+' DELTA) ;
  320. RNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ro1 ;
  321.  
  322. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM1 ;
  323.  
  324. GN = 'COPIER' GN0 ;
  325.  
  326. RETN = 'COPIER' RETN0 ;
  327.  
  328. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  329. CV = PI ;
  330. MU = '*' PI PI ;
  331. KAPPA = '*' ('*' PI PI) PI ;
  332. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  333. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  334. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  335. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  336. *
  337. *
  338. *
  339. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  340. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  341. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  342. * 'VIMP' vitimp
  343. * 'TAUI' tauimp
  344. LISTINCO ;
  345.  
  346. ***********************
  347. ***** Le residu *******
  348. ***********************
  349.  
  350. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  351. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  352. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  353. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  354. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  355.  
  356. *
  357. **** On calcule le jacobien numeriquement
  358. *
  359.  
  360. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  361. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  362. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  363. DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
  364. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  365.  
  366.  
  367.  
  368. ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
  369. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
  370. 'SI' (ERR1 > ERRTOL) ;
  371. 'MESSAGE' 'Problem 1';
  372. 'ERREUR' 5 ;
  373. 'FINSI' ;
  374.  
  375. ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
  376. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  377. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
  378. 'SI' (ERR1 > ERRTOL) ;
  379. 'MESSAGE' 'Problem 2';
  380. 'ERREUR' 5 ;
  381. 'FINSI' ;
  382.  
  383. ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
  384. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  385. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
  386. 'SI' (ERR1 > ERRTOL) ;
  387. 'MESSAGE' 'Problem 3';
  388. 'ERREUR' 5 ;
  389. 'FINSI' ;
  390.  
  391. ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
  392. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  393. 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
  394. 'SI' (ERR1 > ERRTOL) ;
  395. 'MESSAGE' 'Problem 4';
  396. 'ERREUR' 5 ;
  397. 'FINSI' ;
  398.  
  399. ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
  400. (ro0 '/' (ret0 '*' cson0)) ;
  401. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
  402. 'SI' (ERR1 > ERRTOL) ;
  403. 'MESSAGE' 'Problem 5';
  404. 'ERREUR' 5 ;
  405. 'FINSI' ;
  406.  
  407. ***************************************************************************
  408. ***************************************************************************
  409. ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) ******
  410. ***************************************************************************
  411. ***************************************************************************
  412.  
  413. DELTA = 1.0D-6 ;
  414. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  415. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  416. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  417. gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ;
  418. GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;
  419.  
  420.  
  421. RN = 'COPIER' RN0 ;
  422.  
  423. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
  424.  
  425. RETN = 'COPIER' RETN0 ;
  426.  
  427. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  428. CV = PI ;
  429. MU = '*' PI PI ;
  430. KAPPA = '*' ('*' PI PI) PI ;
  431. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  432. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  433. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  434. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  435. *
  436. *
  437. *
  438. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  439. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  440. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  441. * 'VIMP' vitimp
  442. * 'TAUI' tauimp
  443. LISTINCO ;
  444.  
  445. ***********************
  446. ***** Le residu *******
  447. ***********************
  448.  
  449. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  450. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  451. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  452. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  453. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  454.  
  455. *
  456. **** On calcule le jacobien numeriquement
  457. *
  458.  
  459. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  460. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  461. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  462. DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  463. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  464.  
  465. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  466. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
  467. 'SI' (ERR1 > ERRTOL) ;
  468. 'MESSAGE' 'Problem 6';
  469. 'ERREUR' 5 ;
  470. 'FINSI' ;
  471.  
  472. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
  473. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
  474. 'SI' (ERR1 > ERRTOL) ;
  475. 'MESSAGE' 'Problem 7';
  476. 'ERREUR' 5 ;
  477. 'FINSI' ;
  478.  
  479. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
  480. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
  481. 'SI' (ERR1 > ERRTOL) ;
  482. 'MESSAGE' 'Problem 8';
  483. 'ERREUR' 5 ;
  484. 'FINSI' ;
  485.  
  486. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
  487. 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
  488. 'SI' (ERR1 > ERRTOL) ;
  489. 'MESSAGE' 'Problem 9';
  490. 'ERREUR' 5 ;
  491. 'FINSI' ;
  492.  
  493.  
  494. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
  495. (ro0 / ret0) ;
  496. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
  497. 'SI' (ERR1 > ERRTOL) ;
  498. 'MESSAGE' 'Problem 10';
  499. 'ERREUR' 5 ;
  500. 'FINSI' ;
  501.  
  502.  
  503. ***************************************************************************
  504. ***************************************************************************
  505. ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) ******
  506. ***************************************************************************
  507. ***************************************************************************
  508.  
  509.  
  510. DELTA = 1.0D-6 ;
  511. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  512. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  513. gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ;
  514. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  515. GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;
  516.  
  517.  
  518. RN = 'COPIER' RN0 ;
  519.  
  520. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
  521.  
  522. RETN = 'COPIER' RETN0 ;
  523.  
  524. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  525. CV = PI ;
  526. MU = '*' PI PI ;
  527. KAPPA = '*' ('*' PI PI) PI ;
  528. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  529. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  530. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  531. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  532. *
  533. *
  534. *
  535. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  536. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  537. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  538. * 'VIMP' vitimp
  539. * 'TAUI' tauimp
  540. LISTINCO ;
  541.  
  542. ***********************
  543. ***** Le residu *******
  544. ***********************
  545.  
  546. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  547. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  548. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  549. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  550. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  551.  
  552. *
  553. **** On calcule le jacobien numeriquement
  554. *
  555.  
  556. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  557. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  558. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  559. DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  560. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  561.  
  562. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  563. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
  564. 'SI' (ERR1 > ERRTOL) ;
  565. 'MESSAGE' 'Problem 11';
  566. 'ERREUR' 5 ;
  567. 'FINSI' ;
  568.  
  569. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ;
  570. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
  571. 'SI' (ERR1 > ERRTOL) ;
  572. 'MESSAGE' 'Problem 12';
  573. 'ERREUR' 5 ;
  574. 'FINSI' ;
  575.  
  576. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
  577. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
  578. 'SI' (ERR1 > ERRTOL) ;
  579. 'MESSAGE' 'Problem 13';
  580. 'ERREUR' 5 ;
  581. 'FINSI' ;
  582.  
  583. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
  584. 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
  585. 'SI' (ERR1 > ERRTOL) ;
  586. 'MESSAGE' 'Problem 14';
  587. 'ERREUR' 5 ;
  588. 'FINSI' ;
  589.  
  590.  
  591. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*'
  592. (ro0 / ret0) ;
  593. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
  594. 'SI' (ERR1 > ERRTOL) ;
  595. 'MESSAGE' 'Problem 15';
  596. 'ERREUR' 5 ;
  597. 'FINSI' ;
  598.  
  599.  
  600. ***************************************************************************
  601. ***************************************************************************
  602. ***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0) ******
  603. ***************************************************************************
  604. ***************************************************************************
  605.  
  606.  
  607. DELTA = 1.0D-6 ;
  608.  
  609. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  610. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  611. gnz1 = gnz0 '+' (ro0 '*' cson0 '*' DELTA) ;
  612. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  613. GNDOM1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;
  614.  
  615.  
  616. RN = 'COPIER' RN0 ;
  617.  
  618. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM1 ;
  619.  
  620. RETN = 'COPIER' RETN0 ;
  621.  
  622. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  623. CV = PI ;
  624. MU = '*' PI PI ;
  625. KAPPA = '*' ('*' PI PI) PI ;
  626. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  627. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  628. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  629. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  630. *
  631. *
  632. *
  633. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  634. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  635. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  636. * 'VIMP' vitimp
  637. * 'TAUI' tauimp
  638. LISTINCO ;
  639.  
  640. ***********************
  641. ***** Le residu *******
  642. ***********************
  643.  
  644. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  645. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  646. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  647. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  648. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  649.  
  650. *
  651. **** On calcule le jacobien numeriquement
  652. *
  653.  
  654. DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  655. DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  656. DGYGZN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  657. DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  658. DRETGZN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  659.  
  660. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  661. 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
  662. 'SI' (ERR1 > ERRTOL) ;
  663. 'MESSAGE' 'Problem 16';
  664. 'ERREUR' 5 ;
  665. 'FINSI' ;
  666.  
  667. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' cson0 ;
  668. 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
  669. 'SI' (ERR1 > ERRTOL) ;
  670. 'MESSAGE' 'Problem 17';
  671. 'ERREUR' 5 ;
  672. 'FINSI' ;
  673.  
  674. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
  675. 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
  676. 'SI' (ERR1 > ERRTOL) ;
  677. 'MESSAGE' 'Problem 18';
  678. 'ERREUR' 5 ;
  679. 'FINSI' ;
  680.  
  681. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
  682. 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
  683. 'SI' (ERR1 > ERRTOL) ;
  684. 'MESSAGE' 'Problem 19';
  685. 'ERREUR' 5 ;
  686. 'FINSI' ;
  687.  
  688.  
  689. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '*'
  690. (ro0 / ret0) ;
  691. 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
  692. 'SI' (ERR1 > ERRTOL) ;
  693. 'MESSAGE' 'Problem 20';
  694. 'ERREUR' 5 ;
  695. 'FINSI' ;
  696.  
  697.  
  698. ***************************************************************************
  699. ***************************************************************************
  700. ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ******
  701. ***************************************************************************
  702. ***************************************************************************
  703.  
  704.  
  705. DELTA = 1.0D-6 ;
  706. ret1 = ret0 '*' (1. '+' DELTA) ;
  707. RETNDOM1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' ret1 ;
  708.  
  709. RN = 'COPIER' RN0 ;
  710.  
  711. GN = 'COPIER' GN0 ;
  712.  
  713. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM1 ;
  714.  
  715. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  716. CV = PI ;
  717. MU = '*' PI PI ;
  718. KAPPA = '*' ('*' PI PI) PI ;
  719. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  720. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  721. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  722. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  723. *
  724. *
  725. *
  726. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  727. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  728. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  729. * 'VIMP' vitimp
  730. * 'TAUI' tauimp
  731. LISTINCO ;
  732.  
  733. ***********************
  734. ***** Le residu *******
  735. ***********************
  736.  
  737. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  738. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  739. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  740. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  741. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  742.  
  743. *
  744. **** On calcule le jacobien numeriquement
  745. *
  746.  
  747. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  748. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  749. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  750. DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ret0) ;
  751. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  752.  
  753. ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ;
  754. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
  755. 'SI' (ERR1 > ERRTOL) ;
  756. 'MESSAGE' 'Problem 21';
  757. 'ERREUR' 5 ;
  758. 'FINSI' ;
  759.  
  760. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
  761. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  762. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
  763. 'SI' (ERR1 > ERRTOL) ;
  764. 'MESSAGE' 'Problem 22';
  765. 'ERREUR' 5 ;
  766. 'FINSI' ;
  767.  
  768. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*'
  769. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  770. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
  771. 'SI' (ERR1 > ERRTOL) ;
  772. 'MESSAGE' 'Problem 23';
  773. 'ERREUR' 5 ;
  774. 'FINSI' ;
  775.  
  776. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*'
  777. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  778. 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
  779. 'SI' (ERR1 > ERRTOL) ;
  780. 'MESSAGE' 'Problem 24';
  781. 'ERREUR' 5 ;
  782. 'FINSI' ;
  783.  
  784.  
  785. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
  786. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
  787. 'SI' (ERR1 > ERRTOL) ;
  788. 'MESSAGE' 'Problem 25';
  789. 'ERREUR' 5 ;
  790. 'FINSI' ;
  791.  
  792.  
  793. *****************************************************
  794. *****************************************************
  795. ******* TEST2 ***************************************
  796. *****************************************************
  797. *****************************************************
  798. 'MESSAGE' '**************' ;
  799. 'MESSAGE' ' TEST 2 ' ;
  800. 'MESSAGE' '**************' ;
  801.  
  802. *
  803. * On compare le jacobien et la variation du residu
  804. * en $DOM1 . 'CENTRE' par rapport à une variation
  805. * infinitésimal en $DOM27 'CENTRE'
  806. *
  807.  
  808. PCELL = ('DOMA' $DOM27 'CENTRE') 'POIN' 1 ;
  809. ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
  810. cson0 = 'EXTRAIRE' CSONN PCELL 'SCAL' ;
  811. ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;
  812.  
  813.  
  814. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  815. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  816. 'NATURE' 'DISCRET') 'ET'
  817. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 1.0
  818. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  819. 'NATURE' 'DISCRET') ;
  820. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  821. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  822. 'NATURE' 'DISCRET') 'ET'
  823. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  824. 'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  825. 'NATURE' 'DISCRET') ;
  826. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  827. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  828. 'NATURE' 'DISCRET') 'ET'
  829. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  830. 'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
  831. 'NATURE' 'DISCRET') ;
  832. UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  833. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  834. 'NATURE' 'DISCRET') 'ET'
  835. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  836. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
  837. 'NATURE' 'DISCRET') ;
  838. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  839. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  840. 'NATURE' 'DISCRET') 'ET'
  841. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  842. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
  843. 'NATURE' 'DISCRET') ;
  844.  
  845. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  846.  
  847. *
  848. *
  849. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  850. * dRES_GXN '/' dRN ('RUXN') ;
  851. * dRES_GYN '/' dRN ('RUYN') ;
  852. * dRES_RETN '/' dRN ('RETN') ;
  853. * DDGX contient ...
  854. *
  855. *
  856.  
  857. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  858. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  859. DDGZ = 'KOPS' JACO 'MULT' UNGZ ;
  860. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  861.  
  862. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  863. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  864. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  865. DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
  866. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  867.  
  868. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  869. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  870. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  871. DGZGX = 'EXTRAIRE' DDGX PCON 'RUZN' ;
  872. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  873.  
  874. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  875. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  876. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  877. DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
  878. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  879.  
  880. DRGZ = 'EXTRAIRE' DDGZ PCON 'RN' ;
  881. DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
  882. DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
  883. DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
  884. DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;
  885.  
  886. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  887. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  888. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  889. DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
  890. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  891.  
  892.  
  893. *********************************************************************
  894. *********************************************************************
  895. ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) *******
  896. *********************************************************************
  897. *********************************************************************
  898.  
  899. DELTA = 1.0D-8 ;
  900. ro1 = ro0 '*' (1 '+' DELTA) ;
  901. RNDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ro1 ;
  902.  
  903. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM27 ;
  904.  
  905. GN = 'COPIER' GN0 ;
  906.  
  907. RETN = 'COPIER' RETN0 ;
  908.  
  909. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  910. CV = PI ;
  911. MU = '*' PI PI ;
  912. KAPPA = '*' ('*' PI PI) PI ;
  913. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  914. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  915. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  916. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  917. *
  918. *
  919. *
  920. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  921. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  922. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  923. LISTINCO ;
  924.  
  925. ***********************
  926. ***** Le residu *******
  927. ***********************
  928.  
  929. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  930. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  931. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  932. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  933. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  934. *
  935. **** On calcule le jacobien numeriquement
  936. *
  937.  
  938. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  939. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  940. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  941. DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
  942. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  943.  
  944.  
  945.  
  946. ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
  947. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
  948. 'SI' (ERR1 > ERRTOL) ;
  949. 'MESSAGE' 'Problem 1';
  950. 'ERREUR' 5 ;
  951. 'FINSI' ;
  952.  
  953. ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
  954. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  955. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
  956. 'SI' (ERR1 > ERRTOL) ;
  957. 'MESSAGE' 'Problem 2';
  958. 'ERREUR' 5 ;
  959. 'FINSI' ;
  960.  
  961. ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
  962. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  963. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
  964. 'SI' (ERR1 > ERRTOL) ;
  965. 'MESSAGE' 'Problem 3';
  966. 'ERREUR' 5 ;
  967. 'FINSI' ;
  968.  
  969. ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
  970. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  971. 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
  972. 'SI' (ERR1 > ERRTOL) ;
  973. 'MESSAGE' 'Problem 4';
  974. 'ERREUR' 5 ;
  975. 'FINSI' ;
  976.  
  977. ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
  978. (ro0 '/' (ret0 '*' cson0)) ;
  979. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
  980. 'SI' (ERR1 > ERRTOL) ;
  981. 'MESSAGE' 'Problem 5';
  982. 'ERREUR' 5 ;
  983. 'FINSI' ;
  984. ***************************************************************************
  985. ***************************************************************************
  986. ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) *****
  987. ***************************************************************************
  988. ***************************************************************************
  989.  
  990. DELTA = 1.0D-8 ;
  991. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  992. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  993. gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
  994. gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ;
  995. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;
  996.  
  997.  
  998. RN = 'COPIER' RN0 ;
  999.  
  1000. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1001.  
  1002. RETN = 'COPIER' RETN0 ;
  1003.  
  1004. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1005. CV = PI ;
  1006. MU = '*' PI PI ;
  1007. KAPPA = '*' ('*' PI PI) PI ;
  1008. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1009. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1010. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1011. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1012. *
  1013. *
  1014. *
  1015. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1016. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1017. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1018. LISTINCO ;
  1019.  
  1020. ***********************
  1021. ***** Le residu *******
  1022. ***********************
  1023.  
  1024. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1025. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1026. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1027. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1028. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1029.  
  1030. *
  1031. **** On calcule le jacobien numeriquement
  1032. *
  1033.  
  1034. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1035. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1036. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1037. DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1038. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1039.  
  1040. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  1041. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
  1042. 'SI' (ERR1 > ERRTOL) ;
  1043. 'MESSAGE' 'Problem 6';
  1044. 'ERREUR' 5 ;
  1045. 'FINSI' ;
  1046.  
  1047. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
  1048. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
  1049. 'SI' (ERR1 > ERRTOL) ;
  1050. 'MESSAGE' 'Problem 7';
  1051. 'ERREUR' 5 ;
  1052. 'FINSI' ;
  1053.  
  1054. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
  1055. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
  1056. 'SI' (ERR1 > ERRTOL) ;
  1057. 'MESSAGE' 'Problem 8';
  1058. 'ERREUR' 5 ;
  1059. 'FINSI' ;
  1060.  
  1061. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
  1062. 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
  1063. 'SI' (ERR1 > ERRTOL) ;
  1064. 'MESSAGE' 'Problem 9';
  1065. 'ERREUR' 5 ;
  1066. 'FINSI' ;
  1067.  
  1068.  
  1069. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
  1070. (ro0 / ret0) ;
  1071. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
  1072. 'SI' (ERR1 > ERRTOL) ;
  1073. 'MESSAGE' 'Problem 10';
  1074. 'ERREUR' 5 ;
  1075. 'FINSI' ;
  1076.  
  1077.  
  1078. ***************************************************************************
  1079. ***************************************************************************
  1080. ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) *****
  1081. ***************************************************************************
  1082. ***************************************************************************
  1083.  
  1084.  
  1085. DELTA = 1.0D-8 ;
  1086.  
  1087. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  1088. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  1089. gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ;
  1090. gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
  1091. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;
  1092.  
  1093.  
  1094. RN = 'COPIER' RN0 ;
  1095.  
  1096. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1097.  
  1098. RETN = 'COPIER' RETN0 ;
  1099.  
  1100. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1101. CV = PI ;
  1102. MU = '*' PI PI ;
  1103. KAPPA = '*' ('*' PI PI) PI ;
  1104. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1105. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1106. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1107. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1108. *
  1109. *
  1110. *
  1111. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1112. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1113. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1114. LISTINCO ;
  1115.  
  1116. ***********************
  1117. ***** Le residu *******
  1118. ***********************
  1119.  
  1120. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1121. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1122. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1123. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1124. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1125.  
  1126. *
  1127. **** On calcule le jacobien numeriquement
  1128. *
  1129.  
  1130. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1131. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1132. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1133. DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1134. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1135.  
  1136. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  1137. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
  1138. 'SI' (ERR1 > ERRTOL) ;
  1139. 'MESSAGE' 'Problem 11';
  1140. 'ERREUR' 5 ;
  1141. 'FINSI' ;
  1142.  
  1143. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ;
  1144. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
  1145. 'SI' (ERR1 > ERRTOL) ;
  1146. 'MESSAGE' 'Problem 12';
  1147. 'ERREUR' 5 ;
  1148. 'FINSI' ;
  1149.  
  1150. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
  1151. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
  1152. 'SI' (ERR1 > ERRTOL) ;
  1153. 'MESSAGE' 'Problem 13';
  1154. 'ERREUR' 5 ;
  1155. 'FINSI' ;
  1156.  
  1157. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
  1158. 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
  1159. 'SI' (ERR1 > ERRTOL) ;
  1160. 'MESSAGE' 'Problem 14';
  1161. 'ERREUR' 5 ;
  1162. 'FINSI' ;
  1163.  
  1164.  
  1165. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*'
  1166. (ro0 / ret0) ;
  1167. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
  1168. 'SI' (ERR1 > ERRTOL) ;
  1169. 'MESSAGE' 'Problem 15';
  1170. 'ERREUR' 5 ;
  1171. 'FINSI' ;
  1172.  
  1173.  
  1174. ***************************************************************************
  1175. ***************************************************************************
  1176. ***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0) *****
  1177. ***************************************************************************
  1178. ***************************************************************************
  1179.  
  1180.  
  1181. DELTA = 1.0D-8 ;
  1182.  
  1183. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  1184. gnz0 = 'EXTRAIRE' GN0 PCELL 'UZ' ;
  1185. gnz1 = gnz0 '+' (ro0 '*' cson0 '*' DELTA) ;
  1186. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  1187. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;
  1188.  
  1189.  
  1190. RN = 'COPIER' RN0 ;
  1191.  
  1192. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1193.  
  1194. RETN = 'COPIER' RETN0 ;
  1195.  
  1196. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1197. CV = PI ;
  1198. MU = '*' PI PI ;
  1199. KAPPA = '*' ('*' PI PI) PI ;
  1200. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1201. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1202. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1203. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1204. *
  1205. *
  1206. *
  1207. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1208. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1209. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1210. LISTINCO ;
  1211.  
  1212. ***********************
  1213. ***** Le residu *******
  1214. ***********************
  1215.  
  1216. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1217. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1218. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1219. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1220. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1221.  
  1222. *
  1223. **** On calcule le jacobien numeriquement
  1224. *
  1225.  
  1226. DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1227. DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1228. DGYGZN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1229. DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1230. DRETGZN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1231.  
  1232. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  1233. 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
  1234. 'SI' (ERR1 > ERRTOL) ;
  1235. 'MESSAGE' 'Problem 16';
  1236. 'ERREUR' 5 ;
  1237. 'FINSI' ;
  1238.  
  1239. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' cson0 ;
  1240. 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
  1241. 'SI' (ERR1 > ERRTOL) ;
  1242. 'MESSAGE' 'Problem 17';
  1243. 'ERREUR' 5 ;
  1244. 'FINSI' ;
  1245.  
  1246. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
  1247. 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
  1248. 'SI' (ERR1 > ERRTOL) ;
  1249. 'MESSAGE' 'Problem 18';
  1250. 'ERREUR' 5 ;
  1251. 'FINSI' ;
  1252.  
  1253. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
  1254. 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
  1255. 'SI' (ERR1 > ERRTOL) ;
  1256. 'MESSAGE' 'Problem 19';
  1257. 'ERREUR' 5 ;
  1258. 'FINSI' ;
  1259.  
  1260.  
  1261. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '*'
  1262. (ro0 / ret0) ;
  1263. 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
  1264. 'SI' (ERR1 > ERRTOL) ;
  1265. 'MESSAGE' 'Problem 20';
  1266. 'ERREUR' 5 ;
  1267. 'FINSI' ;
  1268.  
  1269.  
  1270. ***************************************************************************
  1271. ***************************************************************************
  1272. ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ******
  1273. ***************************************************************************
  1274. ***************************************************************************
  1275.  
  1276.  
  1277. DELTA = 1.0D-8 ;
  1278. ret1 = ret0 '*' (1. '+' DELTA) ;
  1279. RETDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ret1 ;
  1280.  
  1281. RN = 'COPIER' RN0 ;
  1282.  
  1283. GN = 'COPIER' GN0 ;
  1284.  
  1285. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETDOM27 ;
  1286.  
  1287. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1288. CV = PI ;
  1289. MU = '*' PI PI ;
  1290. KAPPA = '*' ('*' PI PI) PI ;
  1291. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1292. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1293. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1294. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1295. *
  1296. *
  1297. *
  1298. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1299. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1300. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1301. LISTINCO ;
  1302.  
  1303. ***********************
  1304. ***** Le residu *******
  1305. ***********************
  1306.  
  1307. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1308. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1309. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1310. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1311. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1312.  
  1313. *
  1314. **** On calcule le jacobien numeriquement
  1315. *
  1316.  
  1317. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  1318. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  1319. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  1320. DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ret0) ;
  1321. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  1322.  
  1323. ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ;
  1324. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
  1325. 'SI' (ERR1 > ERRTOL) ;
  1326. 'MESSAGE' 'Problem 21';
  1327. 'ERREUR' 5 ;
  1328. 'FINSI' ;
  1329.  
  1330. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
  1331. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1332. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
  1333. 'SI' (ERR1 > ERRTOL) ;
  1334. 'MESSAGE' 'Problem 22';
  1335. 'ERREUR' 5 ;
  1336. 'FINSI' ;
  1337.  
  1338. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*'
  1339. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1340. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
  1341. 'SI' (ERR1 > ERRTOL) ;
  1342. 'MESSAGE' 'Problem 23';
  1343. 'ERREUR' 5 ;
  1344. 'FINSI' ;
  1345.  
  1346. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*'
  1347. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1348. 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
  1349. 'SI' (ERR1 > ERRTOL) ;
  1350. 'MESSAGE' 'Problem 24';
  1351. 'ERREUR' 5 ;
  1352. 'FINSI' ;
  1353.  
  1354.  
  1355. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
  1356. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
  1357. 'SI' (ERR1 > ERRTOL) ;
  1358. 'MESSAGE' 'Problem 25';
  1359. 'ERREUR' 5 ;
  1360. 'FINSI' ;
  1361. *****************************************************
  1362. *****************************************************
  1363. ******* TEST3 ***************************************
  1364. *****************************************************
  1365. *****************************************************
  1366. 'MESSAGE' '**************' ;
  1367. 'MESSAGE' ' TEST 3 ' ;
  1368. 'MESSAGE' '**************' ;
  1369. *
  1370. * On observe la variation du residu en $DOM27 'CENTRE'
  1371. * par rapport à une variation infinitésimal en
  1372. * $DOM27 'CENTRE' (NB : DOM27 est sur le bord!).
  1373. *
  1374.  
  1375. *
  1376. ***** Les valeurs en $DOM1 . 'CENTRE'
  1377. *
  1378.  
  1379. PCON = ('DOMA' $DOM27 'CENTRE') 'POIN' 1 ;
  1380. ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
  1381. cson0 = 'EXTRAIRE' CSONN PCON 'SCAL' ;
  1382. ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
  1383.  
  1384. ***********************
  1385. ***** Le residu *******
  1386. ***********************
  1387.  
  1388. DEBRN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 1) ;
  1389. DEBGNX0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 2) ;
  1390. DEBGNY0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 3) ;
  1391. DEBGNZ0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 4) ;
  1392. DEBRETN0 = 'EXTRAIRE' CHPRES0 PCON ('EXTRAIRE' LISTINCO 5) ;
  1393.  
  1394.  
  1395.  
  1396. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1397. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1398. 'NATURE' 'DISCRET') 'ET'
  1399. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 1.0
  1400. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1401. 'NATURE' 'DISCRET') ;
  1402. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1403. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1404. 'NATURE' 'DISCRET') 'ET'
  1405. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  1406. 'RUXN' 1.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1407. 'NATURE' 'DISCRET') ;
  1408. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1409. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1410. 'NATURE' 'DISCRET') 'ET'
  1411. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  1412. 'RUXN' 0.0 'RUYN' 1.0 'RUZN' 0.0 'RETN' 0.0
  1413. 'NATURE' 'DISCRET') ;
  1414. UNGZ = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1415. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1416. 'NATURE' 'DISCRET') 'ET'
  1417. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  1418. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 1.0 'RETN' 0.0
  1419. 'NATURE' 'DISCRET') ;
  1420. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1421. 5 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 0.0
  1422. 'NATURE' 'DISCRET') 'ET'
  1423. ('MANUEL' 'CHPO' ('DOMA' $DOM27 'CENTRE') 5 'RN' 0.0
  1424. 'RUXN' 0.0 'RUYN' 0.0 'RUZN' 0.0 'RETN' 1.0
  1425. 'NATURE' 'DISCRET') ;
  1426.  
  1427. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  1428.  
  1429. *
  1430. *
  1431. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  1432. * dRES_GXN '/' dRN ('RUXN') ;
  1433. * dRES_GYN '/' dRN ('RUYN') ;
  1434. * dRES_RETN '/' dRN ('RETN') ;
  1435. * DDGX contient ...
  1436. *
  1437. *
  1438.  
  1439. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  1440. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  1441. DDGZ = 'KOPS' JACO 'MULT' UNGZ ;
  1442. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  1443.  
  1444. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  1445. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  1446. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  1447. DGZR = 'EXTRAIRE' DDRHO PCON 'RUZN' ;
  1448. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  1449.  
  1450. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  1451. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  1452. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  1453. DGZGX = 'EXTRAIRE' DDGX PCON 'RUZN' ;
  1454. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  1455.  
  1456. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  1457. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  1458. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  1459. DGZGY = 'EXTRAIRE' DDGY PCON 'RUZN' ;
  1460. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  1461.  
  1462. DRGZ = 'EXTRAIRE' DDGZ PCON 'RN' ;
  1463. DGXGZ = 'EXTRAIRE' DDGZ PCON 'RUXN' ;
  1464. DGYGZ = 'EXTRAIRE' DDGZ PCON 'RUYN' ;
  1465. DGZGZ = 'EXTRAIRE' DDGZ PCON 'RUZN' ;
  1466. DRETGZ = 'EXTRAIRE' DDGZ PCON 'RETN' ;
  1467.  
  1468. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  1469. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  1470. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  1471. DGZRET = 'EXTRAIRE' DDRET PCON 'RUZN' ;
  1472. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  1473.  
  1474.  
  1475. *********************************************************************
  1476. *********************************************************************
  1477. ***** On calcule les residues pour ro1 = ro0 * (1.'+' DELTA) *******
  1478. *********************************************************************
  1479. *********************************************************************
  1480.  
  1481. DELTA = 1.0D-8 ;
  1482. ro1 = ro0 '*' (1 '+' DELTA) ;
  1483. RNDOM27 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ro1 ;
  1484.  
  1485. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM27 ;
  1486.  
  1487. GN = 'COPIER' GN0 ;
  1488.  
  1489. RETN = 'COPIER' RETN0 ;
  1490.  
  1491. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1492. CV = PI ;
  1493. MU = '*' PI PI ;
  1494. KAPPA = '*' ('*' PI PI) PI ;
  1495. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1496. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1497. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1498. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1499. *
  1500. *
  1501. *
  1502. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1503. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1504. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1505. LISTINCO ;
  1506.  
  1507. ***********************
  1508. ***** Le residu *******
  1509. ***********************
  1510.  
  1511. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1512. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1513. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1514. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1515. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1516.  
  1517. *
  1518. **** On calcule le jacobien numeriquement
  1519. *
  1520.  
  1521. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  1522. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  1523. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  1524. DGZRN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0) ;
  1525. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  1526.  
  1527. ERR1 = ('ABS' (DRRN '-' DRR)) '*' (ro0 '/' (ro0 '*' cson0)) ;
  1528. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR) ;
  1529. 'SI' (ERR1 > ERRTOL) ;
  1530. 'MESSAGE' 'Problem 1';
  1531. 'ERREUR' 5 ;
  1532. 'FINSI' ;
  1533.  
  1534. ERR1 = ('ABS' (DGXRN '-' DGXR)) '*'
  1535. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  1536. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR) ;
  1537. 'SI' (ERR1 > ERRTOL) ;
  1538. 'MESSAGE' 'Problem 2';
  1539. 'ERREUR' 5 ;
  1540. 'FINSI' ;
  1541.  
  1542. ERR1 = ('ABS' (DGYRN '-' DGYR)) '*'
  1543. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  1544. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR) ;
  1545. 'SI' (ERR1 > ERRTOL) ;
  1546. 'MESSAGE' 'Problem 3';
  1547. 'ERREUR' 5 ;
  1548. 'FINSI' ;
  1549.  
  1550. ERR1 = ('ABS' (DGZRN '-' DGZR)) '*'
  1551. (ro0 '/' (ro0 '*' cson0 '*' cson0)) ;
  1552. 'MESSAGE' ('CHAINE' 'DGZRN=' DGZRN ' DGZR=' DGZR) ;
  1553. 'SI' (ERR1 > ERRTOL) ;
  1554. 'MESSAGE' 'Problem 4';
  1555. 'ERREUR' 5 ;
  1556. 'FINSI' ;
  1557.  
  1558. ERR1 = ('ABS' (DRETRN '-' DRETR)) '*'
  1559. (ro0 '/' (ret0 '*' cson0)) ;
  1560. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR) ;
  1561. 'SI' (ERR1 > ERRTOL) ;
  1562. 'MESSAGE' 'Problem 5';
  1563. 'ERREUR' 5 ;
  1564. 'FINSI' ;
  1565.  
  1566.  
  1567. ***************************************************************************
  1568. ***************************************************************************
  1569. ***** On calcule les residues pour gnx1 = gnx0 '+' (DELTA ro0 cson0) *****
  1570. ***************************************************************************
  1571. ***************************************************************************
  1572.  
  1573. DELTA = 1.0D-8 ;
  1574. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  1575. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  1576. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  1577. gnx1 = gnx0 '+' (ro0 '*' cson0 '*' DELTA) ;
  1578. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx1 gny0 gnz0) ;
  1579.  
  1580.  
  1581. RN = 'COPIER' RN0 ;
  1582.  
  1583. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1584.  
  1585. RETN = 'COPIER' RETN0 ;
  1586.  
  1587. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1588. CV = PI ;
  1589. MU = '*' PI PI ;
  1590. KAPPA = '*' ('*' PI PI) PI ;
  1591. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1592. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1593. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1594. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1595. *
  1596. *
  1597. *
  1598. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1599. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1600. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1601. LISTINCO ;
  1602.  
  1603. ***********************
  1604. ***** Le residu *******
  1605. ***********************
  1606.  
  1607. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1608. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1609. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1610. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1611. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1612.  
  1613. *
  1614. **** On calcule le jacobien numeriquement
  1615. *
  1616.  
  1617. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1618. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1619. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1620. DGZGXN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1621. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1622.  
  1623. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  1624. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRGX=' DRGX) ;
  1625. 'SI' (ERR1 > ERRTOL) ;
  1626. 'MESSAGE' 'Problem 6';
  1627. 'ERREUR' 5 ;
  1628. 'FINSI' ;
  1629.  
  1630. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' cson0 ;
  1631. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX) ;
  1632. 'SI' (ERR1 > ERRTOL) ;
  1633. 'MESSAGE' 'Problem 7';
  1634. 'ERREUR' 5 ;
  1635. 'FINSI' ;
  1636.  
  1637. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' cson0 ;
  1638. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX) ;
  1639. 'SI' (ERR1 > ERRTOL) ;
  1640. 'MESSAGE' 'Problem 8';
  1641. 'ERREUR' 5 ;
  1642. 'FINSI' ;
  1643.  
  1644. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' cson0 ;
  1645. 'MESSAGE' ('CHAINE' 'DGZGXN=' DGZGXN ' DGZGX=' DGZGX) ;
  1646. 'SI' (ERR1 > ERRTOL) ;
  1647. 'MESSAGE' 'Problem 9';
  1648. 'ERREUR' 5 ;
  1649. 'FINSI' ;
  1650.  
  1651.  
  1652. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '*'
  1653. (ro0 / ret0) ;
  1654. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX) ;
  1655. 'SI' (ERR1 > ERRTOL) ;
  1656. 'MESSAGE' 'Problem 10';
  1657. 'ERREUR' 5 ;
  1658. 'FINSI' ;
  1659.  
  1660.  
  1661. ***************************************************************************
  1662. ***************************************************************************
  1663. ***** On calcule les residues pour gny1 = gny0 '+' (DELTA ro0 cson0) *****
  1664. ***************************************************************************
  1665. ***************************************************************************
  1666.  
  1667.  
  1668. DELTA = 1.0D-8 ;
  1669.  
  1670. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  1671. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  1672. gny1 = gny0 '+' (ro0 '*' cson0 '*' DELTA) ;
  1673. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  1674. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny1 gnz0) ;
  1675.  
  1676.  
  1677. RN = 'COPIER' RN0 ;
  1678.  
  1679. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1680.  
  1681. RETN = 'COPIER' RETN0 ;
  1682.  
  1683. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1684. CV = PI ;
  1685. MU = '*' PI PI ;
  1686. KAPPA = '*' ('*' PI PI) PI ;
  1687. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1688. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1689. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1690. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1691. *
  1692. *
  1693. *
  1694. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1695. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1696. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1697. LISTINCO ;
  1698.  
  1699. ***********************
  1700. ***** Le residu *******
  1701. ***********************
  1702.  
  1703. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1704. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1705. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1706. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1707. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1708.  
  1709. *
  1710. **** On calcule le jacobien numeriquement
  1711. *
  1712.  
  1713. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1714. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1715. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1716. DGZGYN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1717. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1718.  
  1719. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  1720. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY) ;
  1721. 'SI' (ERR1 > ERRTOL) ;
  1722. 'MESSAGE' 'Problem 11';
  1723. 'ERREUR' 5 ;
  1724. 'FINSI' ;
  1725.  
  1726. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' cson0 ;
  1727. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY) ;
  1728. 'SI' (ERR1 > ERRTOL) ;
  1729. 'MESSAGE' 'Problem 12';
  1730. 'ERREUR' 5 ;
  1731. 'FINSI' ;
  1732.  
  1733. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' cson0 ;
  1734. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY) ;
  1735. 'SI' (ERR1 > ERRTOL) ;
  1736. 'MESSAGE' 'Problem 13';
  1737. 'ERREUR' 5 ;
  1738. 'FINSI' ;
  1739.  
  1740. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' cson0 ;
  1741. 'MESSAGE' ('CHAINE' 'DGZGYN=' DGZGYN ' DGZGY=' DGZGY) ;
  1742. 'SI' (ERR1 > ERRTOL) ;
  1743. 'MESSAGE' 'Problem 14';
  1744. 'ERREUR' 5 ;
  1745. 'FINSI' ;
  1746.  
  1747.  
  1748. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '*'
  1749. (ro0 / ret0) ;
  1750. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY) ;
  1751. 'SI' (ERR1 > ERRTOL) ;
  1752. 'MESSAGE' 'Problem 15';
  1753. 'ERREUR' 5 ;
  1754. 'FINSI' ;
  1755.  
  1756.  
  1757. ***************************************************************************
  1758. ***************************************************************************
  1759. ***** On calcule les residues pour gnz1 = gnz0 '+' (DELTA ro0 cson0) *****
  1760. ***************************************************************************
  1761. ***************************************************************************
  1762.  
  1763.  
  1764. DELTA = 1.0D-8 ;
  1765.  
  1766. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  1767. gnz0 = 'EXTRAIRE' GN0 PCON 'UZ' ;
  1768. gnz1 = gnz0 '+' (ro0 '*' cson0 '*' DELTA) ;
  1769. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  1770. GNDOM27 = 'KCHT' $DOM27 'VECT' 'CENTRE' (gnx0 gny0 gnz1) ;
  1771.  
  1772.  
  1773. RN = 'COPIER' RN0 ;
  1774.  
  1775. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM27 ;
  1776.  
  1777. RETN = 'COPIER' RETN0 ;
  1778.  
  1779. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1780. CV = PI ;
  1781. MU = '*' PI PI ;
  1782. KAPPA = '*' ('*' PI PI) PI ;
  1783. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1784. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1785. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1786. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1787. *
  1788. *
  1789. *
  1790. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1791. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1792. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1793. LISTINCO ;
  1794.  
  1795. ***********************
  1796. ***** Le residu *******
  1797. ***********************
  1798.  
  1799. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1800. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1801. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1802. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1803. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1804.  
  1805. *
  1806. **** On calcule le jacobien numeriquement
  1807. *
  1808.  
  1809. DRGZN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1810. DGXGZN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0 '*' cson0) ;
  1811. DGYGZN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0 '*' cson0) ;
  1812. DGZGZN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ro0 '*' cson0) ;
  1813. DRETGZN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0 '*' cson0) ;
  1814.  
  1815. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  1816. 'MESSAGE' ('CHAINE' 'DRGZN=' DRGZN ' DRGZ=' DRGZ) ;
  1817. 'SI' (ERR1 > ERRTOL) ;
  1818. 'MESSAGE' 'Problem 16';
  1819. 'ERREUR' 5 ;
  1820. 'FINSI' ;
  1821.  
  1822. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' cson0 ;
  1823. 'MESSAGE' ('CHAINE' 'DGXGZN=' DGXGZN ' DGXGZ=' DGXGZ) ;
  1824. 'SI' (ERR1 > ERRTOL) ;
  1825. 'MESSAGE' 'Problem 17';
  1826. 'ERREUR' 5 ;
  1827. 'FINSI' ;
  1828.  
  1829. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' cson0 ;
  1830. 'MESSAGE' ('CHAINE' 'DGYGZN=' DGYGZN ' DGYGZ=' DGYGZ) ;
  1831. 'SI' (ERR1 > ERRTOL) ;
  1832. 'MESSAGE' 'Problem 18';
  1833. 'ERREUR' 5 ;
  1834. 'FINSI' ;
  1835.  
  1836. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' cson0 ;
  1837. 'MESSAGE' ('CHAINE' 'DGZGZN=' DGZGZN ' DGZGZ=' DGZGZ) ;
  1838. 'SI' (ERR1 > ERRTOL) ;
  1839. 'MESSAGE' 'Problem 19';
  1840. 'ERREUR' 5 ;
  1841. 'FINSI' ;
  1842.  
  1843.  
  1844. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '*'
  1845. (ro0 / ret0) ;
  1846. 'MESSAGE' ('CHAINE' 'DRETGZN=' DRETGZN ' DRETGZ=' DRETGZ) ;
  1847. 'SI' (ERR1 > ERRTOL) ;
  1848. 'MESSAGE' 'Problem 20';
  1849. 'ERREUR' 5 ;
  1850. 'FINSI' ;
  1851.  
  1852.  
  1853. ***************************************************************************
  1854. ***************************************************************************
  1855. ***** On calcule les residues pour ret1 = ret0 '*' (1. '+' DELTA) ******
  1856. ***************************************************************************
  1857. ***************************************************************************
  1858.  
  1859.  
  1860. DELTA = 1.0D-8 ;
  1861. ret1 = ret0 '*' (1. '+' DELTA) ;
  1862. RETNDOM1 = 'KCHT' $DOM27 'SCAL' 'CENTRE' ret1 ;
  1863.  
  1864. RN = 'COPIER' RN0 ;
  1865.  
  1866. GN = 'COPIER' GN0 ;
  1867.  
  1868. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM1 ;
  1869.  
  1870. V0 PRES = 'PRIM' 'PERFMONO' RN GN RETN GAMMAN ;
  1871. CV = PI ;
  1872. MU = '*' PI PI ;
  1873. KAPPA = '*' ('*' PI PI) PI ;
  1874. T0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  1875. ((PRES '/' (GAMMAN '-' 1.0)) '/' (RN '*' CV)) ;
  1876. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1877. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1878. *
  1879. *
  1880. *
  1881. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  1882. IJACEL CHPRES DT = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  1883. $DOMTOT MU KAPPA CV RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1884. LISTINCO ;
  1885.  
  1886. ***********************
  1887. ***** Le residu *******
  1888. ***********************
  1889.  
  1890. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1891. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1892. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1893. DEBGNZ1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1894. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1895.  
  1896. *
  1897. **** On calcule le jacobien numeriquement
  1898. *
  1899.  
  1900. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  1901. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  1902. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  1903. DGZRETN = (DEBGNZ1 '-' DEBGNZ0) '/' (DELTA '*' ret0) ;
  1904. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  1905.  
  1906. ERR1 = ('ABS' (DRRETN '-' DRRET)) '*' (ret0 '/' (ro0 '*' cson0)) ;
  1907. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET) ;
  1908. 'SI' (ERR1 > ERRTOL) ;
  1909. 'MESSAGE' 'Problem 21';
  1910. 'ERREUR' 5 ;
  1911. 'FINSI' ;
  1912.  
  1913. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '*'
  1914. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1915. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET) ;
  1916. 'SI' (ERR1 > ERRTOL) ;
  1917. 'MESSAGE' 'Problem 22';
  1918. 'ERREUR' 5 ;
  1919. 'FINSI' ;
  1920.  
  1921. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '*'
  1922. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1923. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET) ;
  1924. 'SI' (ERR1 > ERRTOL) ;
  1925. 'MESSAGE' 'Problem 23';
  1926. 'ERREUR' 5 ;
  1927. 'FINSI' ;
  1928.  
  1929. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '*'
  1930. (ret0 '/' (ro0 '*' cson0 * cson0)) ;
  1931. 'MESSAGE' ('CHAINE' 'DGZRETN=' DGZRETN ' DGZRET=' DGZRET) ;
  1932. 'SI' (ERR1 > ERRTOL) ;
  1933. 'MESSAGE' 'Problem 24';
  1934. 'ERREUR' 5 ;
  1935. 'FINSI' ;
  1936.  
  1937.  
  1938. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' cson0 ;
  1939. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET) ;
  1940. 'SI' (ERR1 > ERRTOL) ;
  1941. 'MESSAGE' 'Problem 25';
  1942. 'ERREUR' 5 ;
  1943. 'FINSI' ;
  1944.  
  1945.  
  1946. 'FIN' ;
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  

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