Télécharger konv_impl3D1.dgibi

Retour à la liste

Numérotation des lignes :

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

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