Télécharger konv_scal_impl3d.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : konv_scal_impl3d.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. ***********************************************************
  6. **** APPROCHE VF "Cell-Centred Formulation" pour le ****
  7. **** transport des scalaires ****
  8. **** OPERATEURS PRET, KONV ****
  9. **** Implicit: calcul du jacobien du residu ****
  10. **** ****
  11. **** Methodes: UPWIND, CENTERED ****
  12. **** ****
  13. **** A. BECCANTINI SFME/LMTF DECEMBRE 2001 ****
  14. ***********************************************************
  15. ***********************************************************
  16.  
  17. 'OPTION' 'DIME' 3 'ELEM' CUB8 'ECHO' 0 'TRAC' 'X' ;
  18.  
  19.  
  20. *****************************************************
  21. *****************************************************
  22. ******** PROCEDURES *********************************
  23. *****************************************************
  24. *****************************************************
  25.  
  26. *
  27. * Derivé partielle du residu en un point par rapport
  28. * aux variable en un autre point
  29. *
  30.  
  31. 'DEBPROC' JACOVA JACO*'MATRIK' $MODE*'MMODEL' LISTINCO*'LISTMOTS'
  32. PPRIM*'POINT' PDUAL*'POINT' MOTPRI*'MOT' MOTDUA*'MOT';
  33.  
  34. * PPRIM = point ou est localisé la variable primale
  35. * PDUAL = point ou est localisé la variable duale
  36. * MOTPRI = nom de la composante concernante la variable primale
  37. * MOTDUA = nom de la composante concernante la variable duale
  38.  
  39. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  40. NDIM = 'DIME' LISTINCO ;
  41. CHPUN = 'MANUEL' 'CHPO' ELT1 1 MOTPRI 1.0 'NATURE' 'DISCRET' ;
  42. 'REPETER' BL1 NDIM ;
  43. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  44. CHPUN = CHPUN 'ET' ('MANUEL' 'CHPO' ('DOMA' $MODE 'CENTRE')
  45. 1 MOTCEL 0.0 'NATURE' 'DISCRET') ;
  46. 'FIN' BL1 ;
  47. D_DMOT = 'KOPS' JACO 'MULT' CHPUN ;
  48. SCAL = 'EXTRAIRE' D_DMOT PDUAL MOTDUA ;
  49.  
  50. 'FINPROC' SCAL ;
  51.  
  52.  
  53. 'DEBPROC' JACNUM $MODE*'MMODEL' NOMMET*'MOT' SN*'CHPOINT' UN*'CHPOINT'
  54. PPRIM*'POINT' PDUAL*'POINT'
  55. MOTPRI*'MOT' MOTDUA*'MOT' EPSILON*'FLOTTANT';
  56.  
  57. * PPRIM = point ou est localisé la variable primale
  58. * PDUAL = point ou est localisé la variable duale
  59. * MOTPRI = nom de la composante concernante la variable primale
  60. * MOTDUA = nom de la composante concernante la variable duale
  61.  
  62. * Le valeur dans l'état non-perturbé en PDUAL ;
  63.  
  64. SNCEL = 'COPIER' SN ;
  65.  
  66. SF = 'PRET' 'CLAUDEIS' 'FACE' 1 $MODE SN ;
  67.  
  68. CHPRES0 DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' NOMMET
  69. $MODE SF UN ;
  70.  
  71. VAL0 = 'EXTRAIRE' CHPRES0 PDUAL MOTDUA ;
  72.  
  73. * On etabli la variable à perturber
  74.  
  75. LISTINCO = 'EXTRAIRE' SN 'COMP' ;
  76.  
  77. NDIM = 'DIME' LISTINCO ;
  78. 'REPETER' BL1 NDIM ;
  79. MOTCEL = 'EXTRAIRE' LISTINCO &BL1 ;
  80. 'SI' ('EGA' MOTCEL MOTPRI) ;
  81. ICEL = &BL1 ;
  82. 'QUITTER' BL1 ;
  83. 'FINSI' ;
  84. 'FIN' BL1 ;
  85.  
  86. 'SI' (ICEL > NDIM) ;
  87. 'MESSAGE' 'Procedure JACNUM' ;
  88. 'MESSAGE' 'MOTPRI = ??? ';
  89. 'ERREUR' 21 ;
  90. 'FINSI' ;
  91.  
  92. ELT1 = 'MANUEL' 'POI1' PPRIM ;
  93.  
  94. SNCEL = ('MANUEL' 'CHPO' ELT1 1 MOTCEL EPSILON)
  95. '+' SN ;
  96.  
  97. SF = 'PRET' 'CLAUDEIS' 'FACE' 1 $MODE SNCEL ;
  98.  
  99. CHPRES1 DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' NOMMET
  100. $MODE SF UN ;
  101.  
  102. VAL1 = 'EXTRAIRE' CHPRES1 PDUAL MOTDUA ;
  103.  
  104. 'FINPROC' ((VAL1 '-' VAL0) '/' EPSILON) ;
  105.  
  106. *****************************************************
  107. *****************************************************
  108. ******** FIN PROCEDURES *****************************
  109. *****************************************************
  110. *****************************************************
  111. *****************************************************
  112.  
  113. *
  114. *** GRAPH
  115. *
  116.  
  117. GRAPH = FAUX ;
  118. * GRAPH = VRAI ;
  119.  
  120. ERRTOL = 1.0D-6 ;
  121.  
  122. ***************************
  123. ***** DOMAINE SPATIAL ****
  124. ***************************
  125.  
  126. ***************************
  127. ***** DOMAINE SPATIAL ****
  128. ***************************
  129.  
  130.  
  131. A0 = 0.0D0 0.0D0 0.0D0;
  132. A1 = 1.0D0 0.0D0 0.0D0;
  133. A2 = 1.0D0 1.0D0 0.0D0;
  134. A3 = 0.0D0 1.0D0 0.0D0;
  135.  
  136. SUR1 = 'MANUEL' 'QUA4' A0 A1 A2 A3 ;
  137. DOM1 = SUR1 'VOLUME' 'TRAN' 1 (0.0 0.0 1.0) ;
  138.  
  139. DOM2 = DOM1 'PLUS' (1.0 0.0 0.0) ;
  140. DOM3 = DOM1 'PLUS' (-1.0 0.0 0.0) ;
  141. DOM4 = DOM1 'PLUS' (0.0 1.0 0.0) ;
  142. DOM5 = DOM1 'PLUS' (0.0 -1.0 0.0) ;
  143. DOM6 = DOM1 'PLUS' (1.0 1.0 0.0) ;
  144. DOM7 = DOM1 'PLUS' (-1.0 -1.0 0.0) ;
  145. DOM8 = DOM1 'PLUS' (1.0 -1.0 0.0) ;
  146. DOM9 = DOM1 'PLUS' (-1.0 1.0 0.0) ;
  147.  
  148. DOM10 = DOM1 'PLUS' (0.0 0.0 1.0) ;
  149. DOM11 = DOM1 'PLUS' (1.0 0.0 1.0) ;
  150. DOM12 = DOM1 'PLUS' (-1.0 0.0 1.0) ;
  151. DOM13 = DOM1 'PLUS' (0.0 1.0 1.0) ;
  152. DOM14 = DOM1 'PLUS' (0.0 -1.0 1.0) ;
  153. DOM15 = DOM1 'PLUS' (1.0 1.0 1.0) ;
  154. DOM16 = DOM1 'PLUS' (-1.0 -1.0 1.0) ;
  155. DOM17 = DOM1 'PLUS' (1.0 -1.0 1.0) ;
  156. DOM18 = DOM1 'PLUS' (-1.0 1.0 1.0) ;
  157.  
  158. DOM19 = DOM1 'PLUS' (0.0 0.0 -1.0) ;
  159. DOM20 = DOM1 'PLUS' (1.0 0.0 -1.0) ;
  160. DOM21 = DOM1 'PLUS' (-1.0 0.0 -1.0) ;
  161. DOM22 = DOM1 'PLUS' (0.0 1.0 -1.0) ;
  162. DOM23 = DOM1 'PLUS' (0.0 -1.0 -1.0) ;
  163. DOM24 = DOM1 'PLUS' (1.0 1.0 -1.0) ;
  164. DOM25 = DOM1 'PLUS' (-1.0 -1.0 -1.0) ;
  165. DOM26 = DOM1 'PLUS' (1.0 -1.0 -1.0) ;
  166. DOM27 = DOM1 'PLUS' (-1.0 1.0 -1.0) ;
  167.  
  168. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5
  169. 'ET' DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ET' DOM10
  170. 'ET' DOM11 'ET' DOM12 'ET' DOM13 'ET' DOM14 'ET' DOM15
  171. 'ET' DOM16 'ET' DOM17 'ET' DOM18 'ET' DOM19 'ET' DOM20
  172. 'ET' DOM21 'ET' DOM22 'ET' DOM23 'ET' DOM24 'ET' DOM25
  173. 'ET' DOM26 'ET' DOM27 ;
  174.  
  175. 'ELIMINATION' DOMTOT 0.0001 ;
  176.  
  177. *
  178. **** Perturbation du domaine
  179. *
  180.  
  181. CHPBRU = ('NOMC' 'UX' ('BRUI' 'BLAN' 'UNIF' 0.0 0.4 DOMTOT)
  182. 'NATU' 'DISCRET') 'ET'
  183. ('NOMC' 'UY' ('BRUI' 'BLAN' 'UNIF' 0.0 0.2 DOMTOT)
  184. 'NATU' 'DISCRET') 'ET'
  185. ('NOMC' 'UZ' ('BRUI' 'BLAN' 'UNIF' 0.0 0.3 DOMTOT)
  186. 'NATU' 'DISCRET');
  187.  
  188. 'FORME' CHPBRU ;
  189.  
  190. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  191. $DOM6 = 'MODELISER' DOM6 'EULER';
  192. $DOM9 = 'MODELISER' DOM9 'EULER';
  193. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  194. TDOM6 = 'DOMA' $DOM6 'VF';
  195. TDOM9 = 'DOMA' $DOM9 'VF';
  196. MDOM6 = TDOM6 . 'QUAF' ;
  197. MDOM9 = TDOM9 . 'QUAF' ;
  198. MDOMTOT = TDOMTOT . 'QUAF' ;
  199.  
  200. 'ELIM' (MDOMTOT 'ET' MDOM6 'ET' MDOM9) 1.E-6 ;
  201.  
  202. 'SI' GRAPH;
  203. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET'
  204. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre' ;
  205. 'FINSI' ;
  206.  
  207. *
  208. ***** Densité, pression, gamma ***********
  209. *
  210.  
  211. RN = ('BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE'))
  212. 'NOMC' 'RN' 'NATU' 'DISCRET' ;
  213. PN = ('BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE'))
  214. 'NOMC' 'PN' 'NATU' 'DISCRET' ;
  215. GAMMAN = ('BRUI' 'BLAN' 'UNIF' 14.1 800 ('DOMA' $DOMTOT 'CENTRE'))
  216. 'NOMC' 'GAMN' 'NATU' 'DISCRET' ;
  217.  
  218. SN = RN 'ET' PN 'ET' GAMMAN ;
  219.  
  220. *
  221. **** Vitesse aux faces
  222. *
  223.  
  224. UN = (('BRUI' 'BLAN' 'UNIF' 0.0 1.000 ('DOMA' $DOMTOT 'FACE'))
  225. 'NOMC' 'UX' 'NATU' 'DISCRET') 'ET'
  226. (('BRUI' 'BLAN' 'UNIF' 0.0 1.0000 ('DOMA' $DOMTOT 'FACE'))
  227. 'NOMC' 'UY' 'NATU' 'DISCRET') 'ET'
  228. (('BRUI' 'BLAN' 'UNIF' 0.0 1.0000 ('DOMA' $DOMTOT 'FACE'))
  229. 'NOMC' 'UZ' 'NATU' 'DISCRET') ;
  230.  
  231. ****************************************************
  232. ****************************************************
  233. ******* Calcul du jacobien et du residu **********
  234. ****************************************************
  235. ****************************************************
  236. *
  237. * JACO est le jacobien
  238. *
  239. *
  240.  
  241.  
  242. 'REPETER' BLMETO 2 ;
  243.  
  244. 'SI' (&BLMETO 'EGA' 1) ;
  245. METO = 'UPWIND' ;
  246. 'FINSI' ;
  247.  
  248. 'SI' (&BLMETO 'EGA' 2) ;
  249. METO = 'CENTERED' ;
  250. 'FINSI' ;
  251.  
  252. 'MESSAGE' ;
  253. 'MESSAGE' ('CHAINE' 'METHODE = ' METO) ;
  254. 'MESSAGE' ;
  255.  
  256. SF = 'PRET' 'CLAUDEIS' 'FACE' 1 $DOMTOT SN ;
  257.  
  258. DELTAS DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' METO
  259. $DOMTOT SF UN ;
  260.  
  261. JACO = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'JACO' METO
  262. $DOMTOT SF UN ;
  263.  
  264.  
  265. *****************************************************
  266. ******* TEST1 ***************************************
  267. *****************************************************
  268. *
  269. * On compare le jacobien et la variation du residu
  270. * en $DOM9 'CENTRE' par rapport à une variation
  271. * infinitésimal en $DOM9 'CENTRE'
  272. *
  273.  
  274. PCEN9 = 'POIN' 1 ('DOMA' $DOM9 'CENTRE') ;
  275.  
  276. *
  277. * Le jacobien exact.
  278. * DSiSj = d(RES_Si)/dSj (variable primale en PCEN9, variable duale en PCEN9) ;
  279. * ...
  280.  
  281. LISTINCO = 'MOTS' 'RN' 'PN' 'GAMN' ;
  282.  
  283. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'RN' 'RN' ;
  284. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'RN' ;
  285. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'PN' 'PN' ;
  286. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'GAMN' ;
  287.  
  288. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  289. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  290. 'ERREUR' 5 ;
  291. 'FINSI' ;
  292.  
  293. * Le jacobien numerique
  294.  
  295.  
  296. DELTA = 1.0D-3 ;
  297.  
  298. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  299. 'RN' 'RN' DELTA ;
  300. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  301. 'PN' 'PN' DELTA ;
  302. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  303. 'GAMN' 'GAMN' DELTA ;
  304.  
  305. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  306. (DS3S3 '-' DS3S3N)) 'ABS' ;
  307.  
  308. 'SI' (ERRO > ERRTOL) ;
  309. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  310. 'ERREUR' 5 ;
  311. 'FINSI' ;
  312.  
  313. *****************************************************
  314. *****************************************************
  315. ******* TEST2 ***************************************
  316. *****************************************************
  317. *****************************************************
  318. *
  319. * On compare le jacobien et la variation du residu
  320. * en $DOM9 'CENTRE' par rapport à une variation
  321. * infinitésimal en $DOM6 'CENTRE'
  322. *
  323.  
  324. PCEN6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
  325.  
  326. *
  327. * Le jacobien exact.
  328. *
  329.  
  330. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'RN' 'RN' ;
  331. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'RN' ;
  332. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'PN' 'PN' ;
  333. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'GAMN' ;
  334.  
  335. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  336. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  337. 'ERREUR' 5 ;
  338. 'FINSI' ;
  339.  
  340. * Le jacobien numerique
  341.  
  342.  
  343. DELTA = 1.0D-3 ;
  344.  
  345. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  346. 'RN' 'RN' DELTA ;
  347. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  348. 'PN' 'PN' DELTA ;
  349. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  350. 'GAMN' 'GAMN' DELTA ;
  351.  
  352. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  353. (DS3S3 '-' DS3S3N)) 'ABS' ;
  354.  
  355. 'SI' (ERRO > ERRTOL) ;
  356. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  357. 'ERREUR' 5 ;
  358. 'FINSI' ;
  359.  
  360.  
  361. *****************************************************
  362. *****************************************************
  363. ******* TEST2 ***************************************
  364. *****************************************************
  365. *****************************************************
  366. *
  367. * On compare le jacobien et la variation du residu
  368. * en $DOM6 'CENTRE' par rapport à une variation
  369. * infinitésimal en $DOM9 'CENTRE'
  370. *
  371.  
  372. *
  373. * Le jacobien exact.
  374. *
  375.  
  376. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'RN' 'RN' ;
  377. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'RN' ;
  378. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'PN' 'PN' ;
  379. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'GAMN' ;
  380.  
  381. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  382. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  383. 'ERREUR' 5 ;
  384. 'FINSI' ;
  385.  
  386. * Le jacobien numerique
  387.  
  388.  
  389. DELTA = 1.0D-3 ;
  390.  
  391. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  392. 'RN' 'RN' DELTA ;
  393. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  394. 'PN' 'PN' DELTA ;
  395. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  396. 'GAMN' 'GAMN' DELTA ;
  397.  
  398. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  399. (DS3S3 '-' DS3S3N)) 'ABS' ;
  400.  
  401. 'SI' (ERRO > ERRTOL) ;
  402. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  403. 'ERREUR' 5 ;
  404. 'FINSI' ;
  405.  
  406. 'FIN' BLMETO ;
  407.  
  408. 'FIN' ;
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  

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