Télécharger konv_impl2ord.dgibi

Retour à la liste

Numérotation des lignes :

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

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