Télécharger konv_impl3D.dgibi

Retour à la liste

Numérotation des lignes :

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

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