Télécharger lapn_impl3D_mel.dgibi

Retour à la liste

Numérotation des lignes :

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

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