Télécharger konv_scal_impl.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : konv_scal_impl.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' 2 'ELEM' QUA4 '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. A0 = 0.0D0 0.0D0;
  128. A1 = 1.0D0 0.0D0;
  129. A2 = 2.0D0 0.0D0;
  130. A3 = 3.0D0 0.0D0;
  131.  
  132. A0A1 = A0 'DROIT' 1 A1;
  133. A1A2 = A1 'DROIT' 1 A2;
  134. A2A3 = A2 'DROIT' 1 A3;
  135.  
  136.  
  137. DOM1 = 'TRANSLATION' A0A1 1 (0.0 1.0) ;
  138. DOM2 = DOM1 'PLUS' (0.0 1.0) ;
  139. DOM3 = DOM2 'PLUS' (0.0 1.0) ;
  140. DOM4 = 'TRANSLATION' A1A2 1 (0.0 1.0) ;
  141. DOM5 = DOM4 'PLUS' (0.0 1.0) ;
  142. DOM6 = DOM5 'PLUS' (0.0 1.0) ;
  143. DOM7 = 'TRANSLATION' A2A3 1 (0.0 1.0) ;
  144. DOM8 = DOM7 'PLUS' (0.0 1.0) ;
  145. DOM9 = DOM8 'PLUS' (0.0 1.0) ;
  146.  
  147.  
  148. DOMTOT = DOM1 'ET' DOM2 'ET' DOM3 'ET' DOM4 'ET' DOM5 'ET'
  149. DOM6 'ET' DOM7 'ET' DOM8 'ET' DOM9 'ELIMINATION' 0.0001 ;
  150.  
  151. CHFO = (('BRUI' 'BLAN' 'UNIF' 0.0 0.2500 (DOMTOT))
  152. 'NOMC' 'UX' 'NATU' 'DISCRET') 'ET'
  153. (('BRUI' 'BLAN' 'UNIF' 0.0 0.3000 (DOMTOT))
  154. 'NOMC' 'UY' 'NATU' 'DISCRET') ;
  155.  
  156. 'FORME' CHFO ;
  157.  
  158. $DOMTOT = 'MODELISER' DOMTOT 'EULER';
  159. $DOM6 = 'MODELISER' DOM6 'EULER';
  160. $DOM9 = 'MODELISER' DOM9 'EULER';
  161. TDOMTOT = 'DOMA' $DOMTOT 'VF';
  162. TDOM6 = 'DOMA' $DOM6 'VF';
  163. TDOM9 = 'DOMA' $DOM9 'VF';
  164. MDOM6 = TDOM6 . 'QUAF' ;
  165. MDOM9 = TDOM9 . 'QUAF' ;
  166. MDOMTOT = TDOMTOT . 'QUAF' ;
  167.  
  168. 'ELIM' (MDOMTOT 'ET' MDOM6 'ET' MDOM9) 1.E-6 ;
  169.  
  170. 'SI' GRAPH;
  171. 'TRACER' (('DOMA' $DOMTOT 'MAILLAGE') 'ET'
  172. ('DOMA' $DOMTOT 'CENTRE')) 'TITRE' 'Domaine et centre';
  173. 'FINSI' ;
  174. *
  175. ***** Densité, pression, gamma ***********
  176. *
  177.  
  178. RN = ('BRUI' 'BLAN' 'UNIF' 1.11 0.5 ('DOMA' $DOMTOT 'CENTRE'))
  179. 'NOMC' 'RN' 'NATU' 'DISCRET' ;
  180. PN = ('BRUI' 'BLAN' 'UNIF' 1234.1 800 ('DOMA' $DOMTOT 'CENTRE'))
  181. 'NOMC' 'PN' 'NATU' 'DISCRET' ;
  182. GAMMAN = ('BRUI' 'BLAN' 'UNIF' 14.1 800 ('DOMA' $DOMTOT 'CENTRE'))
  183. 'NOMC' 'GAMN' 'NATU' 'DISCRET' ;
  184.  
  185. SN = RN 'ET' PN 'ET' GAMMAN ;
  186.  
  187. *
  188. **** Vitesse aux faces
  189. *
  190.  
  191. UN = (('BRUI' 'BLAN' 'UNIF' 0.0 1.000 ('DOMA' $DOMTOT 'FACE'))
  192. 'NOMC' 'UX' 'NATU' 'DISCRET') 'ET'
  193. (('BRUI' 'BLAN' 'UNIF' 0.0 1.0000 ('DOMA' $DOMTOT 'FACE'))
  194. 'NOMC' 'UY' 'NATU' 'DISCRET') ;
  195.  
  196. ****************************************************
  197. ****************************************************
  198. ******* Calcul du jacobien et du residu **********
  199. ****************************************************
  200. ****************************************************
  201. *
  202. * JACO est le jacobien
  203. *
  204. *
  205.  
  206.  
  207. 'REPETER' BLMETO 2 ;
  208.  
  209. 'SI' (&BLMETO 'EGA' 1) ;
  210. METO = 'UPWIND' ;
  211. 'FINSI' ;
  212.  
  213. 'SI' (&BLMETO 'EGA' 2) ;
  214. METO = 'CENTERED' ;
  215. 'FINSI' ;
  216.  
  217. 'MESSAGE' ;
  218. 'MESSAGE' ('CHAINE' 'METHODE = ' METO) ;
  219. 'MESSAGE' ;
  220.  
  221. SF = 'PRET' 'CLAUDEIS' 'FACE' 1 $DOMTOT SN ;
  222.  
  223. DELTAS DT = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'RESI' METO
  224. $DOMTOT SF UN ;
  225.  
  226. JACO = 'KONV' 'VF' 'CLAUDEIS' 'FACE' 'JACO' METO
  227. $DOMTOT SF UN ;
  228.  
  229.  
  230. *****************************************************
  231. ******* TEST1 ***************************************
  232. *****************************************************
  233. *
  234. * On compare le jacobien et la variation du residu
  235. * en $DOM9 'CENTRE' par rapport à une variation
  236. * infinitésimal en $DOM9 'CENTRE'
  237. *
  238.  
  239. PCEN9 = 'POIN' 1 ('DOMA' $DOM9 'CENTRE') ;
  240.  
  241. * Les grandeurs pour adimesionner les erreurs
  242.  
  243.  
  244. *
  245. * Le jacobien exact.
  246. * DSiSj = d(RES_Si)/dSj (variable primale en PCEN9, variable duale en PCEN9) ;
  247. * ...
  248.  
  249. LISTINCO = 'MOTS' 'RN' 'PN' 'GAMN' ;
  250.  
  251. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'RN' 'RN' ;
  252. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'RN' ;
  253. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'PN' 'PN' ;
  254. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN9 'GAMN' 'GAMN' ;
  255.  
  256. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  257. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  258. 'ERREUR' 5 ;
  259. 'FINSI' ;
  260.  
  261. * Le jacobien numerique
  262.  
  263.  
  264. DELTA = 1.0D-3 ;
  265.  
  266. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  267. 'RN' 'RN' DELTA ;
  268. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  269. 'PN' 'PN' DELTA ;
  270. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN9
  271. 'GAMN' 'GAMN' DELTA ;
  272.  
  273. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  274. (DS3S3 '-' DS3S3N)) 'ABS' ;
  275.  
  276. 'SI' (ERRO > ERRTOL) ;
  277. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  278. 'ERREUR' 5 ;
  279. 'FINSI' ;
  280.  
  281. *****************************************************
  282. *****************************************************
  283. ******* TEST2 ***************************************
  284. *****************************************************
  285. *****************************************************
  286. *
  287. * On compare le jacobien et la variation du residu
  288. * en $DOM9 'CENTRE' par rapport à une variation
  289. * infinitésimal en $DOM6 'CENTRE'
  290. *
  291.  
  292. PCEN6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
  293.  
  294. *
  295. * Le jacobien exact.
  296. *
  297.  
  298. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'RN' 'RN' ;
  299. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'RN' ;
  300. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'PN' 'PN' ;
  301. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN6 PCEN9 'GAMN' 'GAMN' ;
  302.  
  303. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  304. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  305. 'ERREUR' 5 ;
  306. 'FINSI' ;
  307.  
  308. * Le jacobien numerique
  309.  
  310.  
  311. DELTA = 1.0D-3 ;
  312.  
  313. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  314. 'RN' 'RN' DELTA ;
  315. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  316. 'PN' 'PN' DELTA ;
  317. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN6 PCEN9
  318. 'GAMN' 'GAMN' DELTA ;
  319.  
  320. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  321. (DS3S3 '-' DS3S3N)) 'ABS' ;
  322.  
  323. 'SI' (ERRO > ERRTOL) ;
  324. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  325. 'ERREUR' 5 ;
  326. 'FINSI' ;
  327.  
  328.  
  329. *****************************************************
  330. *****************************************************
  331. ******* TEST2 ***************************************
  332. *****************************************************
  333. *****************************************************
  334. *
  335. * On compare le jacobien et la variation du residu
  336. * en $DOM6 'CENTRE' par rapport à une variation
  337. * infinitésimal en $DOM9 'CENTRE'
  338. *
  339.  
  340. *
  341. * Le jacobien exact.
  342. *
  343.  
  344. DS1S1 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'RN' 'RN' ;
  345. DS1S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'RN' ;
  346. DS2S2 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'PN' 'PN' ;
  347. DS3S3 = JACOVA JACO $DOMTOT LISTINCO PCEN9 PCEN6 'GAMN' 'GAMN' ;
  348.  
  349. 'SI' (('ABS' DS1S3) > ERRTOL) ;
  350. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  351. 'ERREUR' 5 ;
  352. 'FINSI' ;
  353.  
  354. * Le jacobien numerique
  355.  
  356.  
  357. DELTA = 1.0D-3 ;
  358.  
  359. DS1S1N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  360. 'RN' 'RN' DELTA ;
  361. DS2S2N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  362. 'PN' 'PN' DELTA ;
  363. DS3S3N = JACNUM $DOMTOT METO SN UN PCEN9 PCEN6
  364. 'GAMN' 'GAMN' DELTA ;
  365.  
  366. ERRO = 'MAXIMUM' ('PROG' (DS1S1 '-' DS1S1N) (DS2S2 '-' DS2S2N)
  367. (DS3S3 '-' DS3S3N)) 'ABS' ;
  368.  
  369. 'SI' (ERRO > ERRTOL) ;
  370. 'MESSAGE' 'JACO CLAUDEIS = ???' ;
  371. 'ERREUR' 5 ;
  372. 'FINSI' ;
  373.  
  374. 'FIN' BLMETO ;
  375.  
  376. 'FIN' ;
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  

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