Télécharger konv_impl2ord2.dgibi

Retour à la liste

Numérotation des lignes :

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

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