Télécharger lapn_impl_mel.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : lapn_impl_mel.dgibi
  2. *; Préambule
  3. *;; Description du cas-test
  4. ***********************************************************
  5. ***********************************************************
  6. **** APPROCHE VF "Cell-Centred Formulation" pour la ****
  7. **** solution des ****
  8. **** Equations de Navier-Stokes pour un gaz parfait ****
  9. **** OPERATEURS PRIM, PENT, LAPN ****
  10. **** Implicit: calcul du jacobien du residu ****
  11. **** ****
  12. **** Cas multiespeces avec 3 esp. différentes (O2, N2, H2) ****
  13. **** ****
  14. **** Methodes: DIAMANT ****
  15. **** ****
  16. **** A. BECCANTINI DRN/DMT/SEMT/LTMF AOUT 2000 ****
  17. **** S. GOUNAND DEN/DM2S/SFME/LTMF FEVRIER 2002 ****
  18. ***********************************************************
  19. ***********************************************************
  20. *;; Options
  21. 'OPTION' 'DIME' 2 ;
  22. 'OPTION' 'ELEM' QUA4 ;
  23. 'OPTION' 'ECHO' 0 ;
  24. 'OPTION' 'TRAC' 'X' ;
  25. GRAPH = FAUX ;
  26. * GRAPH = VRAI ;
  27. *;; Procédures perso
  28. 'DEBPROC' CALCERR rcalc*'FLOTTANT' rref*'FLOTTANT' ;
  29. toto = 'MINIMUM' ('PROG' ('ABS' rref) ('ABS' rcalc)) ;
  30. 'SI' ('<EG' ('ABS' toto) 1.D-12) ;
  31. fref = 1.D0 ;
  32. 'SINON' ;
  33. fref = 'ABS' toto ;
  34. 'FINSI' ;
  35. 'FINPROC' ('/' ('ABS' ('-' rcalc rref)) fref) ;
  36. DELTA = 1.0D-6 ;
  37. ERRZER = 1.0D-11 ;
  38. ERRNIV0 = 1.0D-4 ;
  39. ERRNIV1 = 2.0D0 ;
  40. ERRNIV2 = 1.0D+4 ;
  41. * CHPUNIF=Vrai si les champs de variables sont constants en espace
  42. * CSTUNIQ=Vrai si les constituants sont identiques
  43. 'REPETER' bcl 4 ;
  44. 'SI' ('EGA' &bcl 1) ;
  45. CHPUNIF = VRAI ;
  46. CSTUNIQ = VRAI ;
  47. ERRTOL = ERRNIV0 ;
  48. ERRTO2 = ERRNIV0 ;
  49. ERRTO3 = ERRNIV0 ;
  50. 'FINSI' ;
  51. 'SI' ('EGA' &bcl 2) ;
  52. CHPUNIF = FAUX ;
  53. CSTUNIQ = VRAI ;
  54. ERRTOL = ERRNIV0 ;
  55. ERRTO2 = ERRNIV1 ;
  56. ERRTO3 = ERRNIV0 ;
  57. 'FINSI' ;
  58. 'SI' ('EGA' &bcl 3) ;
  59. CHPUNIF = VRAI ;
  60. CSTUNIQ = FAUX ;
  61. ERRTOL = ERRNIV0 ;
  62. ERRTO2 = ERRNIV1 ;
  63. ERRTO3 = ERRNIV1 ;
  64. 'FINSI' ;
  65. 'SI' ('EGA' &bcl 4) ;
  66. CHPUNIF = FAUX ;
  67. CSTUNIQ = FAUX ;
  68. ERRTOL = ERRNIV0 ;
  69. ERRTO2 = ERRNIV1 ;
  70. ERRTO3 = ERRNIV2 ;
  71. 'FINSI' ;
  72. 'SI' ('>EG' &bcl 5) ;
  73. 'MESSAGE' 'Erreur de programmation' ;
  74. 'ERREUR' 5 ;
  75. 'FINSI' ;
  76. 'MESSAGE' ('CHAINE' '****************************************') ;
  77. 'SI' (CHPUNIF) ;
  78. 'MESSAGE' 'Champoints constants en espace' ;
  79. 'SINON' ;
  80. 'MESSAGE' 'Champoints bruites en espace' ;
  81. 'FINSI' ;
  82. 'SI' (CSTUNIQ) ;
  83. 'MESSAGE' 'Les constituants sont identiques (=hydrogene)' ;
  84. 'SINON' ;
  85. 'MESSAGE' 'Les constituants sont distincts (H2,O2,N2)' ;
  86. 'FINSI' ;
  87. 'MESSAGE' ('CHAINE' '****************************************') ;
  88. *;; Géométrie
  89. A0 = 0.0D0 0.0D0;
  90. A1 = 1.0D0 0.0D0;
  91. A2 = 2.0D0 0.0D0;
  92. A3 = 3.0D0 0.0D0;
  93. A0A1 = A0 'DROIT' 1 A1;
  94. A1A2 = A1 'DROIT' 1 A2;
  95. A2A3 = A2 'DROIT' 1 A3;
  96. DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ;
  97. DOM2 = DOM1 'PLUS' (0.0 1.0) ;
  98. DOM3 = DOM2 'PLUS' (0.0 1.0) ;
  99. DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ;
  100. DOM5 = DOM4 'PLUS' (0.0 1.0) ;
  101. DOM6 = DOM5 'PLUS' (0.0 1.0) ;
  102. DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ;
  103. DOM8 = DOM7 'PLUS' (0.0 1.0) ;
  104. DOM9 = DOM8 'PLUS' (0.0 1.0) ;
  105. DOM9 = DOM9 'COULEUR' 'ROUG ' ;
  106. DOM6 = DOM6 'COULEUR' 'VERT' ;
  107. DOM7 = DOM7 'COULEUR' 'JAUN' ;
  108. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
  109. DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 ;
  110. 'ELIMINATION' DOMTOT 0.0001 ;
  111. CHPBRU = ('NOMC' 'UX' ('BRUI' 'BLAN' 'UNIF' 0.0 0.4 DOMTOT)
  112. 'NATU' 'DISCRET') 'ET'
  113. ('NOMC' 'UY' ('BRUI' 'BLAN' 'UNIF' 0.0 0.2 DOMTOT)
  114. 'NATU' 'DISCRET') ;
  115. 'FORME' CHPBRU ;
  116.  
  117. * DOM9 et DOM6 ont un point en commun
  118. * DOM9 et DOM n ont pas de points en commun
  119.  
  120. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  121.  
  122. $DOM6 = 'MODELISER' DOM6 'EULER';
  123. $DOM7 = 'MODELISER' DOM7 'EULER';
  124. $DOM9 = 'MODELISER' DOM9 'EULER';
  125.  
  126. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  127.  
  128. TDOM6 = 'DOMA' $DOM6 'VF';
  129. TDOM7 = 'DOMA' $DOM7 'VF';
  130. TDOM9 = 'DOMA' $DOM9 'VF';
  131.  
  132. MDOM6 = TDOM6 . 'QUAF' ;
  133. MDOM7 = TDOM7 . 'QUAF' ;
  134. MDOM9 = TDOM9 . 'QUAF' ;
  135.  
  136. **** old stuff $DOMTOT = 'DOMA' DOMTOT ;
  137.  
  138. MDOMTOT = TDOMTOT . 'QUAF' ;
  139.  
  140. 'ELIMINATION' (MDOMTOT ET MDOM6) 0.0001 ;
  141. 'ELIMINATION' (MDOMTOT ET MDOM7) 0.0001 ;
  142. 'ELIMINATION' (MDOMTOT ET MDOM9) 0.0001 ;
  143.  
  144.  
  145. *;; Physique
  146. *
  147. * Valeurs physiques pour l oxygène (O), l azote (N) et l hydrogène (H)
  148. * vitesse du mélange
  149. UXN0 = 1.1 ;
  150. UYN0 = 1.2 ;
  151. * température
  152. TN0 = 573.15 ;
  153. * capacités calorifiques, masses molaires et constantes des gaz parfaits
  154. *(Raloc)
  155. 'SI' ('NON' CSTUNIQ) ;
  156. CPH = 14.53E3 ;
  157. CPO = 0.962E3 ;
  158. CPN = 1.089E3 ;
  159. MMH = 0.2E-2 ;
  160. MMO = 3.2E-2 ;
  161. MMN = 2.8E-2 ;
  162. * conductivité thermique, diffusivité thermique et viscosité dynamique
  163. LAMBDAH = 2.86E-1 ;
  164. LAMBDAO = 4.57E-2 ;
  165. LAMBDAN = 4.06E-2 ;
  166. MUH = 1.38E-5 ;
  167. MUO = 3.29E-5 ;
  168. MUN = 2.83E-5 ;
  169. 'SINON' ;
  170. CPH = 14.53E3 ;
  171. CPO = CPH ;
  172. CPN = CPH ;
  173. MMH = 0.2E-2 ;
  174. MMO = MMH ;
  175. MMN = MMH ;
  176. LAMBDAH = 2.86E-1 ;
  177. LAMBDAO = LAMBDAH ;
  178. LAMBDAN = LAMBDAH ;
  179. MUH = 1.38E-5 ;
  180. MUO = MUH ;
  181. MUN = MUH ;
  182. 'FINSI' ;
  183. RGP = 8.314 ;
  184. * fractions massiques
  185. YH20 = 0.13D0 ;
  186. YO20 = 0.19D0 ;
  187. *
  188. * Fin de définition des propriétés physiques
  189. *
  190. * Conneries de champoints...
  191. *
  192. RN0 = 1.5D0 ;
  193. 'SI' (CHPUNIF) ;
  194. RN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 ;
  195. UXN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' UXN0 ;
  196. UYN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' UYN0 ;
  197. TN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' TN0 ;
  198. YH20 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' YH20 ;
  199. YO20 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' YO20 ;
  200. 'SINON' ;
  201. RN0 = 'BRUI' 'BLAN' 'UNIF' RN0 (RN0 '/' 10.D0)
  202. ('DOMA' $DOMTOT 'CENTRE') ;
  203. UXN0 = 'BRUI' 'BLAN' 'UNIF' UXN0 (UXN0 '/' 10.D0)
  204. ('DOMA' $DOMTOT 'CENTRE');
  205. UYN0 = 'BRUI' 'BLAN' 'UNIF' UYN0 (UYN0 '/' 10.D0)
  206. ('DOMA' $DOMTOT 'CENTRE');
  207. TN0 = 'BRUI' 'BLAN' 'UNIF' TN0 (TN0 '/' 10.D0)
  208. ('DOMA' $DOMTOT 'CENTRE') ;
  209. YH20 = 'BRUI' 'BLAN' 'UNIF' YH20 (YH20 '/' 10.D0)
  210. ('DOMA' $DOMTOT 'CENTRE');
  211. YO20 = 'BRUI' 'BLAN' 'UNIF' YO20 (YO20 '/' 10.D0)
  212. ('DOMA' $DOMTOT 'CENTRE');
  213. 'FINSI' ;
  214. *;
  215. YN20 = '*' (-1.D0) ('-' ('+' YH20 YO20) 1.D0) ;
  216. CP = '+' ('+' ('*' YH20 CPH) ('*' YO20 CPO)) ('*' YN20 CPN) ;
  217. LAMBDA = '+' ('+' ('*' YH20 LAMBDAH) ('*' YO20 LAMBDAO))
  218. ('*' YN20 LAMBDAN) ;
  219. MU = '+' ('+' ('*' YH20 MUH) ('*' YO20 MUO)) ('*' YN20 MUN) ;
  220. MMG = 'INVERSE' ('+' ('+' ('*' YH20 ('/' 1.D0 MMH))
  221. ('*' YO20 ('/' 1.D0 MMO)))
  222. ('*' YN20 ('/' 1.D0 MMN)) ) ;
  223. CPG = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' CP ;
  224. LAMBDAG = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' LAMBDA ;
  225. MUH = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUH ;
  226. MUO = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUO ;
  227. MUN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MUN ;
  228. MUG = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' MU ;
  229. *
  230. * Propriétés déduites des autres
  231. *
  232. * capa. calo. à volume constant et constante Gamma
  233. CVH = '-' CPH ('/' RGP MMH) ;
  234. CVO = '-' CPO ('/' RGP MMO) ;
  235. CVN = '-' CPN ('/' RGP MMN) ;
  236. CVG = '-' CPG ('*' RGP ('INVERSE' MMG)) ;
  237. GAMMAG = '/' CPG CVG ;
  238. * diffusivité thermique et enthalpie de formation à 0K
  239. KAPPAG = '/' LAMBDAG ('*' RN0 CPG) ;
  240. H0KH = -4.195D6 ;
  241. H0KO = -2.634D5 ;
  242. H0KN = -2.953D5 ;
  243. * fractions volumiques
  244. RYH20 = '*' RN0 YH20 ;
  245. RYH20 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' RYH20) 'H2 ' ;
  246. RYO20 = '*' RN0 YO20 ;
  247. RYO20 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' RYO20) 'O2 ' ;
  248. * pression
  249. PRESG = '*' RN0 ('*' ('*' RGP ('INVERSE' MMG)) TN0) ;
  250. *
  251. GN0 = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (
  252. ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
  253. ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET')) ;
  254. *;; Test 0 (Opérateur PRIM)
  255. ETHE = RN0 '*' CVG '*' TN0 ;
  256. ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0)) ;
  257. * ECCC = RN0 '*' ( ('*' (TGAZ . 'H2 ' . 'H0K') YH20)
  258. * '+' ('*' (TGAZ . 'N2 ' . 'H0K') YN20)
  259. * ) ;
  260. RETN0 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE'
  261. * (ETHE '+' ECIN '+' ECCC) ;
  262. (ETHE '+' ECIN) ;
  263. *
  264. * Propriétés physiques demandées par les opérateurs
  265. * stockées dans la table TGAZ
  266. *
  267. TGAZ = 'TABLE' ;
  268. TGAZ . 'ESPNEULE' = 'N2 ' ;
  269. TGAZ . 'ESPEULE' = 'MOTS' 'H2 ' 'O2 ' ;
  270. TGAZ . 'NORD' = 0 ;
  271. TGAZ . 'N2 ' = 'TABLE' ;
  272. TGAZ . 'H2 ' = 'TABLE' ;
  273. TGAZ . 'O2 ' = 'TABLE' ;
  274. TGAZ . 'CP ' = 'TABLE' ;
  275. TGAZ . 'CV ' = 'TABLE' ;
  276. **** Regressions polynomials
  277. TGAZ . 'H2 ' . 'A' = 'PROG' CVH ;
  278. TGAZ . 'O2 ' . 'A' = 'PROG' CVO ;
  279. TGAZ . 'N2 ' . 'A' = 'PROG' CVN ;
  280. TGAZ . 'CV' . 'H2 ' = CVH ;
  281. TGAZ . 'CV' . 'O2 ' = CVO ;
  282. TGAZ . 'CV' . 'N2 ' = CVN ;
  283. **** R (J/Kg/K)
  284. TGAZ . 'H2 ' . 'R' = ('/' RGP MMH) ;
  285. TGAZ . 'O2 ' . 'R' = ('/' RGP MMO) ;
  286. TGAZ . 'N2 ' . 'R' = ('/' RGP MMN) ;
  287. TGAZ . 'CP' . 'H2 ' = CPH ;
  288. TGAZ . 'CP' . 'O2 ' = CPO ;
  289. TGAZ . 'CP' . 'N2 ' = CPN ;
  290. **** "Enthalpies" (ou energies) de formations a OK (J/Kg)
  291. TGAZ . 'H2 ' . 'H0K' = H0KH ;
  292. TGAZ . 'O2 ' . 'H0K' = H0KO ;
  293. TGAZ . 'N2 ' . 'H0K' = H0KN ;
  294. **** Coeff diffusion
  295. TGAZ . 'H2 ' . 'CDIFF' = MUH ;
  296. TGAZ . 'O2 ' . 'CDIFF' = MUO ;
  297. TGAZ . 'N2 ' . 'CDIFF' = MUN ;
  298. *
  299. VN0 PRES TMPR FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN0 GN0 RETN0
  300. ('+' RYH20 RYO20) ;
  301. ERR1 = '/' ('MAXIMUM' (PRES '-' PRESG) 'ABS')
  302. ('MAXIMUM' PRESG) ;
  303. ERR2 = '/' ('MAXIMUM' (GN0 '-' (RN0 '*' VN0 ('MOTS' 'SCAL' 'SCAL')
  304. ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))) 'ABS')
  305. ('MAXIMUM' GN0) ;
  306. ERR3 = '/' ('MAXIMUM' (TMPR '-' TN0) 'ABS')
  307. ('MAXIMUM' TN0) ;
  308. FMH2 = 'EXCO' 'H2' FMHO2 ;
  309. FMO2 = 'EXCO' 'O2' FMHO2 ;
  310. ERR4 = '/' ('MAXIMUM' (FMH2 '-' YH20) 'ABS')
  311. ('MAXIMUM' YH20) ;
  312. ERR4B = '/' ('MAXIMUM' (FMO2 '-' YO20) 'ABS')
  313. ('MAXIMUM' YO20) ;
  314. ERR5 = '/' ('MAXIMUM' (GAM2 '-' GAMMAG) 'ABS')
  315. ('MAXIMUM' GAMMAG) ;
  316. 'MESSAGE' ('CHAINE' 'ERR1=' ERR1) ;
  317. 'MESSAGE' ('CHAINE' 'ERR2=' ERR2) ;
  318. 'MESSAGE' ('CHAINE' 'ERR3=' ERR3) ;
  319. 'MESSAGE' ('CHAINE' 'ERR4=' ERR4) ;
  320. 'MESSAGE' ('CHAINE' 'ERR4B=' ERR4B) ;
  321. 'MESSAGE' ('CHAINE' 'ERR5=' ERR5) ;
  322. 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ERR3 ERR4 ERR4B ERR5) 'ABS' )
  323. '>' 1.0D-6) ;
  324. 'MESSAGE' 'Problem 0' ;
  325. 'ERREUR' 5 ;
  326. 'FINSI' ;
  327. 'SI' GRAPH;
  328. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET'
  329. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
  330. 'FINSI' ;
  331. *; Calcul du résidu et du jacobien de référence
  332. * Les valeurs en $DOM9 'CENTRE'
  333. PCON = ('DOMA' $DOM9 'CENTRE') 'POIN' 1 ;
  334. ro0 = 'EXTRAIRE' RN0 PCON 'SCAL' ;
  335. gnx0 = 'EXTRAIRE' GN0 PCON 'UX' ;
  336. gny0 = 'EXTRAIRE' GN0 PCON 'UY' ;
  337. ryh0 = 'EXTRAIRE' RYH20 PCON 'H2 ' ;
  338. ryo0 = 'EXTRAIRE' RYO20 PCON 'O2 ' ;
  339. ret0 = 'EXTRAIRE' RETN0 PCON 'SCAL' ;
  340. RN = 'COPIER' RN0 ;
  341. GN = 'COPIER' GN0 ;
  342. RETN = 'COPIER' RETN0 ;
  343. RYH2 = 'COPIER' RYH20 ;
  344. RYO2 = 'COPIER' RYO20 ;
  345. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  346. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  347. ('+' RYH2 RYO2) ;
  348. FMH2 = 'EXCO' 'H2' FMHO2 ;
  349. FMO2 = 'EXCO' 'O2' FMHO2 ;
  350. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  351. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  352. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  353. GRYH20 CGRYH20 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  354. GRYO20 CGRYO20 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  355. GRYN20 CGRYN20 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  356. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  357. TGAZ . 'H2 ' . 'GRADYK' = GRYH20 ;
  358. TGAZ . 'H2 ' . 'CGRYK' = CGRYH20 ;
  359. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  360. TGAZ . 'O2 ' . 'GRADYK' = GRYO20 ;
  361. TGAZ . 'O2 ' . 'CGRYK' = CGRYO20 ;
  362. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  363. TGAZ . 'N2 ' . 'GRADYK' = GRYN20 ;
  364. TGAZ . 'N2 ' . 'CGRYK' = CGRYN20 ;
  365. *
  366. JACO CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  367. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  368. LISTINCO ;
  369. ***********************
  370. ***** Le residu *******
  371. ***********************
  372.  
  373. DEBRN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  374. DEBGNX0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  375. DEBGNY0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  376. DEBRETN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  377. DEBRYHN0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  378. DEBRYON0 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  379. *; Test1 : J(DOM9->DOM9)
  380. 'MESSAGE' '************************' ;
  381. 'MESSAGE' ' Test1 : J(DOM9->DOM9) ' ;
  382. 'MESSAGE' '************************' ;
  383. * On compare le jacobien et la variation du residu
  384. * en $DOM9 'CENTRE' par rapport à une variation
  385. * infinitésimal en $DOM9 'CENTRE'
  386. *
  387. *;; Extraction des valeurs du jacobien de référence
  388. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  389. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
  390. 'RYO2' 0.0 'NATURE' 'DISCRET') 'ET'
  391. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 1.0
  392. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  393. 'NATURE' 'DISCRET') ;
  394. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  395. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  396. 'NATURE' 'DISCRET') 'ET'
  397. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
  398. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  399. 'NATURE' 'DISCRET') ;
  400. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  401. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  402. 'NATURE' 'DISCRET') 'ET'
  403. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
  404. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  405. 'NATURE' 'DISCRET') ;
  406. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  407. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  408. 'NATURE' 'DISCRET') 'ET'
  409. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
  410. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
  411. 'NATURE' 'DISCRET') ;
  412. UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  413. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  414. 'NATURE' 'DISCRET') 'ET'
  415. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
  416. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
  417. 'NATURE' 'DISCRET') ;
  418. UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  419. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  420. 'NATURE' 'DISCRET') 'ET'
  421. ('MANUEL' 'CHPO' ('DOMA' $DOM9 'CENTRE') 6 'RN' 0.0
  422. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 1.0
  423. 'NATURE' 'DISCRET') ;
  424.  
  425.  
  426. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  427.  
  428. *
  429. *
  430. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  431. * dRES_GXN '/' dRN ('RUXN') ;
  432. * dRES_GYN '/' dRN ('RUYN') ;
  433. * dRES_RETN '/' dRN ('RETN') ;
  434. * DDGX contient ...
  435. *
  436. *
  437.  
  438. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  439. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  440. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  441. DDRYH = 'KOPS' JACO 'MULT' UNRYH ;
  442. DDRYO = 'KOPS' JACO 'MULT' UNRYO ;
  443.  
  444. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  445. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  446. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  447. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  448. DRYHR = 'EXTRAIRE' DDRHO PCON 'RYH2' ;
  449. DRYOR = 'EXTRAIRE' DDRHO PCON 'RYO2' ;
  450.  
  451. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  452. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  453. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  454. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  455. DRYHGX = 'EXTRAIRE' DDGX PCON 'RYH2' ;
  456. DRYOGX = 'EXTRAIRE' DDGX PCON 'RYO2' ;
  457.  
  458. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  459. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  460. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  461. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  462. DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
  463. DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;
  464.  
  465. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  466. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  467. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  468. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  469. DRYHRET = 'EXTRAIRE' DDRET PCON 'RYH2' ;
  470. DRYORET = 'EXTRAIRE' DDRET PCON 'RYO2' ;
  471.  
  472. DRRYO = 'EXTRAIRE' DDRYO PCON 'RN' ;
  473. DGXRYO = 'EXTRAIRE' DDRYO PCON 'RUXN' ;
  474. DGYRYO = 'EXTRAIRE' DDRYO PCON 'RUYN' ;
  475. DRETRYO = 'EXTRAIRE' DDRYO PCON 'RETN' ;
  476. DRYHRYO = 'EXTRAIRE' DDRYO PCON 'RYH2' ;
  477. DRYORYO = 'EXTRAIRE' DDRYO PCON 'RYO2' ;
  478.  
  479. DRRYH = 'EXTRAIRE' DDRYH PCON 'RN' ;
  480. DGXRYH = 'EXTRAIRE' DDRYH PCON 'RUXN' ;
  481. DGYRYH = 'EXTRAIRE' DDRYH PCON 'RUYN' ;
  482. DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
  483. DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
  484. DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
  485. *;; Test 1.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
  486. 'MESSAGE' 'Test 1.1 ro1 = ro0 + delta ' ;
  487. *;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
  488. ro1 = ro0 '*' (1 '+' DELTA) ;
  489. RNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ro1 ;
  490. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM9 ;
  491. GN = 'COPIER' GN0 ;
  492. RETN = 'COPIER' RETN0 ;
  493. RYH2 = 'COPIER' RYH20 ;
  494. RYO2 = 'COPIER' RYO20 ;
  495. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  496. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  497. ('+' RYH2 RYO2) ;
  498. FMH2 = 'EXCO' 'H2' FMHO2 ;
  499. FMO2 = 'EXCO' 'O2' FMHO2 ;
  500. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  501. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  502. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  503. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  504. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  505. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  506. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  507. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  508. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  509. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  510. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  511. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  512. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  513. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  514. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  515. *
  516. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  517. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  518. LISTINCO ;
  519. *;;; Extraction des composantes du résidu
  520. ***********************
  521. ***** Le residu *******
  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. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  528. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  529. *;;; Jacobien approché
  530. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  531. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  532. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  533. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  534. DRYHRN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ro0) ;
  535. DRYORN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ro0) ;
  536. *;;; Comparaison Jacobien référence et approché
  537. ERR1 = CALCERR DRR DRRN ;
  538. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR ' ERR=' ERR1) ;
  539. 'SI' (ERR1 > ERRZER) ;
  540. 'MESSAGE' 'Problem 1';
  541. 'ERREUR' 5 ;
  542. 'FINSI' ;
  543.  
  544. ERR1 = CALCERR DGXR DGXRN ;
  545. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR ' ERR=' ERR1) ;
  546. 'SI' (ERR1 > ERRTOL) ;
  547. 'MESSAGE' 'Problem 2';
  548. 'ERREUR' 5 ;
  549. 'FINSI' ;
  550.  
  551. ERR1 = CALCERR DGYR DGYRN ;
  552. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR ' ERR=' ERR1) ;
  553. 'SI' (ERR1 > ERRTOL) ;
  554. 'MESSAGE' 'Problem 3';
  555. 'ERREUR' 5 ;
  556. 'FINSI' ;
  557.  
  558. ERR1 = CALCERR DRETR DRETRN ;
  559. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
  560. 'SI' (ERR1 > ERRTO2) ;
  561. 'MESSAGE' 'Problem 4';
  562. 'ERREUR' 5 ;
  563. 'FINSI' ;
  564.  
  565. ERR1 = CALCERR DRYHR DRYHRN ;
  566. 'MESSAGE' ('CHAINE' 'DRYHRN=' DRYHRN ' DRYHR=' DRYHR ' ERR=' ERR1) ;
  567. 'SI' (ERR1 > ERRTO2) ;
  568. 'MESSAGE' 'Problem 5';
  569. 'ERREUR' 5 ;
  570. 'FINSI' ;
  571.  
  572. ERR1 = CALCERR DRYOR DRYORN ;
  573. 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
  574. 'SI' (ERR1 > ERRTO2) ;
  575. 'MESSAGE' 'Problem 6';
  576. 'ERREUR' 5 ;
  577. 'FINSI' ;
  578. *;; Test 1.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
  579. 'MESSAGE' 'Test 1.2 gnx1 = gnx0 + delta ' ;
  580. *;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
  581. gnx1 = gnx0 '*' (1.D0 '+' DELTA) ;
  582. GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx1 gny0) ;
  583. RN = 'COPIER' RN0 ;
  584. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
  585. RETN = 'COPIER' RETN0 ;
  586. RYH2 = 'COPIER' RYH20 ;
  587. RYO2 = 'COPIER' RYO20 ;
  588. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  589. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  590. ('+' RYH2 RYO2) ;
  591. FMH2 = 'EXCO' 'H2' FMHO2 ;
  592. FMO2 = 'EXCO' 'O2' FMHO2 ;
  593. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  594. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  595. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  596. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  597. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  598. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  599. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  600. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  601. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  602. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  603. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  604. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  605. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  606. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  607. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  608. *
  609. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  610. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  611. LISTINCO ;
  612. *;;; Extraction des composantes du résidu
  613. ***********************
  614. ***** Le residu *******
  615. ***********************
  616. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  617. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  618. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  619. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  620. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  621. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  622. *;;; Jacobien approché
  623. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
  624. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
  625. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnx0) ;
  626. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnx0) ;
  627. DRYHGXN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnx0) ;
  628. DRYOGXN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnx0) ;
  629. *;;; Comparaison Jacobien référence et approché
  630. ERR1 = CALCERR DRGX DRGXN ;
  631. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRR=' DRGX ' ERR=' ERR1) ;
  632. 'SI' (ERR1 > ERRZER) ;
  633. 'MESSAGE' 'Problem 7';
  634. 'ERREUR' 5 ;
  635. 'FINSI' ;
  636.  
  637. ERR1 = CALCERR DGXGX DGXGXN ;
  638. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX ' ERR=' ERR1) ;
  639. 'SI' (ERR1 > ERRTOL) ;
  640. 'MESSAGE' 'Problem 8';
  641. 'ERREUR' 5 ;
  642. 'FINSI' ;
  643.  
  644. ERR1 = CALCERR DGYGX DGYGXN ;
  645. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX ' ERR=' ERR1) ;
  646. 'SI' (ERR1 > ERRTOL) ;
  647. 'MESSAGE' 'Problem 9';
  648. 'ERREUR' 5 ;
  649. 'FINSI' ;
  650.  
  651. ERR1 = CALCERR DRETGX DRETGXN ;
  652. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX ' ERR=' ERR1);
  653. 'SI' (ERR1 > ERRTO2) ;
  654. 'MESSAGE' 'Problem 10';
  655. 'ERREUR' 5 ;
  656. 'FINSI' ;
  657.  
  658. ERR1 = CALCERR DRYHGX DRYHGXN ;
  659. 'MESSAGE' ('CHAINE' 'DRYHGXN=' DRYHGXN ' DRYHGX=' DRYHGX ' ERR=' ERR1);
  660. 'SI' (ERR1 > ERRZER) ;
  661. 'MESSAGE' 'Problem 11';
  662. 'ERREUR' 5 ;
  663. 'FINSI' ;
  664.  
  665. ERR1 = CALCERR DRYOGX DRYOGXN ;
  666. 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
  667. 'SI' (ERR1 > ERRZER) ;
  668. 'MESSAGE' 'Problem 12';
  669. 'ERREUR' 5 ;
  670. 'FINSI' ;
  671. *;; Test 1.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
  672. 'MESSAGE' 'Test 1.3 gny1 = gny0 + delta ' ;
  673. *;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
  674. gny1 = gny0 '*' (1.D0 '+' DELTA) ;
  675. GNDOM9 = 'KCHT' $DOM9 'VECT' 'CENTRE' (gnx0 gny1) ;
  676. RN = 'COPIER' RN0 ;
  677. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM9 ;
  678. RETN = 'COPIER' RETN0 ;
  679. RYH2 = 'COPIER' RYH20 ;
  680. RYO2 = 'COPIER' RYO20 ;
  681. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  682. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  683. ('+' RYH2 RYO2) ;
  684. FMH2 = 'EXCO' 'H2' FMHO2 ;
  685. FMO2 = 'EXCO' 'O2' FMHO2 ;
  686. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  687. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  688. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  689. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  690. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  691. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  692. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  693. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  694. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  695. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  696. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  697. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  698. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  699. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  700. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  701. *
  702. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  703. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  704. LISTINCO ;
  705. *;;; Extraction des composantes du résidu
  706. ***********************
  707. ***** Le residu *******
  708. ***********************
  709. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  710. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  711. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  712. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  713. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  714. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  715. *;;; Jacobien approché
  716. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
  717. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
  718. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gny0) ;
  719. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gny0) ;
  720. DRYHGYN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gny0) ;
  721. DRYOGYN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gny0) ;
  722. *;;; Comparaison Jacobien référence et approché
  723. ERR1 = CALCERR DRGY DRGYN ;
  724. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY ' ERR=' ERR1) ;
  725. 'SI' (ERR1 > ERRZER) ;
  726. 'MESSAGE' 'Problem 13';
  727. 'ERREUR' 5 ;
  728. 'FINSI' ;
  729.  
  730. ERR1 = CALCERR DGXGY DGXGYN ;
  731. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY ' ERR=' ERR1) ;
  732. 'SI' (ERR1 > ERRTOL) ;
  733. 'MESSAGE' 'Problem 14';
  734. 'ERREUR' 5 ;
  735. 'FINSI' ;
  736.  
  737. ERR1 = CALCERR DGYGY DGYGYN ;
  738. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY ' ERR=' ERR1) ;
  739. 'SI' (ERR1 > ERRTOL) ;
  740. 'MESSAGE' 'Problem 15';
  741. 'ERREUR' 5 ;
  742. 'FINSI' ;
  743.  
  744. ERR1 = CALCERR DRETGY DRETGYN ;
  745. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY ' ERR=' ERR1);
  746. 'SI' (ERR1 > ERRTO2) ;
  747. 'MESSAGE' 'Problem 16';
  748. 'ERREUR' 5 ;
  749. 'FINSI' ;
  750.  
  751. ERR1 = CALCERR DRYHGY DRYHGYN ;
  752. 'MESSAGE' ('CHAINE' 'DRYHGYN=' DRYHGYN ' DRYHGY=' DRYHGY ' ERR=' ERR1);
  753. 'SI' (ERR1 > ERRZER) ;
  754. 'MESSAGE' 'Problem 17';
  755. 'ERREUR' 5 ;
  756. 'FINSI' ;
  757.  
  758. ERR1 = CALCERR DRYOGY DRYOGYN ;
  759. 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
  760. 'SI' (ERR1 > ERRZER) ;
  761. 'MESSAGE' 'Problem 18';
  762. 'ERREUR' 5 ;
  763. 'FINSI' ;
  764. *;; Test 1.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
  765. 'MESSAGE' 'Test 1.4 ret1 = ret0 + delta ' ;
  766. *;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
  767. ret1 = ret0 '*' (1.D0 '+' DELTA) ;
  768. RETNDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ret1 ;
  769. RN = 'COPIER' RN0 ;
  770. GN = 'COPIER' GN0 ;
  771. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM9 ;
  772. RYH2 = 'COPIER' RYH20 ;
  773. RYO2 = 'COPIER' RYO20 ;
  774. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  775. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  776. ('+' RYH2 RYO2) ;
  777. FMH2 = 'EXCO' 'H2' FMHO2 ;
  778. FMO2 = 'EXCO' 'O2' FMHO2 ;
  779. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  780. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  781. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  782. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  783. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  784. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  785. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  786. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  787. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  788. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  789. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  790. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  791. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  792. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  793. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  794. *
  795. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  796. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  797. LISTINCO ;
  798. *;;; Extraction des composantes du résidu
  799. ***********************
  800. ***** Le residu *******
  801. ***********************
  802. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  803. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  804. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  805. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  806. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  807. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  808. *;;; Jacobien approché
  809. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  810. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  811. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  812. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  813. DRYHRETN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ret0) ;
  814. DRYORETN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ret0) ;
  815. *;;; Comparaison Jacobien référence et approché
  816. ERR1 = CALCERR DRRET DRRETN ;
  817. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET ' ERR=' ERR1) ;
  818. 'SI' (ERR1 > ERRZER) ;
  819. 'MESSAGE' 'Problem 19';
  820. 'ERREUR' 5 ;
  821. 'FINSI' ;
  822.  
  823. ERR1 = CALCERR DGXRET DGXRETN ;
  824. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET ' ERR=' ERR1);
  825. 'SI' (ERR1 > ERRZER) ;
  826. 'MESSAGE' 'Problem 20';
  827. 'ERREUR' 5 ;
  828. 'FINSI' ;
  829.  
  830. ERR1 = CALCERR DGYRET DGYRETN ;
  831. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET ' ERR=' ERR1);
  832. 'SI' (ERR1 > ERRZER) ;
  833. 'MESSAGE' 'Problem 21';
  834. 'ERREUR' 5 ;
  835. 'FINSI' ;
  836.  
  837. ERR1 = CALCERR DRETRET DRETRETN ;
  838. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET
  839. ' ERR=' ERR1) ;
  840. 'SI' (ERR1 > ERRTO3) ;
  841. 'MESSAGE' 'Problem 22';
  842. 'ERREUR' 5 ;
  843. 'FINSI' ;
  844.  
  845. ERR1 = CALCERR DRYHRET DRYHRETN ;
  846. 'MESSAGE' ('CHAINE' 'DRYHRETN=' DRYHRETN ' DRYHRET=' DRYHRET
  847. ' ERR=' ERR1) ;
  848. 'SI' (ERR1 > ERRZER) ;
  849. 'MESSAGE' 'Problem 23';
  850. 'ERREUR' 5 ;
  851. 'FINSI' ;
  852.  
  853. ERR1 = CALCERR DRYORET DRYORETN ;
  854. 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
  855. ' ERR=' ERR1) ;
  856. 'SI' (ERR1 > ERRZER) ;
  857. 'MESSAGE' 'Problem 24';
  858. 'ERREUR' 5 ;
  859. 'FINSI' ;
  860. *;; Test 1.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
  861. 'MESSAGE' 'Test 1.5 ryh1 = ryh0 + delta ' ;
  862. *;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
  863. ryh1 = ryh0 '*' (1 '+' DELTA) ;
  864. RYHDOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ryh1 ;
  865. RN = 'COPIER' RN0 ;
  866. GN = 'COPIER' GN0 ;
  867. RETN = 'COPIER' RETN0 ;
  868. RYH2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
  869. RYHDOM9) 'H2 ' ;
  870. RYO2 = 'COPIER' RYO20 ;
  871. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  872. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  873. ('+' RYH2 RYO2) ;
  874. FMH2 = 'EXCO' 'H2' FMHO2 ;
  875. FMO2 = 'EXCO' 'O2' FMHO2 ;
  876. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  877. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  878. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  879. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  880. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  881. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  882. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  883. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  884. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  885. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  886. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  887. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  888. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  889. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  890. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  891. *
  892. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  893. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  894. LISTINCO ;
  895. *;;; Extraction des composantes du résidu
  896. ***********************
  897. ***** Le residu *******
  898. ***********************
  899. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  900. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  901. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  902. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  903. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  904. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  905. *;;; Jacobien approché
  906. DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
  907. DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
  908. DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryh0) ;
  909. DRETRYHN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryh0) ;
  910. DRYHRYHN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryh0) ;
  911. DRYORYHN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryh0) ;
  912. *;;; Comparaison Jacobien référence et approché
  913. ERR1 = CALCERR DRRYH DRRYHN ;
  914. 'MESSAGE' ('CHAINE' 'DRRYHN=' DRRYHN ' DRRYH=' DRRYH ' ERR=' ERR1) ;
  915. 'SI' (ERR1 > ERRZER) ;
  916. 'MESSAGE' 'Problem 25';
  917. 'ERREUR' 5 ;
  918. 'FINSI' ;
  919.  
  920. ERR1 = CALCERR DGXRYH DGXRYHN ;
  921. 'MESSAGE' ('CHAINE' 'DGXRYHN=' DGXRYHN ' DGXRYH=' DGXRYH ' ERR=' ERR1);
  922. 'SI' (ERR1 > ERRZER) ;
  923. 'MESSAGE' 'Problem 26';
  924. 'ERREUR' 5 ;
  925. 'FINSI' ;
  926.  
  927. ERR1 = CALCERR DGYRYH DGYRYHN ;
  928. 'MESSAGE' ('CHAINE' 'DGYRYHN=' DGYRYHN ' DGYRYH=' DGYRYH ' ERR=' ERR1);
  929. 'SI' (ERR1 > ERRZER) ;
  930. 'MESSAGE' 'Problem 27';
  931. 'ERREUR' 5 ;
  932. 'FINSI' ;
  933.  
  934. ERR1 = CALCERR DRETRYH DRETRYHN ;
  935. 'MESSAGE' ('CHAINE' 'DRETRYHN=' DRETRYHN ' DRETRYH=' DRETRYH
  936. ' ERR=' ERR1) ;
  937. 'SI' (ERR1 > ERRTO3) ;
  938. 'MESSAGE' 'Problem 28';
  939. 'ERREUR' 5 ;
  940. 'FINSI' ;
  941.  
  942. ERR1 = CALCERR DRYHRYH DRYHRYHN ;
  943. 'MESSAGE' ('CHAINE' 'DRYHRYHN=' DRYHRYHN ' DRYHRYH=' DRYHRYH
  944. ' ERR=' ERR1) ;
  945. 'SI' (ERR1 > ERRTOL) ;
  946. 'MESSAGE' 'Problem 29';
  947. 'ERREUR' 5 ;
  948. 'FINSI' ;
  949.  
  950. ERR1 = CALCERR DRYORYH DRYORYHN ;
  951. 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
  952. ' ERR=' ERR1) ;
  953. 'SI' (ERR1 > ERRZER) ;
  954. 'MESSAGE' 'Problem 30';
  955. 'ERREUR' 5 ;
  956. 'FINSI' ;
  957. *;; Test 1.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
  958. 'MESSAGE' 'Test 1.6 ryo1 = ryo0 + delta ' ;
  959. *;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
  960. ryo1 = ryo0 '*' (1 '+' DELTA) ;
  961. RYODOM9 = 'KCHT' $DOM9 'SCAL' 'CENTRE' ryo1 ;
  962. RN = 'COPIER' RN0 ;
  963. GN = 'COPIER' GN0 ;
  964. RETN = 'COPIER' RETN0 ;
  965. RYH2 = 'COPIER' RYH20 ;
  966. RYO2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
  967. RYODOM9) 'O2 ' ;
  968. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  969. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  970. ('+' RYH2 RYO2) ;
  971. FMH2 = 'EXCO' 'H2' FMHO2 ;
  972. FMO2 = 'EXCO' 'O2' FMHO2 ;
  973. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  974. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  975. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  976. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  977. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  978. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  979. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  980. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  981. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  982. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  983. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  984. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  985. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  986. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  987. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  988. *
  989. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  990. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  991. LISTINCO ;
  992. *;;; Extraction des composantes du résidu
  993. ***********************
  994. ***** Le residu *******
  995. ***********************
  996. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  997. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  998. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  999. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1000. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1001. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1002. *;;; Jacobien approché
  1003. DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
  1004. DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
  1005. DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryo0) ;
  1006. DRETRYON = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryo0) ;
  1007. DRYHRYON = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryo0) ;
  1008. DRYORYON = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryo0) ;
  1009. *;;; Comparaison Jacobien référence et approché
  1010. ERR1 = CALCERR DRRYO DRRYON ;
  1011. 'MESSAGE' ('CHAINE' 'DRRYON=' DRRYON ' DRRYO=' DRRYO ' ERR=' ERR1) ;
  1012. 'SI' (ERR1 > ERRZER) ;
  1013. 'MESSAGE' 'Problem 31';
  1014. 'ERREUR' 5 ;
  1015. 'FINSI' ;
  1016.  
  1017. ERR1 = CALCERR DGXRYO DGXRYON ;
  1018. 'MESSAGE' ('CHAINE' 'DGXRYON=' DGXRYON ' DGXRYO=' DGXRYO ' ERR=' ERR1);
  1019. 'SI' (ERR1 > ERRZER) ;
  1020. 'MESSAGE' 'Problem 32';
  1021. 'ERREUR' 5 ;
  1022. 'FINSI' ;
  1023.  
  1024. ERR1 = CALCERR DGYRYO DGYRYON ;
  1025. 'MESSAGE' ('CHAINE' 'DGYRYON=' DGYRYON ' DGYRYO=' DGYRYO ' ERR=' ERR1);
  1026. 'SI' (ERR1 > ERRZER) ;
  1027. 'MESSAGE' 'Problem 33';
  1028. 'ERREUR' 5 ;
  1029. 'FINSI' ;
  1030.  
  1031. ERR1 = CALCERR DRETRYO DRETRYON ;
  1032. 'MESSAGE' ('CHAINE' 'DRETRYON=' DRETRYON ' DRETRYO=' DRETRYO
  1033. ' ERR=' ERR1) ;
  1034. 'SI' (ERR1 > ERRTO3) ;
  1035. 'MESSAGE' 'Problem 34';
  1036. 'ERREUR' 5 ;
  1037. 'FINSI' ;
  1038.  
  1039. ERR1 = CALCERR DRYHRYO DRYHRYON ;
  1040. 'MESSAGE' ('CHAINE' 'DRYHRYON=' DRYHRYON ' DRYHRYO=' DRYHRYO
  1041. ' ERR=' ERR1) ;
  1042. 'SI' (ERR1 > ERRZER) ;
  1043. 'MESSAGE' 'Problem 35';
  1044. 'ERREUR' 5 ;
  1045. 'FINSI' ;
  1046.  
  1047. ERR1 = CALCERR DRYORYO DRYORYON ;
  1048. 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
  1049. ' ERR=' ERR1) ;
  1050. 'SI' (ERR1 > ERRTOL) ;
  1051. 'MESSAGE' 'Problem 36';
  1052. 'ERREUR' 5 ;
  1053. 'FINSI' ;
  1054. *; Test2 : J(DOM6->DOM9)
  1055. 'MESSAGE' '************************' ;
  1056. 'MESSAGE' ' Test2 : J(DOM6->DOM9) ' ;
  1057. 'MESSAGE' '************************' ;
  1058. * On compare le jacobien et la variation du residu
  1059. * en $DOM9 . 'CENTRE' par rapport à une variation
  1060. * infinitésimal en $DOM6 . 'CENTRE'
  1061. *
  1062. *;; Extraction des valeurs du jacobien de référence
  1063. * Les valeurs en $DOM6 'CENTRE'
  1064. PCELL = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
  1065. ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
  1066. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  1067. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  1068. ryh0 = 'EXTRAIRE' RYH20 PCELL 'H2 ' ;
  1069. ryo0 = 'EXTRAIRE' RYO20 PCELL 'O2 ' ;
  1070. ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;
  1071.  
  1072. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1073. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
  1074. 'RYO2' 0.0 'NATURE' 'DISCRET') 'ET'
  1075. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 1.0
  1076. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1077. 'NATURE' 'DISCRET') ;
  1078. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1079. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1080. 'NATURE' 'DISCRET') 'ET'
  1081. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
  1082. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1083. 'NATURE' 'DISCRET') ;
  1084. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1085. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1086. 'NATURE' 'DISCRET') 'ET'
  1087. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
  1088. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1089. 'NATURE' 'DISCRET') ;
  1090. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1091. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1092. 'NATURE' 'DISCRET') 'ET'
  1093. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
  1094. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
  1095. 'NATURE' 'DISCRET') ;
  1096. UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1097. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1098. 'NATURE' 'DISCRET') 'ET'
  1099. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
  1100. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
  1101. 'NATURE' 'DISCRET') ;
  1102. UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1103. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1104. 'NATURE' 'DISCRET') 'ET'
  1105. ('MANUEL' 'CHPO' ('DOMA' $DOM6 'CENTRE') 6 'RN' 0.0
  1106. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 1.0
  1107. 'NATURE' 'DISCRET') ;
  1108.  
  1109.  
  1110. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  1111.  
  1112. *
  1113. *
  1114. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  1115. * dRES_GXN '/' dRN ('RUXN') ;
  1116. * dRES_GYN '/' dRN ('RUYN') ;
  1117. * dRES_RETN '/' dRN ('RETN') ;
  1118. * DDGX contient ...
  1119. *
  1120. *
  1121.  
  1122. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  1123. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  1124. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  1125. DDRYH = 'KOPS' JACO 'MULT' UNRYH ;
  1126. DDRYO = 'KOPS' JACO 'MULT' UNRYO ;
  1127.  
  1128. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  1129. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  1130. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  1131. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  1132. DRYHR = 'EXTRAIRE' DDRHO PCON 'RYH2' ;
  1133. DRYOR = 'EXTRAIRE' DDRHO PCON 'RYO2' ;
  1134.  
  1135. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  1136. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  1137. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  1138. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  1139. DRYHGX = 'EXTRAIRE' DDGX PCON 'RYH2' ;
  1140. DRYOGX = 'EXTRAIRE' DDGX PCON 'RYO2' ;
  1141.  
  1142. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  1143. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  1144. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  1145. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  1146. DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
  1147. DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;
  1148.  
  1149. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  1150. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  1151. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  1152. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  1153. DRYHRET = 'EXTRAIRE' DDRET PCON 'RYH2' ;
  1154. DRYORET = 'EXTRAIRE' DDRET PCON 'RYO2' ;
  1155.  
  1156. DRRYO = 'EXTRAIRE' DDRYO PCON 'RN' ;
  1157. DGXRYO = 'EXTRAIRE' DDRYO PCON 'RUXN' ;
  1158. DGYRYO = 'EXTRAIRE' DDRYO PCON 'RUYN' ;
  1159. DRETRYO = 'EXTRAIRE' DDRYO PCON 'RETN' ;
  1160. DRYHRYO = 'EXTRAIRE' DDRYO PCON 'RYH2' ;
  1161. DRYORYO = 'EXTRAIRE' DDRYO PCON 'RYO2' ;
  1162.  
  1163. DRRYH = 'EXTRAIRE' DDRYH PCON 'RN' ;
  1164. DGXRYH = 'EXTRAIRE' DDRYH PCON 'RUXN' ;
  1165. DGYRYH = 'EXTRAIRE' DDRYH PCON 'RUYN' ;
  1166. DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
  1167. DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
  1168. DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
  1169. *;; Test 2.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
  1170. 'MESSAGE' 'Test 2.1 ro1 = ro0 + delta ' ;
  1171. *;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
  1172. ro1 = ro0 '*' (1 '+' DELTA) ;
  1173. RNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ro1 ;
  1174. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM6 ;
  1175. GN = 'COPIER' GN0 ;
  1176. RETN = 'COPIER' RETN0 ;
  1177. RYH2 = 'COPIER' RYH20 ;
  1178. RYO2 = 'COPIER' RYO20 ;
  1179. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1180. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1181. ('+' RYH2 RYO2) ;
  1182. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1183. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1184. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1185. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1186. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1187. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1188. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1189. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1190. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1191. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1192. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1193. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1194. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1195. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1196. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1197. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1198. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1199. *
  1200. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1201. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1202. LISTINCO ;
  1203. *;;; Extraction des composantes du résidu
  1204. ***********************
  1205. ***** Le residu *******
  1206. ***********************
  1207. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1208. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1209. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1210. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1211. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1212. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1213. *;;; Jacobien approché
  1214. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  1215. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  1216. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  1217. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  1218. DRYHRN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ro0) ;
  1219. DRYORN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ro0) ;
  1220. *;;; Comparaison Jacobien référence et approché
  1221. ERR1 = CALCERR DRR DRRN ;
  1222. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR ' ERR=' ERR1) ;
  1223. 'SI' (ERR1 > ERRZER) ;
  1224. 'MESSAGE' 'Problem 1';
  1225. 'ERREUR' 5 ;
  1226. 'FINSI' ;
  1227.  
  1228. ERR1 = CALCERR DGXR DGXRN ;
  1229. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR ' ERR=' ERR1) ;
  1230. 'SI' (ERR1 > ERRTOL) ;
  1231. 'MESSAGE' 'Problem 2';
  1232. 'ERREUR' 5 ;
  1233. 'FINSI' ;
  1234.  
  1235. ERR1 = CALCERR DGYR DGYRN ;
  1236. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR ' ERR=' ERR1) ;
  1237. 'SI' (ERR1 > ERRTOL) ;
  1238. 'MESSAGE' 'Problem 3';
  1239. 'ERREUR' 5 ;
  1240. 'FINSI' ;
  1241.  
  1242. ERR1 = CALCERR DRETR DRETRN ;
  1243. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
  1244. 'SI' (ERR1 > ERRTO2) ;
  1245. 'MESSAGE' 'Problem 4';
  1246. 'ERREUR' 5 ;
  1247. 'FINSI' ;
  1248.  
  1249. ERR1 = CALCERR DRYHR DRYHRN ;
  1250. 'MESSAGE' ('CHAINE' 'DRYHRN=' DRYHRN ' DRYHR=' DRYHR ' ERR=' ERR1) ;
  1251. 'SI' (ERR1 > ERRTO2) ;
  1252. 'MESSAGE' 'Problem 5';
  1253. 'ERREUR' 5 ;
  1254. 'FINSI' ;
  1255.  
  1256. ERR1 = CALCERR DRYOR DRYORN ;
  1257. 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
  1258. 'SI' (ERR1 > ERRTO2) ;
  1259. 'MESSAGE' 'Problem 6';
  1260. 'ERREUR' 5 ;
  1261. 'FINSI' ;
  1262. *;; Test 2.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
  1263. 'MESSAGE' 'Test 2.2 gnx1 = gnx0 + delta ' ;
  1264. *;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
  1265. gnx1 = gnx0 '*' (1.D0 '+' DELTA) ;
  1266. GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx1 gny0) ;
  1267. RN = 'COPIER' RN0 ;
  1268. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
  1269. RETN = 'COPIER' RETN0 ;
  1270. RYH2 = 'COPIER' RYH20 ;
  1271. RYO2 = 'COPIER' RYO20 ;
  1272. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1273. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1274. ('+' RYH2 RYO2) ;
  1275. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1276. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1277. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1278. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1279. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1280. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1281. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1282. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1283. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1284. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1285. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1286. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1287. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1288. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1289. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1290. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1291. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1292. *
  1293. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1294. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1295. LISTINCO ;
  1296. *;;; Extraction des composantes du résidu
  1297. ***********************
  1298. ***** Le residu *******
  1299. ***********************
  1300. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1301. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1302. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1303. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1304. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1305. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1306. *;;; Jacobien approché
  1307. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
  1308. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
  1309. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnx0) ;
  1310. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnx0) ;
  1311. DRYHGXN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnx0) ;
  1312. DRYOGXN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnx0) ;
  1313. *;;; Comparaison Jacobien référence et approché
  1314. ERR1 = CALCERR DRGX DRGXN ;
  1315. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRR=' DRGX ' ERR=' ERR1) ;
  1316. 'SI' (ERR1 > ERRZER) ;
  1317. 'MESSAGE' 'Problem 7';
  1318. 'ERREUR' 5 ;
  1319. 'FINSI' ;
  1320.  
  1321. ERR1 = CALCERR DGXGX DGXGXN ;
  1322. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX ' ERR=' ERR1) ;
  1323. 'SI' (ERR1 > ERRTOL) ;
  1324. 'MESSAGE' 'Problem 8';
  1325. 'ERREUR' 5 ;
  1326. 'FINSI' ;
  1327.  
  1328. ERR1 = CALCERR DGYGX DGYGXN ;
  1329. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX ' ERR=' ERR1) ;
  1330. 'SI' (ERR1 > ERRTOL) ;
  1331. 'MESSAGE' 'Problem 9';
  1332. 'ERREUR' 5 ;
  1333. 'FINSI' ;
  1334.  
  1335. ERR1 = CALCERR DRETGX DRETGXN ;
  1336. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX ' ERR=' ERR1);
  1337. 'SI' (ERR1 > ERRTO2) ;
  1338. 'MESSAGE' 'Problem 10';
  1339. 'ERREUR' 5 ;
  1340. 'FINSI' ;
  1341.  
  1342. ERR1 = CALCERR DRYHGX DRYHGXN ;
  1343. 'MESSAGE' ('CHAINE' 'DRYHGXN=' DRYHGXN ' DRYHGX=' DRYHGX ' ERR=' ERR1);
  1344. 'SI' (ERR1 > ERRZER) ;
  1345. 'MESSAGE' 'Problem 11';
  1346. 'ERREUR' 5 ;
  1347. 'FINSI' ;
  1348.  
  1349. ERR1 = CALCERR DRYOGX DRYOGXN ;
  1350. 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
  1351. 'SI' (ERR1 > ERRZER) ;
  1352. 'MESSAGE' 'Problem 12';
  1353. 'ERREUR' 5 ;
  1354. 'FINSI' ;
  1355. *;; Test 2.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
  1356. 'MESSAGE' 'Test 2.3 gny1 = gny0 + delta ' ;
  1357. *;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
  1358. gny1 = gny0 '*' (1.D0 '+' DELTA) ;
  1359. GNDOM6 = 'KCHT' $DOM6 'VECT' 'CENTRE' (gnx0 gny1) ;
  1360. RN = 'COPIER' RN0 ;
  1361. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM6 ;
  1362. RETN = 'COPIER' RETN0 ;
  1363. RYH2 = 'COPIER' RYH20 ;
  1364. RYO2 = 'COPIER' RYO20 ;
  1365. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1366. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1367. ('+' RYH2 RYO2) ;
  1368. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1369. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1370. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1371. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1372. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1373. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1374. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1375. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1376. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1377. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1378. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1379. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1380. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1381. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1382. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1383. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1384. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1385. *
  1386. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1387. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1388. LISTINCO ;
  1389. *;;; Extraction des composantes du résidu
  1390. ***********************
  1391. ***** Le residu *******
  1392. ***********************
  1393. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1394. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1395. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1396. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1397. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1398. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1399. *;;; Jacobien approché
  1400. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
  1401. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
  1402. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gny0) ;
  1403. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gny0) ;
  1404. DRYHGYN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gny0) ;
  1405. DRYOGYN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gny0) ;
  1406. *;;; Comparaison Jacobien référence et approché
  1407. ERR1 = CALCERR DRGY DRGYN ;
  1408. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY ' ERR=' ERR1) ;
  1409. 'SI' (ERR1 > ERRZER) ;
  1410. 'MESSAGE' 'Problem 13';
  1411. 'ERREUR' 5 ;
  1412. 'FINSI' ;
  1413.  
  1414. ERR1 = CALCERR DGXGY DGXGYN ;
  1415. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY ' ERR=' ERR1) ;
  1416. 'SI' (ERR1 > ERRTOL) ;
  1417. 'MESSAGE' 'Problem 14';
  1418. 'ERREUR' 5 ;
  1419. 'FINSI' ;
  1420.  
  1421. ERR1 = CALCERR DGYGY DGYGYN ;
  1422. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY ' ERR=' ERR1) ;
  1423. 'SI' (ERR1 > ERRTOL) ;
  1424. 'MESSAGE' 'Problem 15';
  1425. 'ERREUR' 5 ;
  1426. 'FINSI' ;
  1427.  
  1428. ERR1 = CALCERR DRETGY DRETGYN ;
  1429. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY ' ERR=' ERR1);
  1430. 'SI' (ERR1 > ERRTO2) ;
  1431. 'MESSAGE' 'Problem 16';
  1432. 'ERREUR' 5 ;
  1433. 'FINSI' ;
  1434.  
  1435. ERR1 = CALCERR DRYHGY DRYHGYN ;
  1436. 'MESSAGE' ('CHAINE' 'DRYHGYN=' DRYHGYN ' DRYHGY=' DRYHGY ' ERR=' ERR1);
  1437. 'SI' (ERR1 > ERRZER) ;
  1438. 'MESSAGE' 'Problem 17';
  1439. 'ERREUR' 5 ;
  1440. 'FINSI' ;
  1441.  
  1442. ERR1 = CALCERR DRYOGY DRYOGYN ;
  1443. 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
  1444. 'SI' (ERR1 > ERRZER) ;
  1445. 'MESSAGE' 'Problem 18';
  1446. 'ERREUR' 5 ;
  1447. 'FINSI' ;
  1448. *;; Test 2.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
  1449. 'MESSAGE' 'Test 2.4 ret1 = ret0 + delta ' ;
  1450. *;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
  1451. ret1 = ret0 '*' (1.D0 '+' DELTA) ;
  1452. RETNDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ret1 ;
  1453. RN = 'COPIER' RN0 ;
  1454. GN = 'COPIER' GN0 ;
  1455. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM6 ;
  1456. RYH2 = 'COPIER' RYH20 ;
  1457. RYO2 = 'COPIER' RYO20 ;
  1458. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1459. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1460. ('+' RYH2 RYO2) ;
  1461. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1462. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1463. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1464. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1465. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1466. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1467. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1468. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1469. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1470. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1471. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1472. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1473. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1474. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1475. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1476. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1477. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1478. *
  1479. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1480. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1481. LISTINCO ;
  1482. *;;; Extraction des composantes du résidu
  1483. ***********************
  1484. ***** Le residu *******
  1485. ***********************
  1486. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1487. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1488. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1489. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1490. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1491. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1492. *;;; Jacobien approché
  1493. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  1494. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  1495. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  1496. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  1497. DRYHRETN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ret0) ;
  1498. DRYORETN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ret0) ;
  1499. *;;; Comparaison Jacobien référence et approché
  1500. ERR1 = CALCERR DRRET DRRETN ;
  1501. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET ' ERR=' ERR1) ;
  1502. 'SI' (ERR1 > ERRZER) ;
  1503. 'MESSAGE' 'Problem 19';
  1504. 'ERREUR' 5 ;
  1505. 'FINSI' ;
  1506.  
  1507. ERR1 = CALCERR DGXRET DGXRETN ;
  1508. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET ' ERR=' ERR1);
  1509. 'SI' (ERR1 > ERRZER) ;
  1510. 'MESSAGE' 'Problem 20';
  1511. 'ERREUR' 5 ;
  1512. 'FINSI' ;
  1513.  
  1514. ERR1 = CALCERR DGYRET DGYRETN ;
  1515. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET ' ERR=' ERR1);
  1516. 'SI' (ERR1 > ERRZER) ;
  1517. 'MESSAGE' 'Problem 21';
  1518. 'ERREUR' 5 ;
  1519. 'FINSI' ;
  1520.  
  1521. ERR1 = CALCERR DRETRET DRETRETN ;
  1522. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET
  1523. ' ERR=' ERR1) ;
  1524. 'SI' (ERR1 > ERRTO3) ;
  1525. 'MESSAGE' 'Problem 22';
  1526. 'ERREUR' 5 ;
  1527. 'FINSI' ;
  1528.  
  1529. ERR1 = CALCERR DRYHRET DRYHRETN ;
  1530. 'MESSAGE' ('CHAINE' 'DRYHRETN=' DRYHRETN ' DRYHRET=' DRYHRET
  1531. ' ERR=' ERR1) ;
  1532. 'SI' (ERR1 > ERRZER) ;
  1533. 'MESSAGE' 'Problem 23';
  1534. 'ERREUR' 5 ;
  1535. 'FINSI' ;
  1536.  
  1537. ERR1 = CALCERR DRYORET DRYORETN ;
  1538. 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
  1539. ' ERR=' ERR1) ;
  1540. 'SI' (ERR1 > ERRZER) ;
  1541. 'MESSAGE' 'Problem 24';
  1542. 'ERREUR' 5 ;
  1543. 'FINSI' ;
  1544. *;; Test 2.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
  1545. 'MESSAGE' 'Test 2.5 ryh1 = ryh0 + delta ' ;
  1546. *;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
  1547. ryh1 = ryh0 '*' (1 '+' DELTA) ;
  1548. RYHDOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ryh1 ;
  1549. RN = 'COPIER' RN0 ;
  1550. GN = 'COPIER' GN0 ;
  1551. RETN = 'COPIER' RETN0 ;
  1552. RYH2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
  1553. RYHDOM6) 'H2 ' ;
  1554. RYO2 = 'COPIER' RYO20 ;
  1555. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1556. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1557. ('+' RYH2 RYO2) ;
  1558. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1559. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1560. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1561. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1562. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1563. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1564. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1565. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1566. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1567. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1568. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1569. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1570. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1571. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1572. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1573. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1574. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1575. *
  1576. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1577. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1578. LISTINCO ;
  1579. *;;; Extraction des composantes du résidu
  1580. ***********************
  1581. ***** Le residu *******
  1582. ***********************
  1583. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1584. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1585. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1586. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1587. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1588. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1589. *;;; Jacobien approché
  1590. DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
  1591. DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
  1592. DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryh0) ;
  1593. DRETRYHN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryh0) ;
  1594. DRYHRYHN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryh0) ;
  1595. DRYORYHN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryh0) ;
  1596. *;;; Comparaison Jacobien référence et approché
  1597. ERR1 = CALCERR DRRYH DRRYHN ;
  1598. 'MESSAGE' ('CHAINE' 'DRRYHN=' DRRYHN ' DRRYH=' DRRYH ' ERR=' ERR1) ;
  1599. 'SI' (ERR1 > ERRZER) ;
  1600. 'MESSAGE' 'Problem 25';
  1601. 'ERREUR' 5 ;
  1602. 'FINSI' ;
  1603.  
  1604. ERR1 = CALCERR DGXRYH DGXRYHN ;
  1605. 'MESSAGE' ('CHAINE' 'DGXRYHN=' DGXRYHN ' DGXRYH=' DGXRYH ' ERR=' ERR1);
  1606. 'SI' (ERR1 > ERRZER) ;
  1607. 'MESSAGE' 'Problem 26';
  1608. 'ERREUR' 5 ;
  1609. 'FINSI' ;
  1610.  
  1611. ERR1 = CALCERR DGYRYH DGYRYHN ;
  1612. 'MESSAGE' ('CHAINE' 'DGYRYHN=' DGYRYHN ' DGYRYH=' DGYRYH ' ERR=' ERR1);
  1613. 'SI' (ERR1 > ERRZER) ;
  1614. 'MESSAGE' 'Problem 27';
  1615. 'ERREUR' 5 ;
  1616. 'FINSI' ;
  1617.  
  1618. ERR1 = CALCERR DRETRYH DRETRYHN ;
  1619. 'MESSAGE' ('CHAINE' 'DRETRYHN=' DRETRYHN ' DRETRYH=' DRETRYH
  1620. ' ERR=' ERR1) ;
  1621. 'SI' (ERR1 > ERRTO3) ;
  1622. 'MESSAGE' 'Problem 28';
  1623. 'ERREUR' 5 ;
  1624. 'FINSI' ;
  1625.  
  1626. ERR1 = CALCERR DRYHRYH DRYHRYHN ;
  1627. 'MESSAGE' ('CHAINE' 'DRYHRYHN=' DRYHRYHN ' DRYHRYH=' DRYHRYH
  1628. ' ERR=' ERR1) ;
  1629. 'SI' (ERR1 > ERRTOL) ;
  1630. 'MESSAGE' 'Problem 29';
  1631. 'ERREUR' 5 ;
  1632. 'FINSI' ;
  1633.  
  1634. ERR1 = CALCERR DRYORYH DRYORYHN ;
  1635. 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
  1636. ' ERR=' ERR1) ;
  1637. 'SI' (ERR1 > ERRZER) ;
  1638. 'MESSAGE' 'Problem 30';
  1639. 'ERREUR' 5 ;
  1640. 'FINSI' ;
  1641. *;; Test 2.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
  1642. 'MESSAGE' 'Test 2.6 ryo1 = ryo0 + delta ' ;
  1643. *;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
  1644. ryo1 = ryo0 '*' (1 '+' DELTA) ;
  1645. RYODOM6 = 'KCHT' $DOM6 'SCAL' 'CENTRE' ryo1 ;
  1646. RN = 'COPIER' RN0 ;
  1647. GN = 'COPIER' GN0 ;
  1648. RETN = 'COPIER' RETN0 ;
  1649. RYH2 = 'COPIER' RYH20 ;
  1650. RYO2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
  1651. RYODOM6) 'O2 ' ;
  1652. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1653. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1654. ('+' RYH2 RYO2) ;
  1655. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1656. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1657. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1658. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1659. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1660. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1661. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1662. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1663. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1664. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1665. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1666. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1667. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1668. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1669. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1670. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1671. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1672. *
  1673. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1674. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1675. LISTINCO ;
  1676. *;;; Extraction des composantes du résidu
  1677. ***********************
  1678. ***** Le residu *******
  1679. ***********************
  1680. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1681. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1682. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1683. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1684. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1685. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1686. *;;; Jacobien approché
  1687. DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
  1688. DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
  1689. DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryo0) ;
  1690. DRETRYON = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryo0) ;
  1691. DRYHRYON = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryo0) ;
  1692. DRYORYON = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryo0) ;
  1693. *;;; Comparaison Jacobien référence et approché
  1694. ERR1 = CALCERR DRRYO DRRYON ;
  1695. 'MESSAGE' ('CHAINE' 'DRRYON=' DRRYON ' DRRYO=' DRRYO ' ERR=' ERR1) ;
  1696. 'SI' (ERR1 > ERRZER) ;
  1697. 'MESSAGE' 'Problem 31';
  1698. 'ERREUR' 5 ;
  1699. 'FINSI' ;
  1700.  
  1701. ERR1 = CALCERR DGXRYO DGXRYON ;
  1702. 'MESSAGE' ('CHAINE' 'DGXRYON=' DGXRYON ' DGXRYO=' DGXRYO ' ERR=' ERR1);
  1703. 'SI' (ERR1 > ERRZER) ;
  1704. 'MESSAGE' 'Problem 32';
  1705. 'ERREUR' 5 ;
  1706. 'FINSI' ;
  1707.  
  1708. ERR1 = CALCERR DGYRYO DGYRYON ;
  1709. 'MESSAGE' ('CHAINE' 'DGYRYON=' DGYRYON ' DGYRYO=' DGYRYO ' ERR=' ERR1);
  1710. 'SI' (ERR1 > ERRZER) ;
  1711. 'MESSAGE' 'Problem 33';
  1712. 'ERREUR' 5 ;
  1713. 'FINSI' ;
  1714.  
  1715. ERR1 = CALCERR DRETRYO DRETRYON ;
  1716. 'MESSAGE' ('CHAINE' 'DRETRYON=' DRETRYON ' DRETRYO=' DRETRYO
  1717. ' ERR=' ERR1) ;
  1718. 'SI' (ERR1 > ERRTO3) ;
  1719. 'MESSAGE' 'Problem 34';
  1720. 'ERREUR' 5 ;
  1721. 'FINSI' ;
  1722.  
  1723. ERR1 = CALCERR DRYHRYO DRYHRYON ;
  1724. 'MESSAGE' ('CHAINE' 'DRYHRYON=' DRYHRYON ' DRYHRYO=' DRYHRYO
  1725. ' ERR=' ERR1) ;
  1726. 'SI' (ERR1 > ERRZER) ;
  1727. 'MESSAGE' 'Problem 35';
  1728. 'ERREUR' 5 ;
  1729. 'FINSI' ;
  1730.  
  1731. ERR1 = CALCERR DRYORYO DRYORYON ;
  1732. 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
  1733. ' ERR=' ERR1) ;
  1734. 'SI' (ERR1 > ERRTOL) ;
  1735. 'MESSAGE' 'Problem 36';
  1736. 'ERREUR' 5 ;
  1737. 'FINSI' ;
  1738. *; Test3 : J(DOM7->DOM9)
  1739. 'MESSAGE' '************************' ;
  1740. 'MESSAGE' ' Test3 : J(DOM7->DOM9) ' ;
  1741. 'MESSAGE' '************************' ;
  1742. * On compare le jacobien et la variation du residu
  1743. * en $DOM9 'CENTRE' par rapport à une variation
  1744. * infinitésimal en $DOM7 'CENTRE'
  1745. * Elle doit etre nulle car les deux cellules ne se touchent pas
  1746. *
  1747. *;; Extraction des valeurs du jacobien de référence
  1748. * Les valeurs en $DOM7 'CENTRE'
  1749. PCELL = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
  1750. ro0 = 'EXTRAIRE' RN0 PCELL 'SCAL' ;
  1751. gnx0 = 'EXTRAIRE' GN0 PCELL 'UX' ;
  1752. gny0 = 'EXTRAIRE' GN0 PCELL 'UY' ;
  1753. ryh0 = 'EXTRAIRE' RYH20 PCELL 'H2 ' ;
  1754. ryo0 = 'EXTRAIRE' RYO20 PCELL 'O2 ' ;
  1755. ret0 = 'EXTRAIRE' RETN0 PCELL 'SCAL' ;
  1756.  
  1757. UNRO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1758. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0
  1759. 'RYO2' 0.0 'NATURE' 'DISCRET') 'ET'
  1760. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 1.0
  1761. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1762. 'NATURE' 'DISCRET') ;
  1763. UNGX = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1764. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1765. 'NATURE' 'DISCRET') 'ET'
  1766. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
  1767. 'RUXN' 1.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1768. 'NATURE' 'DISCRET') ;
  1769. UNGY = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1770. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1771. 'NATURE' 'DISCRET') 'ET'
  1772. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
  1773. 'RUXN' 0.0 'RUYN' 1.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1774. 'NATURE' 'DISCRET') ;
  1775. UNRET = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1776. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1777. 'NATURE' 'DISCRET') 'ET'
  1778. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
  1779. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 1.0 'RYH2' 0.0 'RYO2' 0.0
  1780. 'NATURE' 'DISCRET') ;
  1781. UNRYH = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1782. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1783. 'NATURE' 'DISCRET') 'ET'
  1784. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
  1785. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 1.0 'RYO2' 0.0
  1786. 'NATURE' 'DISCRET') ;
  1787. UNRYO = ('MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  1788. 6 'RN' 0.0 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 0.0
  1789. 'NATURE' 'DISCRET') 'ET'
  1790. ('MANUEL' 'CHPO' ('DOMA' $DOM7 'CENTRE') 6 'RN' 0.0
  1791. 'RUXN' 0.0 'RUYN' 0.0 'RETN' 0.0 'RYH2' 0.0 'RYO2' 1.0
  1792. 'NATURE' 'DISCRET') ;
  1793.  
  1794.  
  1795. DDRHO = 'KOPS' JACO 'MULT' UNRO ;
  1796.  
  1797. *
  1798. *
  1799. ***** DDRHO contient: dRES_RN '/' dRN ('RN') ;
  1800. * dRES_GXN '/' dRN ('RUXN') ;
  1801. * dRES_GYN '/' dRN ('RUYN') ;
  1802. * dRES_RETN '/' dRN ('RETN') ;
  1803. * DDGX contient ...
  1804. *
  1805. *
  1806.  
  1807. DDGX = 'KOPS' JACO 'MULT' UNGX ;
  1808. DDGY = 'KOPS' JACO 'MULT' UNGY ;
  1809. DDRET = 'KOPS' JACO 'MULT' UNRET ;
  1810. DDRYH = 'KOPS' JACO 'MULT' UNRYH ;
  1811. DDRYO = 'KOPS' JACO 'MULT' UNRYO ;
  1812.  
  1813. DRR = 'EXTRAIRE' DDRHO PCON 'RN' ;
  1814. DGXR = 'EXTRAIRE' DDRHO PCON 'RUXN' ;
  1815. DGYR = 'EXTRAIRE' DDRHO PCON 'RUYN' ;
  1816. DRETR = 'EXTRAIRE' DDRHO PCON 'RETN' ;
  1817. DRYHR = 'EXTRAIRE' DDRHO PCON 'RYH2' ;
  1818. DRYOR = 'EXTRAIRE' DDRHO PCON 'RYO2' ;
  1819.  
  1820. DRGX = 'EXTRAIRE' DDGX PCON 'RN' ;
  1821. DGXGX = 'EXTRAIRE' DDGX PCON 'RUXN' ;
  1822. DGYGX = 'EXTRAIRE' DDGX PCON 'RUYN' ;
  1823. DRETGX = 'EXTRAIRE' DDGX PCON 'RETN' ;
  1824. DRYHGX = 'EXTRAIRE' DDGX PCON 'RYH2' ;
  1825. DRYOGX = 'EXTRAIRE' DDGX PCON 'RYO2' ;
  1826.  
  1827. DRGY = 'EXTRAIRE' DDGY PCON 'RN' ;
  1828. DGXGY = 'EXTRAIRE' DDGY PCON 'RUXN' ;
  1829. DGYGY = 'EXTRAIRE' DDGY PCON 'RUYN' ;
  1830. DRETGY = 'EXTRAIRE' DDGY PCON 'RETN' ;
  1831. DRYHGY = 'EXTRAIRE' DDGY PCON 'RYH2' ;
  1832. DRYOGY = 'EXTRAIRE' DDGY PCON 'RYO2' ;
  1833.  
  1834. DRRET = 'EXTRAIRE' DDRET PCON 'RN' ;
  1835. DGXRET = 'EXTRAIRE' DDRET PCON 'RUXN' ;
  1836. DGYRET = 'EXTRAIRE' DDRET PCON 'RUYN' ;
  1837. DRETRET = 'EXTRAIRE' DDRET PCON 'RETN' ;
  1838. DRYHRET = 'EXTRAIRE' DDRET PCON 'RYH2' ;
  1839. DRYORET = 'EXTRAIRE' DDRET PCON 'RYO2' ;
  1840.  
  1841. DRRYO = 'EXTRAIRE' DDRYO PCON 'RN' ;
  1842. DGXRYO = 'EXTRAIRE' DDRYO PCON 'RUXN' ;
  1843. DGYRYO = 'EXTRAIRE' DDRYO PCON 'RUYN' ;
  1844. DRETRYO = 'EXTRAIRE' DDRYO PCON 'RETN' ;
  1845. DRYHRYO = 'EXTRAIRE' DDRYO PCON 'RYH2' ;
  1846. DRYORYO = 'EXTRAIRE' DDRYO PCON 'RYO2' ;
  1847.  
  1848. DRRYH = 'EXTRAIRE' DDRYH PCON 'RN' ;
  1849. DGXRYH = 'EXTRAIRE' DDRYH PCON 'RUXN' ;
  1850. DGYRYH = 'EXTRAIRE' DDRYH PCON 'RUYN' ;
  1851. DRETRYH = 'EXTRAIRE' DDRYH PCON 'RETN' ;
  1852. DRYHRYH = 'EXTRAIRE' DDRYH PCON 'RYH2' ;
  1853. DRYORYH = 'EXTRAIRE' DDRYH PCON 'RYO2' ;
  1854. *;; Test 3.1 J(ref) et J(appr) pour ro1 = ro0 * (1.'+' DELTA)
  1855. 'MESSAGE' 'Test 3.1 ro1 = ro0 + delta ' ;
  1856. *;;; Calcul du residu pour ro1 = ro0 * (1.'+' DELTA)
  1857. ro1 = ro0 '*' (1 '+' DELTA) ;
  1858. RNDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ro1 ;
  1859. RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RN0 RNDOM7 ;
  1860. GN = 'COPIER' GN0 ;
  1861. RETN = 'COPIER' RETN0 ;
  1862. RYH2 = 'COPIER' RYH20 ;
  1863. RYO2 = 'COPIER' RYO20 ;
  1864. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1865. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1866. ('+' RYH2 RYO2) ;
  1867. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1868. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1869. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1870. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1871. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1872. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1873. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1874. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1875. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1876. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1877. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1878. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1879. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1880. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1881. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1882. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1883. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1884. *
  1885. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1886. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1887. LISTINCO ;
  1888. *;;; Extraction des composantes du résidu
  1889. ***********************
  1890. ***** Le residu *******
  1891. ***********************
  1892. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1893. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1894. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1895. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1896. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1897. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1898. *;;; Jacobien approché
  1899. DRRN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ro0) ;
  1900. DGXRN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ro0) ;
  1901. DGYRN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ro0) ;
  1902. DRETRN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ro0) ;
  1903. DRYHRN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ro0) ;
  1904. DRYORN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ro0) ;
  1905. *;;; Comparaison Jacobien référence et approché
  1906. ERR1 = CALCERR DRR DRRN ;
  1907. 'MESSAGE' ('CHAINE' 'DRRN=' DRRN ' DRR=' DRR ' ERR=' ERR1) ;
  1908. 'SI' (ERR1 > ERRZER) ;
  1909. 'MESSAGE' 'Problem 1';
  1910. 'ERREUR' 5 ;
  1911. 'FINSI' ;
  1912.  
  1913. ERR1 = CALCERR DGXR DGXRN ;
  1914. 'MESSAGE' ('CHAINE' 'DGXRN=' DGXRN ' DGXR=' DGXR ' ERR=' ERR1) ;
  1915. 'SI' (ERR1 > ERRZER) ;
  1916. 'MESSAGE' 'Problem 2';
  1917. 'ERREUR' 5 ;
  1918. 'FINSI' ;
  1919.  
  1920. ERR1 = CALCERR DGYR DGYRN ;
  1921. 'MESSAGE' ('CHAINE' 'DGYRN=' DGYRN ' DGYR=' DGYR ' ERR=' ERR1) ;
  1922. 'SI' (ERR1 > ERRZER) ;
  1923. 'MESSAGE' 'Problem 3';
  1924. 'ERREUR' 5 ;
  1925. 'FINSI' ;
  1926.  
  1927. ERR1 = CALCERR DRETR DRETRN ;
  1928. 'MESSAGE' ('CHAINE' 'DRETRN=' DRETRN ' DRETR=' DRETR ' ERR=' ERR1) ;
  1929. 'SI' (ERR1 > ERRZER) ;
  1930. 'MESSAGE' 'Problem 4';
  1931. 'ERREUR' 5 ;
  1932. 'FINSI' ;
  1933.  
  1934. ERR1 = CALCERR DRYHR DRYHRN ;
  1935. 'MESSAGE' ('CHAINE' 'DRYHRN=' DRYHRN ' DRYHR=' DRYHR ' ERR=' ERR1) ;
  1936. 'SI' (ERR1 > ERRZER) ;
  1937. 'MESSAGE' 'Problem 5';
  1938. 'ERREUR' 5 ;
  1939. 'FINSI' ;
  1940.  
  1941. ERR1 = CALCERR DRYOR DRYORN ;
  1942. 'MESSAGE' ('CHAINE' 'DRYORN=' DRYORN ' DRYOR=' DRYOR ' ERR=' ERR1) ;
  1943. 'SI' (ERR1 > ERRZER) ;
  1944. 'MESSAGE' 'Problem 6';
  1945. 'ERREUR' 5 ;
  1946. 'FINSI' ;
  1947. *;; Test 3.2 J(ref) et J(appr) pour gnx1 = gnx0 * (1.'+' DELTA)
  1948. 'MESSAGE' 'Test 3.2 gnx1 = gnx0 + delta ' ;
  1949. *;;; Calcul du residu pour gnx1 = gnx0 * (1.'+' DELTA)
  1950. gnx1 = gnx0 '*' (1.D0 '+' DELTA) ;
  1951. GNDOM7 = 'KCHT' $DOM7 'VECT' 'CENTRE' (gnx1 gny0) ;
  1952. RN = 'COPIER' RN0 ;
  1953. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM7 ;
  1954. RETN = 'COPIER' RETN0 ;
  1955. RYH2 = 'COPIER' RYH20 ;
  1956. RYO2 = 'COPIER' RYO20 ;
  1957. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  1958. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  1959. ('+' RYH2 RYO2) ;
  1960. FMH2 = 'EXCO' 'H2' FMHO2 ;
  1961. FMO2 = 'EXCO' 'O2' FMHO2 ;
  1962. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  1963. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  1964. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  1965. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  1966. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  1967. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  1968. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  1969. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  1970. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  1971. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  1972. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  1973. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  1974. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  1975. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  1976. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  1977. *
  1978. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  1979. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  1980. LISTINCO ;
  1981. *;;; Extraction des composantes du résidu
  1982. ***********************
  1983. ***** Le residu *******
  1984. ***********************
  1985. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  1986. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  1987. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  1988. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  1989. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  1990. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  1991. *;;; Jacobien approché
  1992. DRGXN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gnx0) ;
  1993. DGXGXN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gnx0) ;
  1994. DGYGXN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gnx0) ;
  1995. DRETGXN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gnx0) ;
  1996. DRYHGXN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gnx0) ;
  1997. DRYOGXN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gnx0) ;
  1998. *;;; Comparaison Jacobien référence et approché
  1999. ERR1 = CALCERR DRGX DRGXN ;
  2000. 'MESSAGE' ('CHAINE' 'DRGXN=' DRGXN ' DRR=' DRGX ' ERR=' ERR1) ;
  2001. 'SI' (ERR1 > ERRZER) ;
  2002. 'MESSAGE' 'Problem 7';
  2003. 'ERREUR' 5 ;
  2004. 'FINSI' ;
  2005.  
  2006. ERR1 = CALCERR DGXGX DGXGXN ;
  2007. 'MESSAGE' ('CHAINE' 'DGXGXN=' DGXGXN ' DGXGX=' DGXGX ' ERR=' ERR1) ;
  2008. 'SI' (ERR1 > ERRZER) ;
  2009. 'MESSAGE' 'Problem 8';
  2010. 'ERREUR' 5 ;
  2011. 'FINSI' ;
  2012.  
  2013. ERR1 = CALCERR DGYGX DGYGXN ;
  2014. 'MESSAGE' ('CHAINE' 'DGYGXN=' DGYGXN ' DGYGX=' DGYGX ' ERR=' ERR1) ;
  2015. 'SI' (ERR1 > ERRZER) ;
  2016. 'MESSAGE' 'Problem 9';
  2017. 'ERREUR' 5 ;
  2018. 'FINSI' ;
  2019.  
  2020. ERR1 = CALCERR DRETGX DRETGXN ;
  2021. 'MESSAGE' ('CHAINE' 'DRETGXN=' DRETGXN ' DRETGX=' DRETGX ' ERR=' ERR1);
  2022. 'SI' (ERR1 > ERRZER) ;
  2023. 'MESSAGE' 'Problem 10';
  2024. 'ERREUR' 5 ;
  2025. 'FINSI' ;
  2026.  
  2027. ERR1 = CALCERR DRYHGX DRYHGXN ;
  2028. 'MESSAGE' ('CHAINE' 'DRYHGXN=' DRYHGXN ' DRYHGX=' DRYHGX ' ERR=' ERR1);
  2029. 'SI' (ERR1 > ERRZER) ;
  2030. 'MESSAGE' 'Problem 11';
  2031. 'ERREUR' 5 ;
  2032. 'FINSI' ;
  2033.  
  2034. ERR1 = CALCERR DRYOGX DRYOGXN ;
  2035. 'MESSAGE' ('CHAINE' 'DRYOGXN=' DRYOGXN ' DRYOGX=' DRYOGX ' ERR=' ERR1);
  2036. 'SI' (ERR1 > ERRZER) ;
  2037. 'MESSAGE' 'Problem 12';
  2038. 'ERREUR' 5 ;
  2039. 'FINSI' ;
  2040. *;; Test 3.3 J(ref) et J(appr) pour gny1 = gny0 * (1.'+' DELTA)
  2041. 'MESSAGE' 'Test 3.3 gny1 = gny0 + delta ' ;
  2042. *;;; Calcul du residu pour gny1 = gny0 * (1.'+' DELTA)
  2043. gny1 = gny0 '*' (1.D0 '+' DELTA) ;
  2044. GNDOM7 = 'KCHT' $DOM7 'VECT' 'CENTRE' (gnx0 gny1) ;
  2045. RN = 'COPIER' RN0 ;
  2046. GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' GN0 GNDOM7 ;
  2047. RETN = 'COPIER' RETN0 ;
  2048. RYH2 = 'COPIER' RYH20 ;
  2049. RYO2 = 'COPIER' RYO20 ;
  2050. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  2051. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  2052. ('+' RYH2 RYO2) ;
  2053. FMH2 = 'EXCO' 'H2' FMHO2 ;
  2054. FMO2 = 'EXCO' 'O2' FMHO2 ;
  2055. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  2056. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  2057. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  2058. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  2059. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  2060. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  2061. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  2062. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  2063. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  2064. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  2065. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  2066. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  2067. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  2068. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  2069. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  2070. *
  2071. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  2072. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  2073. LISTINCO ;
  2074. *;;; Extraction des composantes du résidu
  2075. ***********************
  2076. ***** Le residu *******
  2077. ***********************
  2078. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  2079. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  2080. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  2081. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  2082. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  2083. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  2084. *;;; Jacobien approché
  2085. DRGYN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' gny0) ;
  2086. DGXGYN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' gny0) ;
  2087. DGYGYN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' gny0) ;
  2088. DRETGYN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' gny0) ;
  2089. DRYHGYN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' gny0) ;
  2090. DRYOGYN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' gny0) ;
  2091. *;;; Comparaison Jacobien référence et approché
  2092. ERR1 = CALCERR DRGY DRGYN ;
  2093. 'MESSAGE' ('CHAINE' 'DRGYN=' DRGYN ' DRGY=' DRGY ' ERR=' ERR1) ;
  2094. 'SI' (ERR1 > ERRZER) ;
  2095. 'MESSAGE' 'Problem 13';
  2096. 'ERREUR' 5 ;
  2097. 'FINSI' ;
  2098.  
  2099. ERR1 = CALCERR DGXGY DGXGYN ;
  2100. 'MESSAGE' ('CHAINE' 'DGXGYN=' DGXGYN ' DGXGY=' DGXGY ' ERR=' ERR1) ;
  2101. 'SI' (ERR1 > ERRZER) ;
  2102. 'MESSAGE' 'Problem 14';
  2103. 'ERREUR' 5 ;
  2104. 'FINSI' ;
  2105.  
  2106. ERR1 = CALCERR DGYGY DGYGYN ;
  2107. 'MESSAGE' ('CHAINE' 'DGYGYN=' DGYGYN ' DGYGY=' DGYGY ' ERR=' ERR1) ;
  2108. 'SI' (ERR1 > ERRZER) ;
  2109. 'MESSAGE' 'Problem 15';
  2110. 'ERREUR' 5 ;
  2111. 'FINSI' ;
  2112.  
  2113. ERR1 = CALCERR DRETGY DRETGYN ;
  2114. 'MESSAGE' ('CHAINE' 'DRETGYN=' DRETGYN ' DRETGY=' DRETGY ' ERR=' ERR1);
  2115. 'SI' (ERR1 > ERRZER) ;
  2116. 'MESSAGE' 'Problem 16';
  2117. 'ERREUR' 5 ;
  2118. 'FINSI' ;
  2119.  
  2120. ERR1 = CALCERR DRYHGY DRYHGYN ;
  2121. 'MESSAGE' ('CHAINE' 'DRYHGYN=' DRYHGYN ' DRYHGY=' DRYHGY ' ERR=' ERR1);
  2122. 'SI' (ERR1 > ERRZER) ;
  2123. 'MESSAGE' 'Problem 17';
  2124. 'ERREUR' 5 ;
  2125. 'FINSI' ;
  2126.  
  2127. ERR1 = CALCERR DRYOGY DRYOGYN ;
  2128. 'MESSAGE' ('CHAINE' 'DRYOGYN=' DRYOGYN ' DRYOGY=' DRYOGY ' ERR=' ERR1);
  2129. 'SI' (ERR1 > ERRZER) ;
  2130. 'MESSAGE' 'Problem 18';
  2131. 'ERREUR' 5 ;
  2132. 'FINSI' ;
  2133. *;; Test 3.4 J(ref) et J(appr) pour ret1 = ret0 * (1.'+' DELTA)
  2134. 'MESSAGE' 'Test 3.4 ret1 = ret0 + delta ' ;
  2135. *;;; Calcul du residu pour ret1 = ret0 * (1.'+' DELTA)
  2136. ret1 = ret0 '*' (1.D0 '+' DELTA) ;
  2137. RETNDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ret1 ;
  2138. RN = 'COPIER' RN0 ;
  2139. GN = 'COPIER' GN0 ;
  2140. RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETN0 RETNDOM7 ;
  2141. RYH2 = 'COPIER' RYH20 ;
  2142. RYO2 = 'COPIER' RYO20 ;
  2143. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  2144. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  2145. ('+' RYH2 RYO2) ;
  2146. FMH2 = 'EXCO' 'H2' FMHO2 ;
  2147. FMO2 = 'EXCO' 'O2' FMHO2 ;
  2148. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  2149. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  2150. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  2151. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  2152. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  2153. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  2154. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  2155. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  2156. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  2157. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  2158. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  2159. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  2160. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  2161. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  2162. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  2163. *
  2164. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  2165. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  2166. LISTINCO ;
  2167. *;;; Extraction des composantes du résidu
  2168. ***********************
  2169. ***** Le residu *******
  2170. ***********************
  2171. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  2172. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  2173. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  2174. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  2175. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  2176. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  2177. *;;; Jacobien approché
  2178. DRRETN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ret0) ;
  2179. DGXRETN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ret0) ;
  2180. DGYRETN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ret0) ;
  2181. DRETRETN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ret0) ;
  2182. DRYHRETN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ret0) ;
  2183. DRYORETN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ret0) ;
  2184. *;;; Comparaison Jacobien référence et approché
  2185. ERR1 = CALCERR DRRET DRRETN ;
  2186. 'MESSAGE' ('CHAINE' 'DRRETN=' DRRETN ' DRRET=' DRRET ' ERR=' ERR1) ;
  2187. 'SI' (ERR1 > ERRZER) ;
  2188. 'MESSAGE' 'Problem 19';
  2189. 'ERREUR' 5 ;
  2190. 'FINSI' ;
  2191.  
  2192. ERR1 = CALCERR DGXRET DGXRETN ;
  2193. 'MESSAGE' ('CHAINE' 'DGXRETN=' DGXRETN ' DGXRET=' DGXRET ' ERR=' ERR1);
  2194. 'SI' (ERR1 > ERRZER) ;
  2195. 'MESSAGE' 'Problem 20';
  2196. 'ERREUR' 5 ;
  2197. 'FINSI' ;
  2198.  
  2199. ERR1 = CALCERR DGYRET DGYRETN ;
  2200. 'MESSAGE' ('CHAINE' 'DGYRETN=' DGYRETN ' DGYRET=' DGYRET ' ERR=' ERR1);
  2201. 'SI' (ERR1 > ERRZER) ;
  2202. 'MESSAGE' 'Problem 21';
  2203. 'ERREUR' 5 ;
  2204. 'FINSI' ;
  2205.  
  2206. ERR1 = CALCERR DRETRET DRETRETN ;
  2207. 'MESSAGE' ('CHAINE' 'DRETRETN=' DRETRETN ' DRETRET=' DRETRET
  2208. ' ERR=' ERR1) ;
  2209. 'SI' (ERR1 > ERRZER) ;
  2210. 'MESSAGE' 'Problem 22';
  2211. 'ERREUR' 5 ;
  2212. 'FINSI' ;
  2213.  
  2214. ERR1 = CALCERR DRYHRET DRYHRETN ;
  2215. 'MESSAGE' ('CHAINE' 'DRYHRETN=' DRYHRETN ' DRYHRET=' DRYHRET
  2216. ' ERR=' ERR1) ;
  2217. 'SI' (ERR1 > ERRZER) ;
  2218. 'MESSAGE' 'Problem 23';
  2219. 'ERREUR' 5 ;
  2220. 'FINSI' ;
  2221.  
  2222. ERR1 = CALCERR DRYORET DRYORETN ;
  2223. 'MESSAGE' ('CHAINE' 'DRYORETN=' DRYORETN ' DRYORET=' DRYORET
  2224. ' ERR=' ERR1) ;
  2225. 'SI' (ERR1 > ERRZER) ;
  2226. 'MESSAGE' 'Problem 24';
  2227. 'ERREUR' 5 ;
  2228. 'FINSI' ;
  2229. *;; Test 3.5 J(ref) et J(appr) pour ryh1 = ryh0 * (1.'+' DELTA)
  2230. 'MESSAGE' 'Test 3.5 ryh1 = ryh0 + delta ' ;
  2231. *;;; Calcul du residu pour ryh1 = ryh0 * (1.'+' DELTA)
  2232. ryh1 = ryh0 '*' (1 '+' DELTA) ;
  2233. RYHDOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ryh1 ;
  2234. RN = 'COPIER' RN0 ;
  2235. GN = 'COPIER' GN0 ;
  2236. RETN = 'COPIER' RETN0 ;
  2237. RYH2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYH20 'SCAL')
  2238. RYHDOM7) 'H2 ' ;
  2239. RYO2 = 'COPIER' RYO20 ;
  2240. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  2241. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  2242. ('+' RYH2 RYO2) ;
  2243. FMH2 = 'EXCO' 'H2' FMHO2 ;
  2244. FMO2 = 'EXCO' 'O2' FMHO2 ;
  2245. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  2246. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  2247. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  2248. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  2249. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  2250. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  2251. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  2252. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  2253. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  2254. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  2255. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  2256. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  2257. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  2258. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  2259. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  2260. *
  2261. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  2262. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  2263. LISTINCO ;
  2264. *;;; Extraction des composantes du résidu
  2265. ***********************
  2266. ***** Le residu *******
  2267. ***********************
  2268. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  2269. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  2270. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  2271. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  2272. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  2273. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  2274. *;;; Jacobien approché
  2275. DRRYHN = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryh0) ;
  2276. DGXRYHN = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryh0) ;
  2277. DGYRYHN = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryh0) ;
  2278. DRETRYHN = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryh0) ;
  2279. DRYHRYHN = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryh0) ;
  2280. DRYORYHN = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryh0) ;
  2281. *;;; Comparaison Jacobien référence et approché
  2282. ERR1 = CALCERR DRRYH DRRYHN ;
  2283. 'MESSAGE' ('CHAINE' 'DRRYHN=' DRRYHN ' DRRYH=' DRRYH ' ERR=' ERR1) ;
  2284. 'SI' (ERR1 > ERRZER) ;
  2285. 'MESSAGE' 'Problem 25';
  2286. 'ERREUR' 5 ;
  2287. 'FINSI' ;
  2288.  
  2289. ERR1 = CALCERR DGXRYH DGXRYHN ;
  2290. 'MESSAGE' ('CHAINE' 'DGXRYHN=' DGXRYHN ' DGXRYH=' DGXRYH ' ERR=' ERR1);
  2291. 'SI' (ERR1 > ERRZER) ;
  2292. 'MESSAGE' 'Problem 26';
  2293. 'ERREUR' 5 ;
  2294. 'FINSI' ;
  2295.  
  2296. ERR1 = CALCERR DGYRYH DGYRYHN ;
  2297. 'MESSAGE' ('CHAINE' 'DGYRYHN=' DGYRYHN ' DGYRYH=' DGYRYH ' ERR=' ERR1);
  2298. 'SI' (ERR1 > ERRZER) ;
  2299. 'MESSAGE' 'Problem 27';
  2300. 'ERREUR' 5 ;
  2301. 'FINSI' ;
  2302.  
  2303. ERR1 = CALCERR DRETRYH DRETRYHN ;
  2304. 'MESSAGE' ('CHAINE' 'DRETRYHN=' DRETRYHN ' DRETRYH=' DRETRYH
  2305. ' ERR=' ERR1) ;
  2306. 'SI' (ERR1 > ERRZER) ;
  2307. 'MESSAGE' 'Problem 28';
  2308. 'ERREUR' 5 ;
  2309. 'FINSI' ;
  2310.  
  2311. ERR1 = CALCERR DRYHRYH DRYHRYHN ;
  2312. 'MESSAGE' ('CHAINE' 'DRYHRYHN=' DRYHRYHN ' DRYHRYH=' DRYHRYH
  2313. ' ERR=' ERR1) ;
  2314. 'SI' (ERR1 > ERRZER) ;
  2315. 'MESSAGE' 'Problem 29';
  2316. 'ERREUR' 5 ;
  2317. 'FINSI' ;
  2318.  
  2319. ERR1 = CALCERR DRYORYH DRYORYHN ;
  2320. 'MESSAGE' ('CHAINE' 'DRYORYHN=' DRYORYHN ' DRYORYH=' DRYORYH
  2321. ' ERR=' ERR1) ;
  2322. 'SI' (ERR1 > ERRZER) ;
  2323. 'MESSAGE' 'Problem 30';
  2324. 'ERREUR' 5 ;
  2325. 'FINSI' ;
  2326. *;; Test 3.6 J(ref) et J(appr) pour ryo1 = ryo0 * (1.'+' DELTA)
  2327. 'MESSAGE' 'Test 3.6 ryo1 = ryo0 + delta ' ;
  2328. *;;; Calcul du residu pour ryo1 = ryo0 * (1.'+' DELTA)
  2329. ryo1 = ryo0 '*' (1 '+' DELTA) ;
  2330. RYODOM7 = 'KCHT' $DOM7 'SCAL' 'CENTRE' ryo1 ;
  2331. RN = 'COPIER' RN0 ;
  2332. GN = 'COPIER' GN0 ;
  2333. RETN = 'COPIER' RETN0 ;
  2334. RYH2 = 'COPIER' RYH20 ;
  2335. RYO2 = 'NOMC' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' ('NOMC' RYO20 'SCAL')
  2336. RYODOM7) 'O2 ' ;
  2337. LISTINCO = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RETN' 'RYH2' 'RYO2' ;
  2338. V0 P0 T0 FMHO2 GAM2 = PRIM 'PERFMULT' TGAZ RN GN RETN
  2339. ('+' RYH2 RYO2) ;
  2340. FMH2 = 'EXCO' 'H2' FMHO2 ;
  2341. FMO2 = 'EXCO' 'O2' FMHO2 ;
  2342. FMN2 = '*' (-1.D0) ('-' ('+' FMH2 FMO2) 1.D0) ;
  2343. GRADT0 MCHAMT = 'PENT' $DOMTOT 'FACE' 'DIAMANT' T0 ;
  2344. GRADV0 MCHAMV = 'PENT' $DOMTOT 'FACE' 'DIAMANT' V0 ;
  2345. GRFMH2 CGRFMH2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMH2 ;
  2346. GRFMO2 CGRFMO2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMO2 ;
  2347. GRFMN2 CGRFMN2 = 'PENT' $DOMTOT 'FACE' 'DIAMANT' FMN2 ;
  2348. TGAZ . 'H2 ' . 'YK' = FMH2 ;
  2349. TGAZ . 'H2 ' . 'GRADYK' = GRFMH2 ;
  2350. TGAZ . 'H2 ' . 'CGRYK' = CGRFMH2 ;
  2351. TGAZ . 'O2 ' . 'YK' = FMO2 ;
  2352. TGAZ . 'O2 ' . 'GRADYK' = GRFMO2 ;
  2353. TGAZ . 'O2 ' . 'CGRYK' = CGRFMO2 ;
  2354. TGAZ . 'N2 ' . 'YK' = FMN2 ;
  2355. TGAZ . 'N2 ' . 'GRADYK' = GRFMN2 ;
  2356. TGAZ . 'N2 ' . 'CGRYK' = CGRFMN2 ;
  2357. *
  2358. IJACEL CHPRES DT = 'LAPN' 'VF' 'PERFMULT' 'RESI' 'IMPL'
  2359. $DOMTOT TGAZ MUG KAPPAG CVG RN V0 T0 GRADV0 GRADT0 MCHAMV MCHAMT
  2360. LISTINCO ;
  2361. *;;; Extraction des composantes du résidu
  2362. ***********************
  2363. ***** Le residu *******
  2364. ***********************
  2365. DEBRN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 1) ;
  2366. DEBGNX1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 2) ;
  2367. DEBGNY1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 3) ;
  2368. DEBRETN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 4) ;
  2369. DEBRYHN1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 5) ;
  2370. DEBRYON1 = 'EXTRAIRE' CHPRES PCON ('EXTRAIRE' LISTINCO 6) ;
  2371. *;;; Jacobien approché
  2372. DRRYON = (DEBRN1 '-' DEBRN0) '/' (DELTA '*' ryo0) ;
  2373. DGXRYON = (DEBGNX1 '-' DEBGNX0) '/' (DELTA '*' ryo0) ;
  2374. DGYRYON = (DEBGNY1 '-' DEBGNY0) '/' (DELTA '*' ryo0) ;
  2375. DRETRYON = (DEBRETN1 '-' DEBRETN0) '/' (DELTA '*' ryo0) ;
  2376. DRYHRYON = (DEBRYHN1 '-' DEBRYHN0) '/' (DELTA '*' ryo0) ;
  2377. DRYORYON = (DEBRYON1 '-' DEBRYON0) '/' (DELTA '*' ryo0) ;
  2378. *;;; Comparaison Jacobien référence et approché
  2379. ERR1 = CALCERR DRRYO DRRYON ;
  2380. 'MESSAGE' ('CHAINE' 'DRRYON=' DRRYON ' DRRYO=' DRRYO ' ERR=' ERR1) ;
  2381. 'SI' (ERR1 > ERRZER) ;
  2382. 'MESSAGE' 'Problem 31';
  2383. 'ERREUR' 5 ;
  2384. 'FINSI' ;
  2385.  
  2386. ERR1 = CALCERR DGXRYO DGXRYON ;
  2387. 'MESSAGE' ('CHAINE' 'DGXRYON=' DGXRYON ' DGXRYO=' DGXRYO ' ERR=' ERR1);
  2388. 'SI' (ERR1 > ERRZER) ;
  2389. 'MESSAGE' 'Problem 32';
  2390. 'ERREUR' 5 ;
  2391. 'FINSI' ;
  2392.  
  2393. ERR1 = CALCERR DGYRYO DGYRYON ;
  2394. 'MESSAGE' ('CHAINE' 'DGYRYON=' DGYRYON ' DGYRYO=' DGYRYO ' ERR=' ERR1);
  2395. 'SI' (ERR1 > ERRZER) ;
  2396. 'MESSAGE' 'Problem 33';
  2397. 'ERREUR' 5 ;
  2398. 'FINSI' ;
  2399.  
  2400. ERR1 = CALCERR DRETRYO DRETRYON ;
  2401. 'MESSAGE' ('CHAINE' 'DRETRYON=' DRETRYON ' DRETRYO=' DRETRYO
  2402. ' ERR=' ERR1) ;
  2403. 'SI' (ERR1 > ERRZER) ;
  2404. 'MESSAGE' 'Problem 34';
  2405. 'ERREUR' 5 ;
  2406. 'FINSI' ;
  2407.  
  2408. ERR1 = CALCERR DRYHRYO DRYHRYON ;
  2409. 'MESSAGE' ('CHAINE' 'DRYHRYON=' DRYHRYON ' DRYHRYO=' DRYHRYO
  2410. ' ERR=' ERR1) ;
  2411. 'SI' (ERR1 > ERRZER) ;
  2412. 'MESSAGE' 'Problem 35';
  2413. 'ERREUR' 5 ;
  2414. 'FINSI' ;
  2415.  
  2416. ERR1 = CALCERR DRYORYO DRYORYON ;
  2417. 'MESSAGE' ('CHAINE' 'DRYORYON=' DRYORYON ' DRYORYO=' DRYORYO
  2418. ' ERR=' ERR1) ;
  2419. 'SI' (ERR1 > ERRZER) ;
  2420. 'MESSAGE' 'Problem 36';
  2421. 'ERREUR' 5 ;
  2422. 'FINSI' ;
  2423. 'FIN' bcl ;
  2424. 'MESSAGE' ('CHAINE' 'Tout sest bien passe') ;
  2425. 'FIN' ;
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  

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