Télécharger mdiavf2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mdiavf2.dgibi
  2. *
  3. * Utilisation de l'operateur MDIA pour creér un jacobien analytique
  4. * dans le cas d'injection subsonic d'air dans l'air
  5. *
  6. * A. Beccantini, SFME/LTMF
  7. *
  8.  
  9. 'OPTION' 'DIME' 2 'ELEM' 'QUA4' 'ISOV' 'SULI'
  10. 'ECHO' 0 'TRAC' 'X' ;
  11.  
  12. GRAPH = VRAI ;
  13. GRAPH = FAUX ;
  14.  
  15. ******************
  16. **** MAILLAGE ****
  17. ******************
  18.  
  19. RAF = 8 ;
  20.  
  21. L = 10. ;
  22. DX = 1.0 '/' RAF ;
  23. NX = 2 ;
  24. LINJ = NX '*' DX ;
  25.  
  26. P2 = LINJ 0.0 ;
  27. P3 = 0.0 0.0 ;
  28.  
  29. NY = 'ENTIER' ((L '/' DX) '+' 0.5) ;
  30.  
  31. P2P3 = P2 'DROIT' NX P3 ;
  32. DOMINT = P2P3 'TRANSLATION' NY (0. L) ;
  33.  
  34. *
  35. * Creation of MAILEN (maillage à l'entrée)
  36. *
  37.  
  38. LIGAPP = ('CHANGER' 'POI1' P2P3) ;
  39. MAILEN = DOMINT 'ELEM' 'APPUYE' 'LARGEMENT' LIGAPP ;
  40.  
  41. *
  42. **** Creation of DOMAINE tables via the MODEL object
  43. *
  44.  
  45. MDOMINT = 'MODELISER' DOMINT 'EULER' ;
  46. MP2P3 = 'MODELISER' P2P3 'EULER' ;
  47. MMAILEN = 'MODELISER' MAILEN 'EULER' ;
  48.  
  49. $DOMINT = 'DOMA' MDOMINT 'VF' ;
  50. $P2P3 = 'DOMA' MP2P3 'VF' ;
  51. $MAILEN = 'DOMA' MMAILEN 'VF' ;
  52.  
  53. QDOMINT = 'DOMA' MDOMINT 'QUAF' ;
  54. QP2P3 = 'DOMA' MP2P3 'QUAF' ;
  55. QMAILEN = 'DOMA' MMAILEN 'QUAF' ;
  56.  
  57. 'ELIMINATION' (QDOMINT 'ET' QP2P3 'ET' QMAILEN) 0.001 ;
  58.  
  59. 'SI' GRAPH ;
  60. 'TRACER' (DOMINT 'ET' (MAILEN 'COULEUR' 'ROUG'))
  61. 'TITR' 'Maillage entree';
  62. 'FINSI' ;
  63.  
  64. *
  65. * MAIFA1 = internel cells close to ghost cells
  66. *
  67.  
  68. SURP2P3 = 'DOMA' $P2P3 'VOLUME' ;
  69. VOLDOMI = 'DOMA' $DOMINT 'VOLUME' ;
  70.  
  71. POIN0 = 'POIN' 1 ($P2P3 . 'CENTRE') ;
  72. POIN1 = 'POIN' 1 (($DOMINT . 'FACEL') 'ELEM' 'CONTENANT' POIN0) ;
  73.  
  74. MAIFA1 = 'MANUEL' 'POI1' POIN1 ;
  75. LISTVOLU = 'PROG' ('EXTRAIRE' VOLDOMI POIN1 'SCAL') ;
  76. LISTSURF = 'PROG' ('EXTRAIRE' SURP2P3 POIN0 'SCAL') ;
  77.  
  78. 'REPETER' BLLIM (('NBNO' ($P2P3 . 'CENTRE')) '-' 1) ;
  79. POIN0 = 'POIN' (&BLLIM '+' 1) ($P2P3 . 'CENTRE') ;
  80. POIN1 = 'POIN' 1 (($DOMINT . 'FACEL') 'ELEM' 'CONTENANT' POIN0) ;
  81. MAIFA1 = MAIFA1 'ET' ('MANUEL' 'POI1' POIN1) ;
  82. LISTVOLU = LISTVOLU 'ET' ('PROG' ('EXTRAIRE' VOLDOMI POIN1 'SCAL'))
  83. ;
  84. LISTSURF = LISTSURF 'ET' ('PROG' ('EXTRAIRE' SURP2P3 POIN0 'SCAL'))
  85. ;
  86. 'FIN' BLLIM ;
  87.  
  88. CHSURF = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LISTSURF 'NATU' 'DISCRET' ;
  89. CHVOLU = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LISTVOLU 'NATU' 'DISCRET' ;
  90.  
  91. 'SI' GRAPH ;
  92. 'TRACER' (DOMINT 'ET' MAIFA1) 'TITRE'
  93. 'Domain and faces -> centres' ;
  94. 'FINSI' ;
  95.  
  96. **************
  97. **** I.C. ****
  98. **************
  99.  
  100. UN = ('NOMC' 'RN' ('BRUI' 'BLAN' 'UNIF' 1.0 0.1
  101. ($DOMINT . 'CENTRE')) 'NATU' 'DISCRET') 'ET'
  102. ('NOMC' 'RUX' ('BRUI' 'BLAN' 'UNIF' 300.0 10.0
  103. ($DOMINT . 'CENTRE')) 'NATU' 'DISCRET') 'ET'
  104. ('NOMC' 'RUY' ('BRUI' 'BLAN' 'UNIF' 300.0 10.0
  105. ($DOMINT . 'CENTRE')) 'NATU' 'DISCRET') 'ET'
  106. ('NOMC' 'RETN' ('BRUI' 'BLAN' 'UNIF' 1D6 0.1
  107. ($DOMINT . 'CENTRE')) 'NATU' 'DISCRET') ;
  108.  
  109. *********************************************************************
  110. **** Procedure RESL *************************************************
  111. *********************************************************************
  112. *
  113. 'DEBP' RESL ;
  114. 'ARGU' RVX*'TABLE' ;
  115. *
  116. **** Euler Monocomponent 2D
  117. * Subsonic injection of air
  118. *
  119. * A definir:
  120. *
  121. * RVX . 'DOMA' = table domaine des "internal cells close to the
  122. * injection interfaces"
  123. * RVX . 'DOMA' ne serve que pour MDIA
  124. *
  125. * RVX . 'VOLUME' = volume des "internal cells close to the injection
  126. * interfaces"
  127. *
  128. * RVX . 'SURFACE'= CHPOINT defini sur les centres des "internal cells
  129. * close to the injection interfaces", qui contient
  130. * la surface des faces d'injection
  131. * |-------|
  132. * | |
  133. * +---> |
  134. * | |
  135. * |-------|
  136. *
  137. * RVX . 'MAILLAGE' = maillage de 'POI1' (centres des "internal cells
  138. * close to the injection interfaces")
  139. *
  140. * RVX . 'GAMLIM' (objet de type FLOTTANT) (gamma du gaz);
  141. * RVX . 'ROVINF' (objet de type FLOTTANT) (flux de masse à l'injection) ;
  142. * RVX . 'RTINF' (objet de type FLOTTANT) (temperature à l'injection);
  143. *
  144. * RVX . 'DX' (objet de type FLOTTANT) (longuer pour le calcul du pas
  145. * de temps de stabilité pour l'algorithme temporel
  146. * explicite)
  147. * RVX . 'ALPHA' (objet de type FLOTTANT) (coefficient de securité pour
  148. * le calcul du pas de temps de stabilité pour
  149. * l'algorithme temporel explicite)
  150. *
  151.  
  152. RV = RVX . 'EQEX' ;
  153.  
  154. $DOMA = RVX . 'DOMA' ;
  155. CHVOLUME = RVX . 'VOLUME' ;
  156.  
  157. CHSFACE = RVX . 'SURFACE' ;
  158.  
  159. AA = 'TYPE' (RVX . 'GAMLIM') ;
  160. 'SI' ('NEG' AA 'FLOTTANT') ;
  161. 'MESSAGE' 'RV . GAMLIM ???' ;
  162. 'ERREUR' 21 ;
  163. 'FINSI' ;
  164.  
  165. AA = 'TYPE' (RVX . 'ROVINF') ;
  166. 'SI' ('NEG' AA 'FLOTTANT') ;
  167. 'MESSAGE' 'RV . ROVINF ???' ;
  168. 'ERREUR' 21 ;
  169. 'FINSI' ;
  170.  
  171. AA = 'TYPE' (RVX . 'RTINF') ;
  172. 'SI' ('NEG' AA 'FLOTTANT') ;
  173. 'MESSAGE' 'RV . RTINF ???' ;
  174. 'ERREUR' 21 ;
  175. 'FINSI' ;
  176.  
  177. * Inconnue
  178.  
  179. UN = 'COPIER' (RV . 'UN') ;
  180. MAIFA1 = RVX . 'MAILLAGE' ;
  181. UNRED = 'REDU' UN MAIFA1 ;
  182.  
  183. RNRED = 'EXCO' 'RN' UNRED ;
  184. GNRED = 'EXCO' ('MOTS' 'RUX' 'RUY') UNRED ('MOTS' 'UX' 'UY') ;
  185. RETNRED = 'EXCO' 'RETN' UNRED ;
  186. GAMLIM = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' (RVX . 'GAMLIM') ;
  187. GAMSCAL = (RVX . 'GAMLIM') ;
  188.  
  189. VNRED PNRED = 'PRIM' 'PERFMONO' RNRED GNRED RETNRED GAMLIM ;
  190.  
  191. * LISTREEL pour les conditions limites (flux) .
  192.  
  193. LRET = 'PROG' ;
  194. LRUN = 'PROG' ;
  195. LR = 'PROG' ;
  196.  
  197. * LISTREEL pour les conditions limites (jacobien) .
  198.  
  199. LRUYR = 'PROG' ;
  200. LRETR = 'PROG' ;
  201. LRUYUX = 'PROG' ;
  202. LRETUX = 'PROG' ;
  203. LRUYUY = 'PROG' ;
  204. LRETUY = 'PROG' ;
  205. LRUYRET = 'PROG' ;
  206. LRETRET = 'PROG' ;
  207.  
  208. * Boucle sur maifa1 pour calculer les conditions à imposer
  209.  
  210. NN = 'NBNO' MAIFA1 ;
  211. RTG = RVX . 'RTINF' ;
  212. GG = RVX . 'ROVINF' ;
  213.  
  214. 'REPETER' BL1 NN ;
  215. PCEL = 'POIN' MAIFA1 &BL1 ;
  216. SURCEL = 'EXTRAIRE' CHSFACE 'SCAL' PCEL ;
  217. VOLCEL = 'EXTRAIRE' CHVOLUME 'SCAL' PCEL ;
  218. ROD = 'EXTRAIRE' RNRED 'SCAL' PCEL ;
  219. PD = 'EXTRAIRE' PNRED 'SCAL' PCEL ;
  220. UYD = 'EXTRAIRE' VNRED 'UY' PCEL ;
  221. UXD = 'EXTRAIRE' VNRED 'UX' PCEL ;
  222. UND = UYD ;
  223. UTD = UXD ;
  224. PG = PD ;
  225. ROG = PG '/' RTG ;
  226. UNG = GG '/' ROG ;
  227. RHTG = ((PG '*' GAMSCAL) '/' (GAMSCAL '-' 1.))
  228. '+' (0.5 '*' ROG '*' UNG '*' UNG) ;
  229.  
  230. * DROUYDP = d(RHOUY)/dP_(primitive)
  231. DROUYDP =
  232. 1. '-' ((GG '*' GG '*' RTG) '/' (PD '*' PD)) ;
  233. * DRETDP = d(RET)/dP_(primitive)
  234. DRETDP =
  235. -1 '*' ((GG '*' GG '*' GG '*' RTG '*' RTG)
  236. '/' (PD '*' PD '*' PD)) ;
  237. *
  238. * d/dro_(conservative) = DPDRO '*' d()/dP_(primitive)
  239. DPDRO = (GAMSCAL '-' 1.) '*' ((UXD ** 2) '+' (UYD ** 2)) '/' 2. ;
  240. *
  241. * d/droux_(conservative) = DPDUX '*' d()/dP_(primitive)
  242. DPDUX = -1 '*' (GAMSCAL '-' 1.) '*' UXD ;
  243. *
  244. * d/drouy_(conservative) = DPDUY '*' d()/dP_(primitive)
  245. DPDUY = -1 '*' (GAMSCAL '-' 1.) '*' UYD ;
  246. *
  247. * d/dret_(conservative) = DPDRET '*' d()/dP_(primitive)
  248. DPDRET = (GAMSCAL '-' 1.) ;
  249. *
  250. *
  251. * Le flux
  252. *
  253. * ^
  254. * |-->
  255. * --------------
  256. *
  257. LR = LR 'ET' ('PROG' ((ROG '*' UNG) '*' (SURCEL '/' VOLCEL)));
  258. LRUN = LRUN 'ET' ('PROG' (((ROG '*' UNG '*' UNG) '+' PG) '*'
  259. (SURCEL '/' VOLCEL))) ;
  260. LRET = LRET 'ET' ('PROG' ((UNG '*' RHTG) '*' (SURCEL '/' VOLCEL))) ;
  261. *
  262. * Le jacobien du flux
  263. *
  264. * Inverse du volume est lié a la syntaxe de MDIA
  265. *
  266. VOLCEL2 = VOLCEL '*' VOLCEL ;
  267. LRUYR = LRUYR 'ET' ('PROG' ((DPDRO '*' DROUYDP) '*'
  268. (SURCEL '/' VOLCEL2))) ;
  269. LRETR = LRETR 'ET' ('PROG' ((DPDRO '*' DRETDP) '*'
  270. (SURCEL '/' VOLCEL2))) ;
  271. LRUYUX = LRUYUX 'ET' ('PROG' ((DPDUX '*' DROUYDP) '*'
  272. (SURCEL '/' VOLCEL2))) ;
  273. LRETUX = LRETUX 'ET' ('PROG' ((DPDUX '*' DRETDP) '*'
  274. (SURCEL '/' VOLCEL2))) ;
  275. LRUYUY = LRUYUY 'ET' ('PROG' ((DPDUY'*' DROUYDP) '*'
  276. (SURCEL '/' VOLCEL2))) ;
  277. LRETUY = LRETUY'ET' ('PROG' ((DPDUY'*' DRETDP) '*'
  278. (SURCEL '/' VOLCEL2))) ;
  279. LRUYRET = LRUYRET 'ET' ('PROG' ((DPDRET '*' DROUYDP) '*'
  280. (SURCEL '/' VOLCEL2))) ;
  281. LRETRET = LRETRET 'ET' ('PROG' ((DPDRET '*' DRETDP) '*'
  282. (SURCEL '/' VOLCEL2))) ;
  283. 'FIN' BL1 ;
  284.  
  285. RESLIM = 'MANUEL' 'CHPO' MAIFA1 4 'RN' LR 'RUX' 0.0
  286. 'RUY' LRUN 'RETN' LRET 'NATU' 'DISCRET' ;
  287.  
  288. UPC = ((GAMSCAL '*' PG '/' ROG) '**' 0.5) '+' UNG ;
  289.  
  290. IALPDT = 'PROG' (((RVX . 'ALPHA') '*' (RVX . 'DX')) '/' UPC) ;
  291.  
  292. THETA = RVX . 'THETA' ;
  293.  
  294. 'SI' (RVX . 'IMPL') ;
  295.  
  296. *
  297. **** Jacobian avec MDIA
  298. *
  299. * La matrice met en relation les couples suivantes:
  300. * PRIMALES DUALES
  301. *1 densité (q.d.m.)y
  302. *2 densité energie totale
  303. *
  304. *3 (q.d.m.)x (q.d.m.)y
  305. *4 (q.d.m.)x energie totale
  306. *
  307. *5 (q.d.m.)y (q.d.m.)y
  308. *6 (q.d.m.)y energie totale
  309. *
  310. *7 energie totale (q.d.m.)y
  311. *8 energie totale energie totale
  312. *
  313. *
  314. **** Test of inlet implicit boundary conditions
  315. *
  316. * La matrice met en relation les couples suivantes:
  317. * PRIMALES DUALES
  318. *1 densité (q.d.m.)y
  319. *2 densité energie totale
  320. *
  321. *3 (q.d.m.)x (q.d.m.)y
  322. *4 (q.d.m.)x energie totale
  323. *
  324. *5 (q.d.m.)y (q.d.m.)y
  325. *6 (q.d.m.)y energie totale
  326. *
  327. *7 energie totale (q.d.m.)y
  328. *8 energie totale energie totale
  329. *
  330. *
  331.  
  332. CHRUYR = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRUYR ;
  333. CHRUYR = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRUYR ;
  334. CHRETR = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRETR ;
  335. CHRETR = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRETR ;
  336. CHRUYRUX = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRUYUX ;
  337. CHRUYRUX = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRUYRUX ;
  338. CHRETRUX = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRETUX ;
  339. CHRETRUX = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRETRUX ;
  340. CHRUYRUY = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRUYUY ;
  341. CHRUYRUY = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRUYRUY ;
  342. CHRETRUY = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRETUY ;
  343. CHRETRUY = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRETRUY ;
  344. CHRUYRET = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRUYRET ;
  345. CHRUYRET = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRUYRET ;
  346. CHRETRET = 'MANUEL' 'CHPO' MAIFA1 1 'SCAL' LRETRET ;
  347. CHRETRET = 'KCHT' $DOMA 'SCAL' 'CENTRE' CHRETRET ;
  348.  
  349. RVDIA = 'EQEX' $DOMA 'ITMA' 1 'OPTI' 'VF' 'IMPL' 'CENTREE'
  350. *1
  351. 'ZONE' $DOMA 'OPER' 'MDIA' CHRUYR 'INCO' 'RN' 'RUY'
  352. *2
  353. 'ZONE' $DOMA 'OPER' 'MDIA' CHRETR 'INCO' 'RN' 'RETN'
  354. *3
  355. 'ZONE' $DOMA 'OPER' 'MDIA' CHRUYRUX 'INCO' 'RUX' 'RUY'
  356. *4
  357. 'ZONE' $DOMA 'OPER' 'MDIA' CHRETRUX 'INCO' 'RUX' 'RETN'
  358. *5
  359. 'ZONE' $DOMA 'OPER' 'MDIA' CHRUYRUY 'INCO' 'RUY' 'RUY' ;
  360. *
  361. RVDIA = 'EQEX' RVDIA 'OPTI' 'VF' 'IMPL' 'CENTREE'
  362. *6
  363. 'ZONE' $DOMA 'OPER' 'MDIA' CHRETRUY 'INCO' 'RUY' 'RETN'
  364. *7
  365. 'ZONE' $DOMA 'OPER' 'MDIA' CHRUYRET 'INCO' 'RETN' 'RUY'
  366. *8
  367. 'ZONE' $DOMA 'OPER' 'MDIA' CHRETRET 'INCO' 'RETN' 'RETN'
  368. ;
  369.  
  370. RVDIA . 'INCO' = 'TABLE' 'INCO' ;
  371. RVDIA . 'INCO' . 'RN' = 'KCHT' $DOMA 'SCAL' 'CENTRE' 0.0 ;
  372. RVDIA . 'INCO' . 'RUX' = 'KCHT' $DOMA 'SCAL' 'CENTRE' 0.0 ;
  373. RVDIA . 'INCO' . 'RUY' = 'KCHT' $DOMA 'SCAL' 'CENTRE' 0.0 ;
  374. RVDIA . 'INCO' . 'RETN' = 'KCHT' $DOMA 'SCAL' 'CENTRE' 0.0 ;
  375.  
  376. MDIA (RVDIA . '1MDIA') ;
  377. MAT1 = RVDIA . '1MDIA' . 'MATELM' ;
  378. MDIA (RVDIA . '2MDIA') ;
  379. MAT2 = RVDIA . '2MDIA' . 'MATELM' ;
  380. MDIA (RVDIA . '3MDIA') ;
  381. MAT3 = RVDIA . '3MDIA' . 'MATELM' ;
  382. MDIA (RVDIA . '4MDIA') ;
  383. MAT4 = RVDIA . '4MDIA' . 'MATELM' ;
  384. MDIA (RVDIA . '5MDIA') ;
  385. MAT5 = RVDIA . '5MDIA' . 'MATELM' ;
  386. MDIA (RVDIA . '6MDIA') ;
  387. MAT6 = RVDIA . '6MDIA' . 'MATELM' ;
  388. MDIA (RVDIA . '7MDIA') ;
  389. MAT7 = RVDIA . '7MDIA' . 'MATELM' ;
  390. MDIA (RVDIA . '8MDIA') ;
  391. MAT8 = RVDIA . '8MDIA' . 'MATELM' ;
  392.  
  393. IJACO = MAT1 'ET' MAT2 'ET' MAT3 'ET' MAT4 'ET'
  394. MAT5 'ET' MAT6 'ET' MAT7 'ET' MAT8 ;
  395. 'SINON' ;
  396. CACCA IJACO = 'KOPS' 'MATRIK' ;
  397. 'FINSI' ;
  398.  
  399. 'RESPRO' IJACO RESLIM IALPDT THETA ;
  400. 'FINP' ;
  401.  
  402. *********************************************************************
  403. **** Fin procedure RESL *********************************************
  404. *********************************************************************
  405.  
  406. *********************************************************************
  407. **** Procedure JACOVA ***********************************************
  408. *********************************************************************
  409.  
  410. * Derivé partielle du residu en un point par rapport
  411. * aux variable dans le meme point
  412. *
  413.  
  414. 'DEBPROC' JACOVA JACO*'MATRIK' $DOMA*'TABLE' LISTINCO*'LISTMOTS'
  415. PPRIM*'POINT' MOTPRI*'MOT' MOTDUA*'MOT';
  416.  
  417. * PPRIM = point ou est localisé la variable primale
  418. * PPRIM = point ou est localisé la variable duale
  419. * MOTPRI = nom de la composante concernante la variable primale
  420. * MOTDUA = nom de la composante concernante la variable duale
  421.  
  422. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  423. NDIM = 'DIME' LISTINCO ;
  424. CHPUN = 'MANUEL' 'CHPO' ELT1 1 MOTPRI 1.0 'NATURE' 'DISCRET' ;
  425. 'REPETER' BL1 NDIM ;
  426. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  427. CHPUN = CHPUN 'ET' ('MANUEL' 'CHPO' ($DOMA . 'CENTRE') 1 MOTCEL
  428. 0.0 'NATURE' 'DISCRET') ;
  429. 'FIN' BL1 ;
  430. D_DMOT = 'KOPS' JACO 'MULT' CHPUN ;
  431. SCAL = 'EXTRAIRE' D_DMOT PPRIM MOTDUA ;
  432.  
  433. 'FINPROC' SCAL ;
  434.  
  435. *********************************************************************
  436. **** Fin procedure JACOVA *******************************************
  437. *********************************************************************
  438.  
  439. *********************************************************************
  440. **** Procedure JACNUM ***********************************************
  441. *********************************************************************
  442.  
  443. 'DEBPROC' JACNUM RVX*'TABLE'
  444. LISTINCO*'LISTMOTS' PPRIM*'POINT'
  445. MOTPRI*'MOT' MOTDUA*'MOT' EPSILON*'FLOTTANT';
  446.  
  447. * PPRIM = point ou est localisé la variable primale
  448. * PPRIM = point ou est localisé la variable duale
  449. * MOTPRI = nom de la composante concernante la variable primale
  450. * MOTDUA = nom de la composante concernante la variable duale
  451.  
  452. * Le valeur dans l'état non-perturbé en PPRIM ;
  453.  
  454. RV = RVX . 'EQEX' ;
  455. UN0 = 'COPIER' (RV . 'UN') ;
  456. THETA0 = RVX . 'THETA' ;
  457. RVX . 'THETA' = 0.0 ;
  458. IMPL0 = RVX . 'IMPL' ;
  459. RVX . 'IMPL' = FAUX ;
  460.  
  461. IJACEL CHPRES0 DT ALPDT = RESL RVX ;
  462. VAL0 = 'EXTRAIRE' CHPRES0 PPRIM MOTDUA ;
  463.  
  464. * EPSILON = perturbation
  465.  
  466. * On etabli la variable à perturber
  467.  
  468. NDIM = 'DIME' LISTINCO ;
  469. 'REPETER' BL1 NDIM ;
  470. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  471. 'SI' ('EGA' MOTCEL MOTPRI) ;
  472. ICEL = &BL1 ;
  473. 'QUITTER' BL1 ;
  474. 'FINSI' ;
  475. 'FIN' BL1 ;
  476.  
  477. 'SI' (ICEL > NDIM) ;
  478. 'MESSAGE' 'Procedure JACNUM' ;
  479. 'MESSAGE' 'MOTPRI = ??? ';
  480. 'ERREUR' 21 ;
  481. 'FINSI' ;
  482.  
  483. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  484.  
  485. $DOMA = RVX . 'DOMA' ;
  486.  
  487. CHPERT = ('MANUEL' 'CHPO' ($DOMA . 'CENTRE') 4
  488. 'RN' 1.0 'RUX' 1.0 'RUY' 1.0 'RETN' 1.0
  489. 'NATU' 'DISCRET') '+'
  490. ('MANUEL' 'CHPO' ($DOMA . 'CENTRE') 1
  491. MOTPRI EPSILON) ;
  492.  
  493. RV . 'UN' = UN0 '*' CHPERT LISTINCO LISTINCO
  494. LISTINCO ;
  495. DELTATOT = ('EXTRAIRE' (RV . 'UN') PPRIM MOTPRI) '-'
  496. ('EXTRAIRE' UN0 PPRIM MOTPRI) ;
  497.  
  498. IJACEL CHPRES0 DT ALPDT = RESL RVX ;
  499. VAL1 = 'EXTRAIRE' CHPRES0 PPRIM MOTDUA ;
  500.  
  501. RV . 'UN' = UN0 ;
  502. RVX . 'THETA' = THETA0 ;
  503. RVX . 'IMPL' = IMPL0 ;
  504.  
  505. 'FINPROC' ((VAL1 '-' VAL0) '/' DELTATOT) ;
  506.  
  507. *********************************************************************
  508. ***** Fin procedure JACNUM ******************************************
  509. *********************************************************************
  510.  
  511. RV = 'TABLE' ;
  512. RV . 'UN' = UN ;
  513.  
  514. *
  515. **** Table pour RESL
  516. *
  517.  
  518. RV . '3RESL' = 'TABLE' ;
  519.  
  520. RV . '3RESL' . 'EQEX' = RV ;
  521. RV . '3RESL' . 'THETA' = 1.0 ;
  522. RV . '3RESL' . 'IMPL' = VRAI ;
  523.  
  524. RV . '3RESL' . 'DOMA' = $MAILEN ;
  525. RV . '3RESL' . 'VOLUME' = CHVOLU ;
  526. RV . '3RESL' . 'SURFACE' = CHSURF ;
  527. RV . '3RESL' . 'MAILLAGE' = MAIFA1 ;
  528.  
  529. RV . '3RESL' . 'GAMLIM' = 1.4 ;
  530. RV . '3RESL' . 'ROVINF' = 1.0 ;
  531. RV . '3RESL' . 'RTINF' = (288. '*' 600.) ;
  532. RV . '3RESL' . 'DX' = 'MINIMUM' (2 '*' ('DOMA' $DOMINT 'DIAMIN')) ;
  533. RV . '3RESL' . 'ALPHA' = 1.0 ;
  534.  
  535. ********************
  536. **** Test case *****
  537. ********************
  538.  
  539. IJAC IRES IALP THE = RESL (RV . '3RESL') ;
  540.  
  541. POI1 = ($MAILEN . 'CENTRE') 'POIN' 1 ;
  542.  
  543. LISTINC1 = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' ;
  544. LISTINC2 = 'MOTS' 'RN' 'RUX' 'RUY' 'RETN' ;
  545.  
  546. DELTA = 1.0D-4 ;
  547.  
  548. 'REPETER' BL1 4 ;
  549. 'REPETER' BL2 4 ;
  550. MOT1 = 'EXTRAIRE' LISTINC1 &BL1 ;
  551. MOT2 = 'EXTRAIRE' LISTINC1 &BL2 ;
  552. CACCA1 = JACOVA IJAC $DOMINT LISTINC1 POI1
  553. MOT1 MOT2 ;
  554. CACCA2 = JACNUM (RV . '3RESL') LISTINC2 POI1
  555. MOT1 MOT2 DELTA ;
  556. 'MESSAGE' ('CHAINE' 'Analyt.= ' CACCA1 ' Num.= ' CACCA2
  557. ' Err = ' ('ABS' (CACCA1 '-' CACCA2))) ;
  558. 'SI' (('ABS' CACCA1) > 1.0D-4) ;
  559. ERRO = 'ABS' ((CACCA1 '-' CACCA2) '/' CACCA1) ;
  560. 'SINON' ;
  561. ERRO = 'ABS' (CACCA1 '-' CACCA2) ;
  562. 'FINSI' ;
  563. 'SI' (ERRO > 5.0D-4) ;
  564. 'ERREUR' 5 ;
  565. 'FINSI' ;
  566. 'FIN' BL2 ;
  567. 'FIN' BL1 ;
  568.  
  569. 'FIN' ;
  570.  
  571.  
  572.  
  573.  
  574.  

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