Télécharger konv_impl3Dbm.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : konv_impl3Dbm.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. ***********************************************************
  6. **** APPROCHE VF "Cell-Centred Formulation" pour la ****
  7. **** solution des ****
  8. **** Equations d'Euler pour un gaz parfait ****
  9. **** OPERATEURS PRIM, PRET, KONV ****
  10. **** Implicit: calcul du jacobien du residu ****
  11. **** ****
  12. **** Cas gaz monoespece, "calorically perfect" ****
  13. **** 3D ****
  14. **** ****
  15. **** Methodes: AUSM+ Low Mach ****
  16. **** ****
  17. **** This procedure compares the jacobian exact ****
  18. **** with jacobian coputed numerically ****
  19. **** (using numerical flux function) ****
  20. **** A. BECCANTINI SFME/LTMF AOUT 2001 ****
  21. ***********************************************************
  22. ***********************************************************
  23.  
  24. 'OPTION' 'DIME' 3
  25. 'ELEM' 'CUB8'
  26. 'ECHO' 0
  27. 'TRAC' 'X' ;
  28.  
  29. *
  30. *** GRAPH
  31. *
  32.  
  33. GRAPH = FAUX ;
  34. * GRAPH = VRAI ;
  35.  
  36. ERRTOL = 1.0D-4 ;
  37.  
  38. ***************************
  39. ***** DOMAINE SPATIAL ****
  40. ***************************
  41.  
  42.  
  43. A0 = 0.0D0 0.0D0 0.0D0;
  44. A1 = 1.0D0 0.0D0 0.0D0;
  45. A2 = 1.0D0 1.0D0 0.0D0;
  46. A3 = 0.0D0 1.0D0 0.0D0;
  47.  
  48. SUR1 = 'MANUEL' 'QUA4' A0 A1 A2 A3 ;
  49. DOM1 = SUR1 'VOLUME' 'TRAN' 1 (0.0 0.0 1.0) ;
  50.  
  51. DOM2 = DOM1 'PLUS' (1.0 0.0 0.0) ;
  52. DOM3 = DOM1 'PLUS' (-1.0 0.0 0.0) ;
  53. DOM4 = DOM1 'PLUS' (0.0 1.0 0.0) ;
  54. DOM5 = DOM1 'PLUS' (0.0 -1.0 0.0) ;
  55. DOM6 = DOM1 'PLUS' (1.0 1.0 0.0) ;
  56. DOM7 = DOM1 'PLUS' (-1.0 -1.0 0.0) ;
  57. DOM8 = DOM1 'PLUS' (1.0 -1.0 0.0) ;
  58. DOM9 = DOM1 'PLUS' (-1.0 1.0 0.0) ;
  59.  
  60. DOM10 = DOM1 'PLUS' (0.0 0.0 1.0) ;
  61. DOM11 = DOM1 'PLUS' (1.0 0.0 1.0) ;
  62. DOM12 = DOM1 'PLUS' (-1.0 0.0 1.0) ;
  63. DOM13 = DOM1 'PLUS' (0.0 1.0 1.0) ;
  64. DOM14 = DOM1 'PLUS' (0.0 -1.0 1.0) ;
  65. DOM15 = DOM1 'PLUS' (1.0 1.0 1.0) ;
  66. DOM16 = DOM1 'PLUS' (-1.0 -1.0 1.0) ;
  67. DOM17 = DOM1 'PLUS' (1.0 -1.0 1.0) ;
  68. DOM18 = DOM1 'PLUS' (-1.0 1.0 1.0) ;
  69.  
  70. DOM19 = DOM1 'PLUS' (0.0 0.0 -1.0) ;
  71. DOM20 = DOM1 'PLUS' (1.0 0.0 -1.0) ;
  72. DOM21 = DOM1 'PLUS' (-1.0 0.0 -1.0) ;
  73. DOM22 = DOM1 'PLUS' (0.0 1.0 -1.0) ;
  74. DOM23 = DOM1 'PLUS' (0.0 -1.0 -1.0) ;
  75. DOM24 = DOM1 'PLUS' (1.0 1.0 -1.0) ;
  76. DOM25 = DOM1 'PLUS' (-1.0 -1.0 -1.0) ;
  77. DOM26 = DOM1 'PLUS' (1.0 -1.0 -1.0) ;
  78. DOM27 = DOM1 'PLUS' (-1.0 1.0 -1.0) ;
  79.  
  80. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5
  81. 'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ET' DOM10
  82. 'ET' DOM11 'ET' DOM12 'ET' DOM13 'ET' DOM14 'ET' DOM15
  83. 'ET' DOM16 'ET' DOM17 'ET' DOM18 'ET' DOM19 'ET' DOM20
  84. 'ET' DOM21 'ET' DOM22 'ET' DOM23 'ET' DOM24 'ET' DOM25
  85. 'ET' DOM26 'ET' DOM27 ;
  86.  
  87. 'ELIMINATION' DOMTOT 0.0001 ;
  88.  
  89. *
  90. **** Perturbation du domaine
  91. *
  92.  
  93. CHPBRU = ('NOMC' 'UX' ('BRUI' 'BLAN' 'UNIF' 0.0 0.1 DOMTOT)
  94. 'NATU' 'DISCRET') 'ET'
  95. ('NOMC' 'UY' ('BRUI' 'BLAN' 'UNIF' 0.0 0.15 DOMTOT)
  96. 'NATU' 'DISCRET') 'ET'
  97. ('NOMC' 'UZ' ('BRUI' 'BLAN' 'UNIF' 0.0 0.13 DOMTOT)
  98. 'NATU' 'DISCRET');
  99.  
  100. 'FORME' CHPBRU ;
  101.  
  102. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  103. $DOM1 = 'MODELISER' DOM1 'EULER';
  104. $DOM27 = 'MODELISER' DOM27 'EULER';
  105.  
  106. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  107. TDOM1 = 'DOMA' $DOM1 'VF';
  108. TDOM27 = 'DOMA' $DOM27 'VF';
  109.  
  110. MDOM1 = TDOM1 . 'QUAF' ;
  111. MDOM27 = TDOM27 . 'QUAF' ;
  112. MDOMTOT = TDOMTOT . 'QUAF' ;
  113.  
  114. 'ELIMINATION' (MDOMTOT ET MDOM1) 0.0001 ;
  115. 'ELIMINATION' (MDOMTOT ET MDOM27) 0.0001 ;
  116.  
  117. ***************************************************
  118. ***** Densité, pression, vitesse, gamma ***********
  119. ***************************************************
  120.  
  121. RN0 = 'BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE') ;
  122. PN0 = 'BRUI' 'BLAN' 'UNIF' 12.341 8 ('DOMA' $DOMTOT 'CENTRE') ;
  123. GAMMAN = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 1.4
  124. 'NATU' 'DISCRET' ;
  125. CSONN = (GAMMAN '*' PN0) '/' RN0 ;
  126. CSONN = 'KOPS' CSONN '**' 0.5 ;
  127. UXN0 = 0.003 * CSONN ;
  128. UYN0 = -0.001 * CSONN ;
  129. UZN0 = 0.002 * CSONN ;
  130. ***************************************************
  131. UINF = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 0.01
  132. 'NATU' 'DISCRET' ;
  133. UPRI = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'SCAL' 0.0001
  134. 'NATU' 'DISCRET' ;
  135. ***************************************************
  136. GN0 = ('NOMC' (RN0 '*' UXN0) 'UX' 'NATU' 'DISCRET') 'ET'
  137. ('NOMC' (RN0 '*' UYN0) 'UY' 'NATU' 'DISCRET') 'ET'
  138. ('NOMC' (RN0 '*' UZN0) 'UZ' 'NATU' 'DISCRET') ;
  139.  
  140. ECIN = 0.5D0 '*' RN0 '*' ((UXN0 '*' UXN0) '+' (UYN0 '*' UYN0) '+'
  141. (UZN0 * UZN0)) ;
  142. RETN0 = 'NOMC' 'SCAL' ((PN0 '/' (GAMMAN '-' 1.0)) '+' ECIN)
  143. 'NATU' 'DISCRET' ;
  144.  
  145. VIT PRES = PRIM 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  146.  
  147. ERR1 = 'MAXIMUM' (PRES '-' PN0) 'ABS' ;
  148. ERR2 = 'MAXIMUM' (GN0 '-' (RN0 '*' VIT ('MOTS' 'SCAL' 'SCAL' 'SCAL')
  149. ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ'))) 'ABS' ;
  150.  
  151. 'SI' (('MAXIMUM' ('PROG' ERR1 ERR2 ) 'ABS' ) > 1.0D-6) ;
  152. 'MESSAGE' 'Problem 0' ;
  153. 'ERREUR' 5 ;
  154. 'FINSI' ;
  155.  
  156.  
  157. 'SI' GRAPH;
  158. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'
  159. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
  160. 'FINSI' ;
  161. ****************************************************
  162. * Creating a mesh WITHOUT mesh
  163. ****************************************************
  164. P1 = 0.5 0.5 0.5;
  165. ELP1 = 'MANU' 'POI1' P1 ;
  166. MELLIM = 'DIFF' ELP1 ELP1 ;
  167.  
  168.  
  169. *
  170. **** Les variables conservative
  171. *
  172. * RN0 (densité)
  173. * GN0 (quantité de mouvement)
  174. * RETN0 (énergie totale par unité de volume)
  175. *
  176. * sont definiés
  177. *
  178.  
  179. ****************************************************
  180. ****************************************************
  181. ******* Calcul du jacobien et du residu **********
  182. ****************************************************
  183. ****************************************************
  184. *
  185. * JACO est le jacobien
  186. *
  187. * DEBRN0 le residu concernant la densité
  188. * DEBGNX0 le residu concernant la quantité de mouvement (axe x)
  189. * DEBGNY0 le residu concernant la quantité de mouvement (axe y)
  190. * DEBGNZ0 le residu concernant la quantité de mouvement (axe z)
  191. * DEBRETN0 le residu concernant l'enrgie totale par unité de volume
  192. *
  193.  
  194. * Noms des variables
  195.  
  196. NOMDEN = 'RN ' ;
  197. NOMMOX = 'RUXN' ;
  198. NOMMOY = 'RUYN' ;
  199. NOMMOZ = 'RUZN' ;
  200. NOMRET = 'RETN' ;
  201.  
  202. * Metode
  203.  
  204. METO = 'AUSMPLM' ;
  205.  
  206.  
  207. LISTINCO = 'MOTS' NOMDEN NOMMOX NOMMOY NOMMOZ NOMRET ;
  208.  
  209. VITESSE PRES = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  210.  
  211. ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1
  212. $DOMTOT RN0 VITESSE PRES GAMMAN ;
  213.  
  214. CHPRES0 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' METO
  215. $DOMTOT ROF VITF PF GAMF LISTINCO
  216. MELLIM UINF UPRI ;
  217.  
  218. JACO = 'KONV' 'VF' 'PERFMONO' 'JACOCONS'
  219. $DOMTOT LISTINCO MELLIM
  220. METO RN0 VITESSE PRES GAMMAN
  221. UINF UPRI ;
  222.  
  223. DEBRN0 = 'EXCO' NOMDEN CHPRES0 ;
  224. DEBGNX0 = 'EXCO' NOMMOX CHPRES0 ;
  225. DEBGNY0 = 'EXCO' NOMMOY CHPRES0 ;
  226. DEBGNZ0 = 'EXCO' NOMMOZ CHPRES0 ;
  227. DEBRETN0 = 'EXCO' NOMRET CHPRES0 ;
  228.  
  229.  
  230.  
  231. *****************************************************
  232. *****************************************************
  233. ******** PROCEDURES *********************************
  234. *****************************************************
  235. *****************************************************
  236.  
  237. *
  238. * Derivé partielle du residu en un point par rapport
  239. * aux variable en un autre point
  240. *
  241.  
  242. 'DEBPROC' JACOVA JACO*'MATRIK' $MODE*'MMODEL' LISTINCO*'LISTMOTS'
  243. PPRIM*'POINT' PDUAL*'POINT' MOTPRI*'MOT' MOTDUA*'MOT';
  244.  
  245. * PPRIM = point ou est localisé la variable primale
  246. * PDUAL = point ou est localisé la variable duale
  247. * MOTPRI = nom de la composante concernante la variable primale
  248. * MOTDUA = nom de la composante concernante la variable duale
  249.  
  250. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  251. NDIM = 'DIME' LISTINCO ;
  252. CHPUN = 'MANUEL' 'CHPO' ELT1 1 MOTPRI 1.0 'NATURE' 'DISCRET' ;
  253. 'REPETER' BL1 NDIM ;
  254. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  255. CHPUN = CHPUN 'ET' ('MANUEL' 'CHPO' ('DOMA' $MODE 'CENTRE')
  256. 1 MOTCEL 0.0 'NATURE' 'DISCRET') ;
  257. 'FIN' BL1 ;
  258. D_DMOT = 'KOPS' JACO 'MULT' CHPUN ;
  259. SCAL = 'EXTRAIRE' D_DMOT PDUAL MOTDUA ;
  260.  
  261. 'FINPROC' SCAL ;
  262.  
  263.  
  264.  
  265. 'DEBPROC' JACNUM $MODE*'MMODEL' NOMMET*'MOT' RN*'CHPOINT' GN*'CHPOINT'
  266. RETN*'CHPOINT' GAMN*'CHPOINT'
  267. LISTINCO*'LISTMOTS' UINF*'CHPOINT' UPRI*'CHPOINT'
  268. PPRIM*'POINT' PDUAL*'POINT'
  269. MOTPRI*'MOT' MOTDUA*'MOT' EPSILON*'FLOTTANT';
  270.  
  271. * PPRIM = point ou est localisé la variable primale
  272. * PDUAL = point ou est localisé la variable duale
  273. * MOTPRI = nom de la composante concernante la variable primale
  274. * MOTDUA = nom de la composante concernante la variable duale
  275.  
  276. * Le valeur dans l'état non-perturbé en PDUAL ;
  277.  
  278. RNCEL = 'COPIER' RN ;
  279. GNCEL = 'COPIER' GN ;
  280. RETNCEL = 'COPIER' RETN ;
  281.  
  282. VITESSE PRES = 'PRIM' 'PERFMONO' RNCEL GNCEL RETNCEL GAMN ;
  283.  
  284. ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1
  285. $MODE RNCEL VITESSE PRES GAMN ;
  286.  
  287. CHPRES0 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' NOMMET
  288. $MODE ROF VITF PF GAMF LISTINCO UINF UPRI;
  289. * 'LISTE' CHPRES0 5 ;
  290.  
  291. VAL0 = 'EXTRAIRE' CHPRES0 PDUAL MOTDUA ;
  292.  
  293. * EPSILON = perturbation
  294.  
  295. * Adimensionalisation
  296.  
  297. dens0 = 'EXTRAIRE' RN PPRIM 'SCAL' ;
  298.  
  299. VN PN = 'PRIM' 'PERFMONO' RN GN RETN GAMN ;
  300. CN2 = GAMN '*' (PN '/' RN) ;
  301. cson0 = ('EXTRAIRE' CN2 PPRIM 'SCAL') '**' 0.5 ;
  302.  
  303. ret0 = ('EXTRAIRE' RETN PPRIM 'SCAL') '**' 0.5 ;
  304.  
  305. * On etabli la variable à perturber
  306.  
  307. NDIM = 'DIME' LISTINCO ;
  308. 'REPETER' BL1 NDIM ;
  309. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  310. 'SI' ('EGA' MOTCEL MOTPRI) ;
  311. ICEL = &BL1 ;
  312. 'QUITTER' BL1 ;
  313. 'FINSI' ;
  314. 'FIN' BL1 ;
  315.  
  316. 'SI' (ICEL > NDIM) ;
  317. 'MESSAGE' 'Procedure JACNUM' ;
  318. 'MESSAGE' 'MOTPRI = ??? ';
  319. 'ERREUR' 21 ;
  320. 'FINSI' ;
  321.  
  322. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  323.  
  324. * ICEL = 1 -> On perturbe la densité
  325.  
  326. 'SI' ('EGA' ICEL 1) ;
  327. DELTATOT = (EPSILON * dens0) ;
  328. RNCEL = ('MANUEL' 'CHPO' ELT1 1 'SCAL' DELTATOT
  329. 'NATURE' 'DISCRET') 'ET' RN ;
  330. GNCEL = 'COPIER' GN ;
  331. RETNCEL = 'COPIER' RETN ;
  332. 'FINSI' ;
  333.  
  334. * ICEL = 2 -> On perturbe la q.d.m. long l'ax x
  335.  
  336. 'SI' ('EGA' ICEL 2) ;
  337. DELTATOT = (EPSILON * dens0 * cson0) ;
  338. GNCEL = ('MANUEL' 'CHPO' ELT1 1 'UX' DELTATOT
  339. 'NATURE' 'DISCRET') 'ET' GN ;
  340. RNCEL = 'COPIER' RN ;
  341. RETNCEL = 'COPIER' RETN ;
  342. 'FINSI' ;
  343.  
  344. * ICEL = 3 -> On perturbe la q.d.m. long l'ax y
  345.  
  346. 'SI' ('EGA' ICEL 3) ;
  347. DELTATOT = (EPSILON * dens0 * cson0) ;
  348. GNCEL = ('MANUEL' 'CHPO' ELT1 1 'UY' DELTATOT
  349. 'NATURE' 'DISCRET') 'ET' GN ;
  350. RNCEL = 'COPIER' RN ;
  351. RETNCEL = 'COPIER' RETN ;
  352. 'FINSI' ;
  353.  
  354. * ICEL = 4 -> On perturbe la q.d.m. long l'ax z
  355.  
  356. 'SI' ('EGA' ICEL 4) ;
  357. DELTATOT = (EPSILON * dens0 * cson0) ;
  358. GNCEL = ('MANUEL' 'CHPO' ELT1 1 'UZ' DELTATOT
  359. 'NATURE' 'DISCRET') 'ET' GN ;
  360. RNCEL = 'COPIER' RN ;
  361. RETNCEL = 'COPIER' RETN ;
  362. 'FINSI' ;
  363.  
  364. * ICEL = 4 -> On perturbe l'énergie totale
  365.  
  366. 'SI' ('EGA' ICEL 5) ;
  367. DELTATOT = (EPSILON * ret0) ;
  368. RETNCEL = ('MANUEL' 'CHPO' ELT1 1 'SCAL' DELTATOT
  369. 'NATURE' 'DISCRET') 'ET' RETN ;
  370. RNCEL = 'COPIER' RN ;
  371. GNCEL = 'COPIER' GN ;
  372. 'FINSI' ;
  373.  
  374. VITESSE PRES = 'PRIM' 'PERFMONO' RNCEL GNCEL RETNCEL GAMN ;
  375.  
  376. ROF VITF PF GAMF = 'PRET' 'PERFMONO' 1 1
  377. $MODE RNCEL VITESSE PRES GAMN ;
  378.  
  379. CHPRES1 DT = 'KONV' 'VF' 'PERFMONO' 'RESI' NOMMET
  380. $MODE ROF VITF PF GAMF LISTINCO UINF UPRI;
  381.  
  382. VAL1 = 'EXTRAIRE' CHPRES1 PDUAL MOTDUA ;
  383.  
  384. 'FINPROC' ((VAL1 '-' VAL0) '/' DELTATOT) ;
  385.  
  386. *****************************************************
  387. *****************************************************
  388. ******** FIN PROCEDURES *****************************
  389. *****************************************************
  390. *****************************************************
  391. *****************************************************
  392.  
  393.  
  394. *****************************************************
  395. ******* TEST1 ***************************************
  396. *****************************************************
  397. *
  398. * On compare le jacobien et la variation du residu
  399. * en $DOM1 'CENTRE' par rapport à une variation
  400. * infinitésimal en $DOM1 'CENTRE'
  401. *
  402.  
  403. PCEN1 = 'POIN' 1 ('DOMA' $DOM1 'CENTRE') ;
  404.  
  405. * Les grandeurs pour adimesionner les erreurs
  406.  
  407. ro0 = 'EXTRAIRE' RN0 PCEN1 'SCAL' ;
  408.  
  409. VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  410. CN20 = GAMMAN '*' (PN0 '/' RN0) ;
  411. cson0 = ('EXTRAIRE' CN20 PCEN1 'SCAL') '**' 0.5 ;
  412.  
  413. ret0 = ('EXTRAIRE' RETN0 PCEN1 'SCAL') '**' 0.5 ;
  414.  
  415. *
  416. * Le jacobien exact.
  417. * DRR = d(RES_ro)/dro (variable primale en PCEN1, variable duale en PCEN1) ;
  418. * DGXR = d(RES_gx)/dro (variable primale en PCEN1, variable duale en PCEN1) ;
  419. * ...
  420.  
  421. DRR = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMDEN NOMDEN ;
  422. DGXR = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMDEN NOMMOX ;
  423. DGYR = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMDEN NOMMOY ;
  424. DGZR = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMDEN NOMMOZ ;
  425. DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMDEN NOMRET ;
  426.  
  427. DRGX = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOX NOMDEN ;
  428. DGXGX = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOX NOMMOX ;
  429. DGYGX = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOX NOMMOY ;
  430. DGZGX = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOX NOMMOZ ;
  431. DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOX NOMRET ;
  432.  
  433. DRGY = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOY NOMDEN ;
  434. DGXGY = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOY NOMMOX ;
  435. DGYGY = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOY NOMMOY ;
  436. DGZGY = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOY NOMMOZ ;
  437. DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOY NOMRET ;
  438.  
  439. DRGZ = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOZ NOMDEN ;
  440. DGXGZ = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOZ NOMMOX ;
  441. DGYGZ = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOZ NOMMOY ;
  442. DGZGZ = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOZ NOMMOZ ;
  443. DRETGZ = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMMOZ NOMRET ;
  444.  
  445. DRRET = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMRET NOMDEN ;
  446. DGXRET = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMRET NOMMOX ;
  447. DGYRET = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMRET NOMMOY ;
  448. DGZRET = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMRET NOMMOZ ;
  449. DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN1 PCEN1 NOMRET NOMRET ;
  450.  
  451.  
  452. * Le jacobien numerique
  453.  
  454.  
  455. DELTA = 1.0D-8 ;
  456.  
  457. DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  458. PCEN1 PCEN1 NOMDEN NOMDEN DELTA ;
  459. DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  460. PCEN1 PCEN1 NOMDEN NOMMOX DELTA ;
  461. DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  462. PCEN1 PCEN1 NOMDEN NOMMOY DELTA ;
  463. DGZRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  464. PCEN1 PCEN1 NOMDEN NOMMOZ DELTA ;
  465. DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  466. PCEN1 PCEN1 NOMDEN NOMRET DELTA ;
  467.  
  468. * 'OPTI' 'DONN' 5 ;
  469.  
  470. DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  471. PCEN1 PCEN1 NOMMOX NOMDEN DELTA ;
  472. DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  473. PCEN1 PCEN1 NOMMOX NOMMOX DELTA ;
  474. DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  475. PCEN1 PCEN1 NOMMOX NOMMOY DELTA ;
  476. DGZGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  477. PCEN1 PCEN1 NOMMOX NOMMOZ DELTA ;
  478. DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  479. PCEN1 PCEN1 NOMMOX NOMRET DELTA ;
  480.  
  481. DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  482. PCEN1 PCEN1 NOMMOY NOMDEN DELTA ;
  483. DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  484. PCEN1 PCEN1 NOMMOY NOMMOX DELTA ;
  485. DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  486. PCEN1 PCEN1 NOMMOY NOMMOY DELTA ;
  487. DGZGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  488. PCEN1 PCEN1 NOMMOY NOMMOZ DELTA ;
  489. DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  490. PCEN1 PCEN1 NOMMOY NOMRET DELTA ;
  491.  
  492. DRGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  493. PCEN1 PCEN1 NOMMOZ NOMDEN DELTA ;
  494. DGXGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  495. PCEN1 PCEN1 NOMMOZ NOMMOX DELTA ;
  496. DGYGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  497. PCEN1 PCEN1 NOMMOZ NOMMOY DELTA ;
  498. DGZGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  499. PCEN1 PCEN1 NOMMOZ NOMMOZ DELTA ;
  500. DRETGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  501. PCEN1 PCEN1 NOMMOZ NOMRET DELTA ;
  502.  
  503. DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  504. PCEN1 PCEN1 NOMRET NOMDEN DELTA ;
  505. DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  506. PCEN1 PCEN1 NOMRET NOMMOX DELTA ;
  507. DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  508. PCEN1 PCEN1 NOMRET NOMMOY DELTA ;
  509. DGZRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  510. PCEN1 PCEN1 NOMRET NOMMOZ DELTA ;
  511. DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  512. PCEN1 PCEN1 NOMRET NOMRET DELTA ;
  513.  
  514. * Test des comparaisons jacobien exact-jacobien numerique
  515. * Test des comparaisons jacobien exact-jacobien numerique
  516. **************************************************************
  517. 'SI' (('ABS'(DRR)) < DELTA) ;
  518. ERR1 = ('ABS' (DRRN '-' DRR)) ;
  519. 'SINON' ;
  520. ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ;
  521. 'FINSI' ;
  522. * OPTION DONN 5 ;
  523. ***********************
  524. 'SI' (ERR1 > ERRTOL) ;
  525. 'MESSAGE' 'Problem 1 T1';
  526. 'ERREUR' 5 ;
  527. 'FINSI' ;
  528. **************************************************************
  529. 'SI' (('ABS'(DGXR)) < DELTA) ;
  530. ERR1 = ('ABS' (DGXRN '-' DGXR)) ;
  531. 'SINON' ;
  532. ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ;
  533. 'FINSI' ;
  534. ***********************
  535. 'SI' (ERR1 > ERRTOL) ;
  536. 'MESSAGE' 'Problem 2 T1';
  537. 'ERREUR' 5 ;
  538. 'FINSI' ;
  539. **************************************************************
  540. 'SI' (('ABS'(DGYR)) < DELTA) ;
  541. ERR1 = ('ABS' (DGYRN '-' DGYR)) ;
  542. 'SINON' ;
  543. ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ;
  544. 'FINSI' ;
  545. ************************
  546. 'SI' (ERR1 > ERRTOL) ;
  547. 'MESSAGE' 'Problem 3 T1';
  548. 'ERREUR' 5 ;
  549. 'FINSI' ;
  550. **************************************************************
  551. 'SI' (('ABS'(DGZR)) < DELTA) ;
  552. ERR1 = ('ABS' (DGZRN '-' DGZR)) ;
  553. 'SINON' ;
  554. ERR1 = ('ABS' (DGZRN '-' DGZR)) '/' ('ABS' (DGZR)) ;
  555. 'FINSI' ;
  556. ************************
  557. 'SI' (ERR1 > ERRTOL) ;
  558. 'MESSAGE' 'Problem 4 T1';
  559. 'ERREUR' 5 ;
  560. 'FINSI' ;
  561. ***************************************************************
  562. 'SI' (('ABS'(DRETR)) < DELTA) ;
  563. ERR1 = ('ABS' (DRETRN '-' DRETR)) ;
  564. 'SINON' ;
  565. ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ;
  566. 'FINSI' ;
  567. **************************
  568. 'SI' (ERR1 > ERRTOL) ;
  569. 'MESSAGE' 'Problem 5 T1';
  570. 'ERREUR' 5 ;
  571. 'FINSI' ;
  572. **************************************************************
  573. * 'OPTION' DONN 5 ;
  574.  
  575. 'SI' (('ABS'(DRGX)) < DELTA) ;
  576. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  577. 'SINON' ;
  578. ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX)) ;
  579. 'FINSI' ;
  580. ***************************
  581. 'SI' (ERR1 > ERRTOL) ;
  582. 'MESSAGE' 'Problem 6 T1';
  583. 'ERREUR' 5 ;
  584. 'FINSI' ;
  585. ***************************************************************
  586. 'SI' (('ABS'(DGXGX)) < DELTA) ;
  587. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ;
  588. 'SINON' ;
  589. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ;
  590. 'FINSI' ;
  591. *****************************
  592. 'SI' (ERR1 > ERRTOL) ;
  593. 'MESSAGE' 'Problem 7 T1';
  594. 'ERREUR' 5 ;
  595. 'FINSI' ;
  596. **************************************************************
  597. 'SI' (('ABS'(DGYGX)) < DELTA) ;
  598. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ;
  599. 'SINON' ;
  600. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ;
  601. 'FINSI' ;
  602. ******************************
  603. 'SI' (ERR1 > ERRTOL) ;
  604. 'MESSAGE' 'Problem 8 T1';
  605. 'ERREUR' 5 ;
  606. 'FINSI' ;
  607. **************************************************************
  608. 'SI' (('ABS'(DGZGX)) < DELTA) ;
  609. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) ;
  610. 'SINON' ;
  611. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' ('ABS' (DGZGX)) ;
  612. 'FINSI' ;
  613. ******************************
  614. 'SI' (ERR1 > ERRTOL) ;
  615. 'MESSAGE' 'Problem 9 T1';
  616. 'ERREUR' 5 ;
  617. 'FINSI' ;
  618. **************************************************************
  619. 'SI' (('ABS'(DRETGX)) < DELTA) ;
  620. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ;
  621. 'SINON' ;
  622. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ;
  623. 'FINSI' ;
  624. *******************************
  625. 'SI' (ERR1 > ERRTOL) ;
  626. 'MESSAGE' 'Problem 10 T1';
  627. 'ERREUR' 5 ;
  628. 'FINSI' ;
  629. **************************************************************
  630. 'SI' (('ABS'(DRGY)) < DELTA) ;
  631. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  632. 'SINON' ;
  633. ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ;
  634. 'FINSI' ;
  635. *******************************
  636. 'SI' (ERR1 > ERRTOL) ;
  637. 'MESSAGE' 'Problem 11 T1';
  638. 'ERREUR' 5 ;
  639. 'FINSI' ;
  640. **************************************************************
  641. 'SI' (('ABS'(DGXGY)) < DELTA) ;
  642. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ;
  643. 'SINON' ;
  644. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' ('ABS' (DGXGY)) ;
  645. 'FINSI' ;
  646. ********************************
  647. 'SI' (ERR1 > ERRTOL) ;
  648. 'MESSAGE' 'Problem 12 T1';
  649. 'ERREUR' 5 ;
  650. 'FINSI' ;
  651. **************************************************************
  652. 'SI' (('ABS'(DGYGY)) < DELTA) ;
  653. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ;
  654. 'SINON' ;
  655. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ;
  656. 'FINSI' ;
  657.  
  658. * OPTION DONN 5 ;
  659. ***************
  660. 'SI' (ERR1 > ERRTOL) ;
  661. 'MESSAGE' 'Problem 13 T1';
  662. 'ERREUR' 5 ;
  663. 'FINSI' ;
  664. **************************************************************
  665. 'SI' (('ABS'(DGZGY)) < DELTA) ;
  666. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) ;
  667. 'SINON' ;
  668. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' ('ABS' (DGZGY)) ;
  669. 'FINSI' ;
  670. ****************
  671. 'SI' (ERR1 > ERRTOL) ;
  672. 'MESSAGE' 'Problem 14 T1';
  673. 'ERREUR' 5 ;
  674. 'FINSI' ;
  675. **************************************************************
  676. 'SI' (('ABS'(DRETGY)) < DELTA) ;
  677. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ;
  678. 'SINON' ;
  679. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ;
  680. 'FINSI' ;
  681. ****************
  682. 'SI' (ERR1 > ERRTOL) ;
  683. 'MESSAGE' 'Problem 15 T1';
  684. 'ERREUR' 5 ;
  685. 'FINSI' ;
  686. **************************************************************
  687. 'SI' (('ABS'(DRGZ)) < DELTA) ;
  688. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  689. 'SINON' ;
  690. ERR1 = ('ABS' (DRGZN '-' DRGZ)) '/' ('ABS' (DRGZ)) ;
  691. 'FINSI' ;
  692. ***************
  693. 'SI' (ERR1 > ERRTOL) ;
  694. 'MESSAGE' 'Problem 16 T1';
  695. 'ERREUR' 5 ;
  696. 'FINSI' ;
  697. **************************************************************
  698. 'SI' (('ABS'(DGXGZ)) < DELTA) ;
  699. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) ;
  700. 'SINON' ;
  701. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' ('ABS' (DGXGZ)) ;
  702. 'FINSI' ;
  703. *****************
  704. 'SI' (ERR1 > ERRTOL) ;
  705. 'MESSAGE' 'Problem 17 T1';
  706. 'ERREUR' 5 ;
  707. 'FINSI' ;
  708. **************************************************************
  709. 'SI' (('ABS'(DGYGZ)) < DELTA) ;
  710. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) ;
  711. 'SINON' ;
  712. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' ('ABS' (DGYGZ)) ;
  713. 'FINSI' ;
  714. *****************
  715. 'SI' (ERR1 > ERRTOL) ;
  716. 'MESSAGE' 'Problem 18 T1';
  717. 'ERREUR' 5 ;
  718. 'FINSI' ;
  719. **************************************************************
  720. 'SI' (('ABS'(DGZGZ)) < DELTA) ;
  721. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) ;
  722. 'SINON' ;
  723. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' ('ABS' (DGZGZ)) ;
  724. 'FINSI' ;
  725. *****************
  726. 'SI' (ERR1 > ERRTOL) ;
  727. 'MESSAGE' 'Problem 19 T1';
  728. 'ERREUR' 5 ;
  729. 'FINSI' ;
  730. **************************************************************
  731. 'SI' (('ABS'(DRETGZ)) < DELTA) ;
  732. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) ;
  733. 'SINON' ;
  734. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '/' ('ABS' (DRETGZ)) ;
  735. 'FINSI' ;
  736. *****************
  737. 'SI' (ERR1 > ERRTOL) ;
  738. 'MESSAGE' 'Problem 20 T1';
  739. 'ERREUR' 5 ;
  740. 'FINSI' ;
  741. **************************************************************
  742. 'SI' (('ABS'(DRRET)) < DELTA) ;
  743. ERR1 = ('ABS' (DRRETN '-' DRRET)) ;
  744. 'SINON' ;
  745. ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ;
  746. 'FINSI' ;
  747. *****************
  748. 'SI' (ERR1 > ERRTOL) ;
  749. 'MESSAGE' 'Problem 21 T1';
  750. 'ERREUR' 5 ;
  751. 'FINSI' ;
  752. ***************************************************************
  753. 'SI' (('ABS'(DGXRET)) < DELTA) ;
  754. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ;
  755. 'SINON' ;
  756. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ;
  757. 'FINSI' ;
  758. *****************
  759. 'SI' (ERR1 > ERRTOL) ;
  760. 'MESSAGE' 'Problem 22 T1';
  761. 'ERREUR' 5 ;
  762. 'FINSI' ;
  763. ****************************************************************
  764. 'SI' (('ABS'(DGYRET)) < DELTA) ;
  765. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ;
  766. 'SINON' ;
  767. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ;
  768. 'FINSI' ;
  769. *****************
  770. 'SI' (ERR1 > ERRTOL) ;
  771. 'MESSAGE' 'Problem 23 T1';
  772. 'ERREUR' 5 ;
  773. 'FINSI' ;
  774. ****************************************************************
  775. 'SI' (('ABS'(DGZRET)) < DELTA) ;
  776. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) ;
  777. 'SINON' ;
  778. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '/' ('ABS' (DGZRET)) ;
  779. 'FINSI' ;
  780. *****************
  781. 'SI' (ERR1 > ERRTOL) ;
  782. 'MESSAGE' 'Problem 24 T1';
  783. 'ERREUR' 5 ;
  784. 'FINSI' ;
  785. ****************************************************************
  786. 'SI' (('ABS'(DRETRET)) < DELTA) ;
  787. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ;
  788. 'SINON' ;
  789. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ;
  790. 'FINSI' ;
  791. *****************
  792. 'SI' (ERR1 > ERRTOL) ;
  793. 'MESSAGE' 'Problem 25 T1';
  794. 'ERREUR' 5 ;
  795. 'FINSI' ;
  796.  
  797. *****************************************************
  798. *****************************************************
  799. ******* TEST2 ***************************************
  800. *****************************************************
  801. *****************************************************
  802. *
  803. * On compare le jacobien et la variation du residu
  804. * en $DOM1 . 'CENTRE' par rapport à une variation
  805. * infinitésimal en $DOM27 . 'CENTRE'
  806. *
  807.  
  808. PCEN27 = ('DOMA '$DOM27 'CENTRE') 'POIN' 1 ;
  809.  
  810.  
  811. * Les grandeurs pour adimesionner les erreurs
  812.  
  813. ro0 = 'EXTRAIRE' RN0 PCEN1 'SCAL' ;
  814.  
  815. VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  816. CN20 = GAMMAN '*' (PN0 '/' RN0) ;
  817. cson0 = ('EXTRAIRE' CN20 PCEN1 'SCAL') '**' 0.5 ;
  818.  
  819. ret0 = ('EXTRAIRE' RETN0 PCEN1 'SCAL') '**' 0.5 ;
  820.  
  821. *
  822. * Le jacobien exact.
  823. * DRR = d(RES_ro)/dro (variable primale en PCEN27, variable duale en PCEN1) ;
  824. * DGXR = d(RES_gx)/dro (variable primale en PCEN27, variable duale en PCEN1) ;
  825. * ...
  826.  
  827. DRR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMDEN NOMDEN ;
  828. DGXR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMDEN NOMMOX ;
  829. DGYR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMDEN NOMMOY ;
  830. DGZR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMDEN NOMMOZ ;
  831. DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMDEN NOMRET ;
  832.  
  833. DRGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOX NOMDEN ;
  834. DGXGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOX NOMMOX ;
  835. DGYGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOX NOMMOY ;
  836. DGZGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOX NOMMOZ ;
  837. DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOX NOMRET ;
  838.  
  839. DRGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOY NOMDEN ;
  840. DGXGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOY NOMMOX ;
  841. DGYGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOY NOMMOY ;
  842. DGZGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOY NOMMOZ ;
  843. DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOY NOMRET ;
  844.  
  845. DRGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOZ NOMDEN ;
  846. DGXGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOZ NOMMOX ;
  847. DGYGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOZ NOMMOY ;
  848. DGZGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOZ NOMMOZ ;
  849. DRETGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMMOZ NOMRET ;
  850.  
  851. DRRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMRET NOMDEN ;
  852. DGXRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMRET NOMMOX ;
  853. DGYRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMRET NOMMOY ;
  854. DGZRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMRET NOMMOZ ;
  855. DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN1 NOMRET NOMRET ;
  856.  
  857.  
  858. * Le jacobien numerique
  859.  
  860.  
  861. DELTA = 1.0D-7 ;
  862.  
  863. DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  864. PCEN27 PCEN1 NOMDEN NOMDEN DELTA ;
  865. DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  866. PCEN27 PCEN1 NOMDEN NOMMOX DELTA ;
  867. DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  868. PCEN27 PCEN1 NOMDEN NOMMOY DELTA ;
  869. DGZRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  870. PCEN27 PCEN1 NOMDEN NOMMOZ DELTA ;
  871. DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  872. PCEN27 PCEN1 NOMDEN NOMRET DELTA ;
  873.  
  874. DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  875. PCEN27 PCEN1 NOMMOX NOMDEN DELTA ;
  876. DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  877. PCEN27 PCEN1 NOMMOX NOMMOX DELTA ;
  878. DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  879. PCEN27 PCEN1 NOMMOX NOMMOY DELTA ;
  880. DGZGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  881. PCEN27 PCEN1 NOMMOX NOMMOZ DELTA ;
  882. DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  883. PCEN27 PCEN1 NOMMOX NOMRET DELTA ;
  884.  
  885. DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  886. PCEN27 PCEN1 NOMMOY NOMDEN DELTA ;
  887. DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  888. PCEN27 PCEN1 NOMMOY NOMMOX DELTA ;
  889. DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  890. PCEN27 PCEN1 NOMMOY NOMMOY DELTA ;
  891. DGZGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  892. PCEN27 PCEN1 NOMMOY NOMMOZ DELTA ;
  893. DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  894. PCEN27 PCEN1 NOMMOY NOMRET DELTA ;
  895.  
  896. DRGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  897. PCEN27 PCEN1 NOMMOZ NOMDEN DELTA ;
  898. DGXGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  899. PCEN27 PCEN1 NOMMOZ NOMMOX DELTA ;
  900. DGYGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  901. PCEN27 PCEN1 NOMMOZ NOMMOY DELTA ;
  902. DGZGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  903. PCEN27 PCEN1 NOMMOZ NOMMOZ DELTA ;
  904. DRETGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  905. PCEN27 PCEN1 NOMMOZ NOMRET DELTA ;
  906.  
  907. DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  908. PCEN27 PCEN1 NOMRET NOMDEN DELTA ;
  909. DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  910. PCEN27 PCEN1 NOMRET NOMMOX DELTA ;
  911. DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  912. PCEN27 PCEN1 NOMRET NOMMOY DELTA ;
  913. DGZRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  914. PCEN27 PCEN1 NOMRET NOMMOZ DELTA ;
  915. DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  916. PCEN27 PCEN1 NOMRET NOMRET DELTA ;
  917.  
  918. * Test des comparaisons jacobien exact-jacobien numerique
  919. **************************************************************
  920. 'SI' (('ABS'(DRR)) < DELTA) ;
  921. ERR1 = ('ABS' (DRRN '-' DRR)) ;
  922. 'SINON' ;
  923. ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ;
  924. 'FINSI' ;
  925.  
  926. * OPTION DONN 5 ;
  927. ***********************
  928. 'SI' (ERR1 > ERRTOL) ;
  929. 'MESSAGE' 'Problem 1 T2';
  930. 'ERREUR' 5 ;
  931. 'FINSI' ;
  932. **************************************************************
  933. 'SI' (('ABS'(DGXR)) < DELTA) ;
  934. ERR1 = ('ABS' (DGXRN '-' DGXR)) ;
  935. 'SINON' ;
  936. ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ;
  937. 'FINSI' ;
  938. ***********************
  939. 'SI' (ERR1 > ERRTOL) ;
  940. 'MESSAGE' 'Problem 2 T2';
  941. 'ERREUR' 5 ;
  942. 'FINSI' ;
  943. **************************************************************
  944. 'SI' (('ABS'(DGYR)) < DELTA) ;
  945. ERR1 = ('ABS' (DGYRN '-' DGYR)) ;
  946. 'SINON' ;
  947. ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ;
  948. 'FINSI' ;
  949. ************************
  950. 'SI' (ERR1 > ERRTOL) ;
  951. 'MESSAGE' 'Problem 3 T2';
  952. 'ERREUR' 5 ;
  953. 'FINSI' ;
  954. **************************************************************
  955. 'SI' (('ABS'(DGZR)) < DELTA) ;
  956. ERR1 = ('ABS' (DGZRN '-' DGZR)) ;
  957. 'SINON' ;
  958. ERR1 = ('ABS' (DGZRN '-' DGZR)) '/' ('ABS' (DGZR)) ;
  959. 'FINSI' ;
  960. ************************
  961. 'SI' (ERR1 > ERRTOL) ;
  962. 'MESSAGE' 'Problem 4 T2';
  963. 'ERREUR' 5 ;
  964. 'FINSI' ;
  965. ***************************************************************
  966. 'SI' (('ABS'(DRETR)) < DELTA) ;
  967. ERR1 = ('ABS' (DRETRN '-' DRETR)) ;
  968. 'SINON' ;
  969. ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ;
  970. 'FINSI' ;
  971. **************************
  972. 'SI' (ERR1 > ERRTOL) ;
  973. 'MESSAGE' 'Problem 5 T2';
  974. 'ERREUR' 5 ;
  975. 'FINSI' ;
  976. **************************************************************
  977. 'SI' (('ABS'(DRGX)) < DELTA) ;
  978. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  979. 'SINON' ;
  980. ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX)) ;
  981. 'FINSI' ;
  982. ***************************
  983. 'SI' (ERR1 > ERRTOL) ;
  984. 'MESSAGE' 'Problem 6 T2';
  985. 'ERREUR' 5 ;
  986. 'FINSI' ;
  987. ***************************************************************
  988. 'SI' (('ABS'(DGXGX)) < DELTA) ;
  989. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ;
  990. 'SINON' ;
  991. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ;
  992. 'FINSI' ;
  993. *****************************
  994. 'SI' (ERR1 > ERRTOL) ;
  995. 'MESSAGE' 'Problem 7 T2';
  996. 'ERREUR' 5 ;
  997. 'FINSI' ;
  998. **************************************************************
  999. 'SI' (('ABS'(DGYGX)) < DELTA) ;
  1000. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ;
  1001. 'SINON' ;
  1002. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ;
  1003. 'FINSI' ;
  1004. ******************************
  1005. 'SI' (ERR1 > ERRTOL) ;
  1006. 'MESSAGE' 'Problem 8 T2';
  1007. 'ERREUR' 5 ;
  1008. 'FINSI' ;
  1009. **************************************************************
  1010. 'SI' (('ABS'(DGZGX)) < DELTA) ;
  1011. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) ;
  1012. 'SINON' ;
  1013. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' ('ABS' (DGZGX)) ;
  1014. 'FINSI' ;
  1015. ******************************
  1016. 'SI' (ERR1 > ERRTOL) ;
  1017. 'MESSAGE' 'Problem 9 T2';
  1018. 'ERREUR' 5 ;
  1019. 'FINSI' ;
  1020. **************************************************************
  1021. 'SI' (('ABS'(DRETGX)) < DELTA) ;
  1022. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ;
  1023. 'SINON' ;
  1024. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ;
  1025. 'FINSI' ;
  1026. *******************************
  1027. 'SI' (ERR1 > ERRTOL) ;
  1028. 'MESSAGE' 'Problem 10 T2';
  1029. 'ERREUR' 5 ;
  1030. 'FINSI' ;
  1031. **************************************************************
  1032. 'SI' (('ABS'(DRGY)) < DELTA) ;
  1033. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  1034. 'SINON' ;
  1035. ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ;
  1036. 'FINSI' ;
  1037. *******************************
  1038. 'SI' (ERR1 > ERRTOL) ;
  1039. 'MESSAGE' 'Problem 11 T2';
  1040. 'ERREUR' 5 ;
  1041. 'FINSI' ;
  1042. **************************************************************
  1043. 'SI' (('ABS'(DGXGY)) < DELTA) ;
  1044. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ;
  1045. 'SINON' ;
  1046. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' ('ABS' (DGXGY)) ;
  1047. 'FINSI' ;
  1048. ********************************
  1049. 'SI' (ERR1 > ERRTOL) ;
  1050. 'MESSAGE' 'Problem 12 T2';
  1051. 'ERREUR' 5 ;
  1052. 'FINSI' ;
  1053. **************************************************************
  1054. 'SI' (('ABS'(DGYGY)) < DELTA) ;
  1055. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ;
  1056. 'SINON' ;
  1057. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ;
  1058. 'FINSI' ;
  1059. ***************
  1060. 'SI' (ERR1 > ERRTOL) ;
  1061. 'MESSAGE' 'Problem 13 T2';
  1062. 'ERREUR' 5 ;
  1063. 'FINSI' ;
  1064. **************************************************************
  1065. 'SI' (('ABS'(DGZGY)) < DELTA) ;
  1066. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) ;
  1067. 'SINON' ;
  1068. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' ('ABS' (DGZGY)) ;
  1069. 'FINSI' ;
  1070. ****************
  1071. 'SI' (ERR1 > ERRTOL) ;
  1072. 'MESSAGE' 'Problem 14 T2';
  1073. 'ERREUR' 5 ;
  1074. 'FINSI' ;
  1075. **************************************************************
  1076. 'SI' (('ABS'(DRETGY)) < DELTA) ;
  1077. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ;
  1078. 'SINON' ;
  1079. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ;
  1080. 'FINSI' ;
  1081. ****************
  1082. 'SI' (ERR1 > ERRTOL) ;
  1083. 'MESSAGE' 'Problem 15 T2';
  1084. 'ERREUR' 5 ;
  1085. 'FINSI' ;
  1086. **************************************************************
  1087. 'SI' (('ABS'(DRGZ)) < DELTA) ;
  1088. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  1089. 'SINON' ;
  1090. ERR1 = ('ABS' (DRGZN '-' DRGZ)) '/' ('ABS' (DRGZ)) ;
  1091. 'FINSI' ;
  1092. ***************
  1093. 'SI' (ERR1 > ERRTOL) ;
  1094. 'MESSAGE' 'Problem 16 T2';
  1095. 'ERREUR' 5 ;
  1096. 'FINSI' ;
  1097. **************************************************************
  1098. 'SI' (('ABS'(DGXGZ)) < DELTA) ;
  1099. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) ;
  1100. 'SINON' ;
  1101. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' ('ABS' (DGXGZ)) ;
  1102. 'FINSI' ;
  1103. *****************
  1104. 'SI' (ERR1 > ERRTOL) ;
  1105. 'MESSAGE' 'Problem 17 T2';
  1106. 'ERREUR' 5 ;
  1107. 'FINSI' ;
  1108. **************************************************************
  1109. 'SI' (('ABS'(DGYGZ)) < DELTA) ;
  1110. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) ;
  1111. 'SINON' ;
  1112. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' ('ABS' (DGYGZ)) ;
  1113. 'FINSI' ;
  1114. *****************
  1115. 'SI' (ERR1 > ERRTOL) ;
  1116. 'MESSAGE' 'Problem 18 T2';
  1117. 'ERREUR' 5 ;
  1118. 'FINSI' ;
  1119. **************************************************************
  1120. 'SI' (('ABS'(DGZGZ)) < DELTA) ;
  1121. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) ;
  1122. 'SINON' ;
  1123. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' ('ABS' (DGZGZ)) ;
  1124. 'FINSI' ;
  1125. *****************
  1126. 'SI' (ERR1 > ERRTOL) ;
  1127. 'MESSAGE' 'Problem 19 T2';
  1128. 'ERREUR' 5 ;
  1129. 'FINSI' ;
  1130. **************************************************************
  1131. 'SI' (('ABS'(DRETGZ)) < DELTA) ;
  1132. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) ;
  1133. 'SINON' ;
  1134. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '/' ('ABS' (DRETGZ)) ;
  1135. 'FINSI' ;
  1136. *****************
  1137. 'SI' (ERR1 > ERRTOL) ;
  1138. 'MESSAGE' 'Problem 20 T2';
  1139. 'ERREUR' 5 ;
  1140. 'FINSI' ;
  1141. **************************************************************
  1142. 'SI' (('ABS'(DRRET)) < DELTA) ;
  1143. ERR1 = ('ABS' (DRRETN '-' DRRET)) ;
  1144. 'SINON' ;
  1145. ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ;
  1146. 'FINSI' ;
  1147. *****************
  1148. 'SI' (ERR1 > ERRTOL) ;
  1149. 'MESSAGE' 'Problem 21 T2';
  1150. 'ERREUR' 5 ;
  1151. 'FINSI' ;
  1152. ***************************************************************
  1153. 'SI' (('ABS'(DGXRET)) < DELTA) ;
  1154. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ;
  1155. 'SINON' ;
  1156. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ;
  1157. 'FINSI' ;
  1158. *****************
  1159. 'SI' (ERR1 > ERRTOL) ;
  1160. 'MESSAGE' 'Problem 22 T2';
  1161. 'ERREUR' 5 ;
  1162. 'FINSI' ;
  1163. ****************************************************************
  1164. 'SI' (('ABS'(DGYRET)) < DELTA) ;
  1165. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ;
  1166. 'SINON' ;
  1167. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ;
  1168. 'FINSI' ;
  1169. *****************
  1170. 'SI' (ERR1 > ERRTOL) ;
  1171. 'MESSAGE' 'Problem 23 T2';
  1172. 'ERREUR' 5 ;
  1173. 'FINSI' ;
  1174. ****************************************************************
  1175. 'SI' (('ABS'(DGZRET)) < DELTA) ;
  1176. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) ;
  1177. 'SINON' ;
  1178. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '/' ('ABS' (DGZRET)) ;
  1179. 'FINSI' ;
  1180. *****************
  1181. 'SI' (ERR1 > ERRTOL) ;
  1182. 'MESSAGE' 'Problem 24 T2';
  1183. 'ERREUR' 5 ;
  1184. 'FINSI' ;
  1185. ****************************************************************
  1186. 'SI' (('ABS'(DRETRET)) < DELTA) ;
  1187. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ;
  1188. 'SINON' ;
  1189. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ;
  1190. 'FINSI' ;
  1191. *****************
  1192. 'SI' (ERR1 > ERRTOL) ;
  1193. 'MESSAGE' 'Problem 25 T2';
  1194. 'ERREUR' 5 ;
  1195. 'FINSI' ;
  1196.  
  1197. *****************************************************
  1198. *****************************************************
  1199. ******* TEST3 ***************************************
  1200. *****************************************************
  1201. *****************************************************
  1202. *
  1203. * On observe la variation du residu en $DOM27 . 'CENTRE'
  1204. * par rapport à une variation infinitésimal en
  1205. * $DOM27 . 'CENTRE' (NB : DOM27 est sur le bord!).
  1206. *
  1207.  
  1208.  
  1209. * Les grandeurs pour adimesionner les erreurs
  1210.  
  1211. ro0 = 'EXTRAIRE' RN0 PCEN27 'SCAL' ;
  1212.  
  1213. VN0 PN0 = 'PRIM' 'PERFMONO' RN0 GN0 RETN0 GAMMAN ;
  1214. CN20 = GAMMAN '*' (PN0 '/' RN0) ;
  1215. cson0 = ('EXTRAIRE' CN20 PCEN27 'SCAL') '**' 0.5 ;
  1216.  
  1217. ret0 = ('EXTRAIRE' RETN0 PCEN27 'SCAL') '**' 0.5 ;
  1218.  
  1219. *
  1220. * Le jacobien exact.
  1221. * DRR = d(RES_ro)/dro (variable primale en PCEN27, variable duale en PCEN1) ;
  1222. * DGXR = d(RES_gx)/dro (variable primale en PCEN27, variable duale en PCEN1) ;
  1223. * ...
  1224.  
  1225. DRR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMDEN NOMDEN ;
  1226. DGXR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMDEN NOMMOX ;
  1227. DGYR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMDEN NOMMOY ;
  1228. DGZR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMDEN NOMMOZ ;
  1229. DRETR = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMDEN NOMRET ;
  1230.  
  1231. DRGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOX NOMDEN ;
  1232. DGXGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOX NOMMOX ;
  1233. DGYGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOX NOMMOY ;
  1234. DGZGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOX NOMMOZ ;
  1235. DRETGX = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOX NOMRET ;
  1236.  
  1237. DRGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOY NOMDEN ;
  1238. DGXGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOY NOMMOX ;
  1239. DGYGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOY NOMMOY ;
  1240. DGZGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOY NOMMOZ ;
  1241. DRETGY = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOY NOMRET ;
  1242.  
  1243. DRGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOZ NOMDEN ;
  1244. DGXGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOZ NOMMOX ;
  1245. DGYGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOZ NOMMOY ;
  1246. DGZGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOZ NOMMOZ ;
  1247. DRETGZ = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMMOZ NOMRET ;
  1248.  
  1249. DRRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMRET NOMDEN ;
  1250. DGXRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMRET NOMMOX ;
  1251. DGYRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMRET NOMMOY ;
  1252. DGZRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMRET NOMMOZ ;
  1253. DRETRET = JACOVA JACO $DOMTOT LISTINCO PCEN27 PCEN27 NOMRET NOMRET ;
  1254.  
  1255.  
  1256. * Le jacobien numerique
  1257.  
  1258.  
  1259. DELTA = 1.0D-7 ;
  1260.  
  1261. DRRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1262. PCEN27 PCEN27 NOMDEN NOMDEN DELTA ;
  1263. DGXRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1264. PCEN27 PCEN27 NOMDEN NOMMOX DELTA ;
  1265. DGYRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1266. PCEN27 PCEN27 NOMDEN NOMMOY DELTA ;
  1267. DGZRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1268. PCEN27 PCEN27 NOMDEN NOMMOZ DELTA ;
  1269. DRETRN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1270. PCEN27 PCEN27 NOMDEN NOMRET DELTA ;
  1271.  
  1272. DRGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1273. PCEN27 PCEN27 NOMMOX NOMDEN DELTA ;
  1274. DGXGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1275. PCEN27 PCEN27 NOMMOX NOMMOX DELTA ;
  1276. DGYGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1277. PCEN27 PCEN27 NOMMOX NOMMOY DELTA ;
  1278. DGZGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1279. PCEN27 PCEN27 NOMMOX NOMMOZ DELTA ;
  1280. DRETGXN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1281. PCEN27 PCEN27 NOMMOX NOMRET DELTA ;
  1282.  
  1283. DRGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1284. PCEN27 PCEN27 NOMMOY NOMDEN DELTA ;
  1285. DGXGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1286. PCEN27 PCEN27 NOMMOY NOMMOX DELTA ;
  1287. DGYGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1288. PCEN27 PCEN27 NOMMOY NOMMOY DELTA ;
  1289. DGZGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1290. PCEN27 PCEN27 NOMMOY NOMMOZ DELTA ;
  1291. DRETGYN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1292. PCEN27 PCEN27 NOMMOY NOMRET DELTA ;
  1293.  
  1294. DRGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1295. PCEN27 PCEN27 NOMMOZ NOMDEN DELTA ;
  1296. DGXGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1297. PCEN27 PCEN27 NOMMOZ NOMMOX DELTA ;
  1298. DGYGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1299. PCEN27 PCEN27 NOMMOZ NOMMOY DELTA ;
  1300. DGZGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1301. PCEN27 PCEN27 NOMMOZ NOMMOZ DELTA ;
  1302. DRETGZN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1303. PCEN27 PCEN27 NOMMOZ NOMRET DELTA ;
  1304.  
  1305. DRRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1306. PCEN27 PCEN27 NOMRET NOMDEN DELTA ;
  1307. DGXRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1308. PCEN27 PCEN27 NOMRET NOMMOX DELTA ;
  1309. DGYRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1310. PCEN27 PCEN27 NOMRET NOMMOY DELTA ;
  1311. DGZRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1312. PCEN27 PCEN27 NOMRET NOMMOZ DELTA ;
  1313. DRETRETN = JACNUM $DOMTOT METO RN0 GN0 RETN0 GAMMAN LISTINCO UINF UPRI
  1314. PCEN27 PCEN27 NOMRET NOMRET DELTA ;
  1315.  
  1316. * Test des comparaisons jacobien exact-jacobien numerique
  1317. **************************************************************
  1318. 'SI' (('ABS'(DRR)) < DELTA) ;
  1319. ERR1 = ('ABS' (DRRN '-' DRR)) ;
  1320. 'SINON' ;
  1321. ERR1 = ('ABS' (DRRN '-' DRR)) '/' ('ABS' (DRR)) ;
  1322. 'FINSI' ;
  1323. ***********************
  1324. 'SI' (ERR1 > ERRTOL) ;
  1325. 'MESSAGE' 'Problem 1';
  1326. 'ERREUR' 5 ;
  1327. 'FINSI' ;
  1328. **************************************************************
  1329. 'SI' (('ABS'(DGXR)) < DELTA) ;
  1330. ERR1 = ('ABS' (DGXRN '-' DGXR)) ;
  1331. 'SINON' ;
  1332. ERR1 = ('ABS' (DGXRN '-' DGXR)) '/' ('ABS' (DGXR)) ;
  1333. 'FINSI' ;
  1334. ***********************
  1335. 'SI' (ERR1 > ERRTOL) ;
  1336. 'MESSAGE' 'Problem 2';
  1337. 'ERREUR' 5 ;
  1338. 'FINSI' ;
  1339. **************************************************************
  1340. 'SI' (('ABS'(DGYR)) < DELTA) ;
  1341. ERR1 = ('ABS' (DGYRN '-' DGYR)) ;
  1342. 'SINON' ;
  1343. ERR1 = ('ABS' (DGYRN '-' DGYR)) '/' ('ABS' (DGYR)) ;
  1344. 'FINSI' ;
  1345. ************************
  1346. 'SI' (ERR1 > ERRTOL) ;
  1347. 'MESSAGE' 'Problem 3';
  1348. 'ERREUR' 5 ;
  1349. 'FINSI' ;
  1350. **************************************************************
  1351. 'SI' (('ABS'(DGZR)) < DELTA) ;
  1352. ERR1 = ('ABS' (DGZRN '-' DGZR)) ;
  1353. 'SINON' ;
  1354. ERR1 = ('ABS' (DGZRN '-' DGZR)) '/' ('ABS' (DGZR)) ;
  1355. 'FINSI' ;
  1356. ************************
  1357. 'SI' (ERR1 > ERRTOL) ;
  1358. 'MESSAGE' 'Problem 4';
  1359. 'ERREUR' 5 ;
  1360. 'FINSI' ;
  1361. ***************************************************************
  1362. 'SI' (('ABS'(DRETR)) < DELTA) ;
  1363. ERR1 = ('ABS' (DRETRN '-' DRETR)) ;
  1364. 'SINON' ;
  1365. ERR1 = ('ABS' (DRETRN '-' DRETR)) '/' ('ABS' (DRETR)) ;
  1366. 'FINSI' ;
  1367. **************************
  1368. 'SI' (ERR1 > ERRTOL) ;
  1369. 'MESSAGE' 'Problem 5';
  1370. 'ERREUR' 5 ;
  1371. 'FINSI' ;
  1372. **************************************************************
  1373. 'SI' (('ABS'(DRGX)) < DELTA) ;
  1374. ERR1 = ('ABS' (DRGXN '-' DRGX)) ;
  1375. 'SINON' ;
  1376. ERR1 = ('ABS' (DRGXN '-' DRGX)) '/' ('ABS' (DRGX)) ;
  1377. 'FINSI' ;
  1378. ***************************
  1379. 'SI' (ERR1 > ERRTOL) ;
  1380. 'MESSAGE' 'Problem 6';
  1381. 'ERREUR' 5 ;
  1382. 'FINSI' ;
  1383. ***************************************************************
  1384. 'SI' (('ABS'(DGXGX)) < DELTA) ;
  1385. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) ;
  1386. 'SINON' ;
  1387. ERR1 = ('ABS' (DGXGXN '-' DGXGX)) '/' ('ABS' (DGXGX)) ;
  1388. 'FINSI' ;
  1389. *****************************
  1390. 'SI' (ERR1 > ERRTOL) ;
  1391. 'MESSAGE' 'Problem 7';
  1392. 'ERREUR' 5 ;
  1393. 'FINSI' ;
  1394. **************************************************************
  1395. 'SI' (('ABS'(DGYGX)) < DELTA) ;
  1396. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) ;
  1397. 'SINON' ;
  1398. ERR1 = ('ABS' (DGYGXN '-' DGYGX)) '/' ('ABS' (DGYGX)) ;
  1399. 'FINSI' ;
  1400. ******************************
  1401. 'SI' (ERR1 > ERRTOL) ;
  1402. 'MESSAGE' 'Problem 8';
  1403. 'ERREUR' 5 ;
  1404. 'FINSI' ;
  1405. **************************************************************
  1406. 'SI' (('ABS'(DGZGX)) < DELTA) ;
  1407. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) ;
  1408. 'SINON' ;
  1409. ERR1 = ('ABS' (DGZGXN '-' DGZGX)) '/' ('ABS' (DGZGX)) ;
  1410. 'FINSI' ;
  1411. ******************************
  1412. 'SI' (ERR1 > ERRTOL) ;
  1413. 'MESSAGE' 'Problem 9';
  1414. 'ERREUR' 5 ;
  1415. 'FINSI' ;
  1416. **************************************************************
  1417. 'SI' (('ABS'(DRETGX)) < DELTA) ;
  1418. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) ;
  1419. 'SINON' ;
  1420. ERR1 = ('ABS' (DRETGXN '-' DRETGX)) '/' ('ABS' (DRETGX)) ;
  1421. 'FINSI' ;
  1422. *******************************
  1423. 'SI' (ERR1 > ERRTOL) ;
  1424. 'MESSAGE' 'Problem 10';
  1425. 'ERREUR' 5 ;
  1426. 'FINSI' ;
  1427. **************************************************************
  1428. 'SI' (('ABS'(DRGY)) < DELTA) ;
  1429. ERR1 = ('ABS' (DRGYN '-' DRGY)) ;
  1430. 'SINON' ;
  1431. ERR1 = ('ABS' (DRGYN '-' DRGY)) '/' ('ABS' (DRGY)) ;
  1432. 'FINSI' ;
  1433. *******************************
  1434. 'SI' (ERR1 > ERRTOL) ;
  1435. 'MESSAGE' 'Problem 11';
  1436. 'ERREUR' 5 ;
  1437. 'FINSI' ;
  1438. **************************************************************
  1439. 'SI' (('ABS'(DGXGY)) < DELTA) ;
  1440. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) ;
  1441. 'SINON' ;
  1442. ERR1 = ('ABS' (DGXGYN '-' DGXGY)) '/' ('ABS' (DGXGY)) ;
  1443. 'FINSI' ;
  1444. ********************************
  1445. 'SI' (ERR1 > ERRTOL) ;
  1446. 'MESSAGE' 'Problem 12';
  1447. 'ERREUR' 5 ;
  1448. 'FINSI' ;
  1449. **************************************************************
  1450. 'SI' (('ABS'(DGYGY)) < DELTA) ;
  1451. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) ;
  1452. 'SINON' ;
  1453. ERR1 = ('ABS' (DGYGYN '-' DGYGY)) '/' ('ABS' (DGYGY)) ;
  1454. 'FINSI' ;
  1455. ***************
  1456. 'SI' (ERR1 > ERRTOL) ;
  1457. 'MESSAGE' 'Problem 13';
  1458. 'ERREUR' 5 ;
  1459. 'FINSI' ;
  1460. **************************************************************
  1461. 'SI' (('ABS'(DGZGY)) < DELTA) ;
  1462. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) ;
  1463. 'SINON' ;
  1464. ERR1 = ('ABS' (DGZGYN '-' DGZGY)) '/' ('ABS' (DGZGY)) ;
  1465. 'FINSI' ;
  1466. ****************
  1467. 'SI' (ERR1 > ERRTOL) ;
  1468. 'MESSAGE' 'Problem 14';
  1469. 'ERREUR' 5 ;
  1470. 'FINSI' ;
  1471. **************************************************************
  1472. 'SI' (('ABS'(DRETGY)) < DELTA) ;
  1473. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) ;
  1474. 'SINON' ;
  1475. ERR1 = ('ABS' (DRETGYN '-' DRETGY)) '/' ('ABS' (DRETGY)) ;
  1476. 'FINSI' ;
  1477. ****************
  1478. 'SI' (ERR1 > ERRTOL) ;
  1479. 'MESSAGE' 'Problem 15';
  1480. 'ERREUR' 5 ;
  1481. 'FINSI' ;
  1482. **************************************************************
  1483. 'SI' (('ABS'(DRGZ)) < DELTA) ;
  1484. ERR1 = ('ABS' (DRGZN '-' DRGZ)) ;
  1485. 'SINON' ;
  1486. ERR1 = ('ABS' (DRGZN '-' DRGZ)) '/' ('ABS' (DRGZ)) ;
  1487. 'FINSI' ;
  1488. ***************
  1489. 'SI' (ERR1 > ERRTOL) ;
  1490. 'MESSAGE' 'Problem 16';
  1491. 'ERREUR' 5 ;
  1492. 'FINSI' ;
  1493. **************************************************************
  1494. 'SI' (('ABS'(DGXGZ)) < DELTA) ;
  1495. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) ;
  1496. 'SINON' ;
  1497. ERR1 = ('ABS' (DGXGZN '-' DGXGZ)) '/' ('ABS' (DGXGZ)) ;
  1498. 'FINSI' ;
  1499. *****************
  1500. 'SI' (ERR1 > ERRTOL) ;
  1501. 'MESSAGE' 'Problem 17';
  1502. 'ERREUR' 5 ;
  1503. 'FINSI' ;
  1504.  
  1505. * 'OPTION' DONN 5 ;
  1506. **************************************************************
  1507. 'SI' (('ABS'(DGYGZ)) < DELTA) ;
  1508. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) ;
  1509. 'SINON' ;
  1510. ERR1 = ('ABS' (DGYGZN '-' DGYGZ)) '/' ('ABS' (DGYGZ)) ;
  1511. 'FINSI' ;
  1512. *****************
  1513. 'SI' (ERR1 > ERRTOL) ;
  1514. 'MESSAGE' 'Problem 18';
  1515. 'ERREUR' 5 ;
  1516. 'FINSI' ;
  1517. **************************************************************
  1518. 'SI' (('ABS'(DGZGZ)) < DELTA) ;
  1519. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) ;
  1520. 'SINON' ;
  1521. ERR1 = ('ABS' (DGZGZN '-' DGZGZ)) '/' ('ABS' (DGZGZ)) ;
  1522. 'FINSI' ;
  1523. *****************
  1524. 'SI' (ERR1 > ERRTOL) ;
  1525. 'MESSAGE' 'Problem 19';
  1526. 'ERREUR' 5 ;
  1527. 'FINSI' ;
  1528. **************************************************************
  1529. 'SI' (('ABS'(DRETGZ)) < DELTA) ;
  1530. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) ;
  1531. 'SINON' ;
  1532. ERR1 = ('ABS' (DRETGZN '-' DRETGZ)) '/' ('ABS' (DRETGZ)) ;
  1533. 'FINSI' ;
  1534. *****************
  1535. 'SI' (ERR1 > ERRTOL) ;
  1536. 'MESSAGE' 'Problem 20';
  1537. 'ERREUR' 5 ;
  1538. 'FINSI' ;
  1539. **************************************************************
  1540. 'SI' (('ABS'(DRRET)) < DELTA) ;
  1541. ERR1 = ('ABS' (DRRETN '-' DRRET)) ;
  1542. 'SINON' ;
  1543. ERR1 = ('ABS' (DRRETN '-' DRRET)) '/' ('ABS' (DRRET)) ;
  1544. 'FINSI' ;
  1545. *****************
  1546. 'SI' (ERR1 > ERRTOL) ;
  1547. 'MESSAGE' 'Problem 21';
  1548. 'ERREUR' 5 ;
  1549. 'FINSI' ;
  1550. ***************************************************************
  1551. 'SI' (('ABS'(DGXRET)) < DELTA) ;
  1552. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) ;
  1553. 'SINON' ;
  1554. ERR1 = ('ABS' (DGXRETN '-' DGXRET)) '/' ('ABS' (DGXRET)) ;
  1555. 'FINSI' ;
  1556. *****************
  1557. 'SI' (ERR1 > ERRTOL) ;
  1558. 'MESSAGE' 'Problem 22';
  1559. 'ERREUR' 5 ;
  1560. 'FINSI' ;
  1561. ****************************************************************
  1562. 'SI' (('ABS'(DGYRET)) < DELTA) ;
  1563. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) ;
  1564. 'SINON' ;
  1565. ERR1 = ('ABS' (DGYRETN '-' DGYRET)) '/' ('ABS' (DGYRET)) ;
  1566. 'FINSI' ;
  1567. *****************
  1568. 'SI' (ERR1 > ERRTOL) ;
  1569. 'MESSAGE' 'Problem 23';
  1570. 'ERREUR' 5 ;
  1571. 'FINSI' ;
  1572. ****************************************************************
  1573. 'SI' (('ABS'(DGZRET)) < DELTA) ;
  1574. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) ;
  1575. 'SINON' ;
  1576. ERR1 = ('ABS' (DGZRETN '-' DGZRET)) '/' ('ABS' (DGZRET)) ;
  1577. 'FINSI' ;
  1578. *****************
  1579. 'SI' (ERR1 > ERRTOL) ;
  1580. 'MESSAGE' 'Problem 24';
  1581. 'ERREUR' 5 ;
  1582. 'FINSI' ;
  1583. ****************************************************************
  1584. 'SI' (('ABS'(DRETRET)) < DELTA) ;
  1585. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) ;
  1586. 'SINON' ;
  1587. ERR1 = ('ABS' (DRETRETN '-' DRETRET)) '/' ('ABS' (DRETRET)) ;
  1588. 'FINSI' ;
  1589. *****************
  1590. 'SI' (ERR1 > ERRTOL) ;
  1591. 'MESSAGE' 'Problem 25';
  1592. 'ERREUR' 5 ;
  1593. 'FINSI' ;
  1594. *****************************************************************
  1595. *****************************************************************
  1596. *****************************************************************
  1597.  
  1598.  
  1599. 'FIN' ;
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  

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