Télécharger grad_01.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : grad_01.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ************************************************************************
  6. * Cas-test de l'operateur GRADient pour les elements finis *
  7. * 'BARR' *
  8. * 'TUY2' *
  9. * 'TUY3' *
  10. * *
  11. * Avec les formulations : *
  12. * 'DIFFUSION' *
  13. * 'THERMIQUE' *
  14. * *
  15. * *
  16. * Verification & Validation (non analytique) *
  17. * - Calcul d'un profil a partir d'une equation de diffusion *
  18. * - Calcul des gradients des solutions de chaque modele *
  19. * - Comparaison des gradients 'projetes' entre les differents modeles*
  20. * *
  21. *----------------------------------------------------------------------*
  22.  
  23. * Options generales
  24. 'OPTI' 'DIME' 2 'ELEM' 'QUA4';
  25. 'OPTI' 'TRAC' 'PSC' ;
  26. 'OPTI' 'DENS' 0.005 ;
  27.  
  28. * Initialisations
  29.  
  30. TAB_Mod = 'TABL' 'ESCLAVE';
  31. TAB_Mat = 'TABL' 'ESCLAVE';
  32. TAB_Cha = 'TABL' 'ESCLAVE';
  33.  
  34.  
  35. * Parametrage du maillage
  36. H0 = 0. ;
  37. H1 = 6. ;
  38. H2 = 7. ;
  39. H3 = 8. ;
  40.  
  41. R0 = 1. ;
  42. R3 = 1.2;
  43.  
  44. * Description du rayon en fonction de l'altitude
  45. LZ ='PROG' H0 H3 ;
  46. LR ='PROG' R0 R3 ;
  47. LS = PI * (LR ** 2) ;
  48.  
  49. EV_S_Z ='EVOL' 'BRIQ' 'MANU' 'Z' LZ 'SECT' LS ;
  50. 'DESS' EV_S_Z ;
  51.  
  52. * MAILLAGE
  53. P0 = 0. H0 ;
  54. P1 = 0. H1 ;
  55. P2 = 0. H2 ;
  56. P3 = 0. H3 ;
  57.  
  58.  
  59. MAIL1=(DROI P0 P1) ET (DROI P1 P2) ET (DROI P2 P3) ;
  60. MAIL2= MAIL1 'PLUS' (1. 0.) ;
  61. MAIL3='CHAN' (MAIL1 'PLUS' (2. 0.)) 'QUAD' ;
  62. MAIL4= MAIL1 'PLUS' (3. 0.) ;
  63. MAIL5= MAIL1 'PLUS' (4. 0.) ;
  64. MAIL6='CHAN' (MAIL1 'PLUS' (5. 0.)) 'QUAD' ;
  65.  
  66. 'TRAC' 'QUAL' (MAIL1 'ET' MAIL2 'ET' MAIL3 'ET' MAIL4 'ET' MAIL5 'ET' MAIL6);
  67.  
  68. * Points et MAILLAGES particulers a NOMMER
  69. P01 ='POIN' MAIL1 'PROC' (P0 'PLUS' (1. 0.));
  70. P02 ='POIN' MAIL2 'PROC' (P0 'PLUS' (2. 0.));
  71. P03 ='POIN' MAIL3 'PROC' (P0 'PLUS' (3. 0.));
  72. P04 ='POIN' MAIL4 'PROC' (P0 'PLUS' (4. 0.));
  73. P05 ='POIN' MAIL5 'PROC' (P0 'PLUS' (5. 0.));
  74. P06 ='POIN' MAIL6 'PROC' (P0 'PLUS' (6. 0.));
  75.  
  76. P21 ='POIN' MAIL1 'PROC' (P2 'PLUS' (1. 0.));
  77. P22 ='POIN' MAIL2 'PROC' (P2 'PLUS' (2. 0.));
  78. P23 ='POIN' MAIL3 'PROC' (P2 'PLUS' (3. 0.));
  79. P24 ='POIN' MAIL4 'PROC' (P2 'PLUS' (4. 0.));
  80. P25 ='POIN' MAIL5 'PROC' (P2 'PLUS' (5. 0.));
  81. P26 ='POIN' MAIL6 'PROC' (P2 'PLUS' (6. 0.));
  82.  
  83. P31 ='POIN' MAIL1 'PROC' (P3 'PLUS' (1. 0.));
  84. P32 ='POIN' MAIL2 'PROC' (P3 'PLUS' (2. 0.));
  85. P33 ='POIN' MAIL3 'PROC' (P3 'PLUS' (3. 0.));
  86. P34 ='POIN' MAIL4 'PROC' (P3 'PLUS' (4. 0.));
  87. P35 ='POIN' MAIL5 'PROC' (P3 'PLUS' (5. 0.));
  88. P36 ='POIN' MAIL6 'PROC' (P3 'PLUS' (6. 0.));
  89.  
  90. MAILDIF = MAIL1 'ET' MAIL2 'ET' MAIL3 ;
  91. MAILTHE = MAIL4 'ET' MAIL5 'ET' MAIL6 ;
  92.  
  93.  
  94.  
  95. * MODELE
  96. TAB_Mod . 1 ='MODE' MAIL1 'DIFFUSION' 'TUY2' 'INCO' 'V1' 'Q1';
  97. TAB_Mod . 2 ='MODE' MAIL2 'DIFFUSION' 'BARR' 'INCO' 'V2' 'Q2';
  98. TAB_Mod . 3 ='MODE' MAIL3 'DIFFUSION' 'TUY3' 'INCO' 'V3' 'Q3';
  99. TAB_Mod . 4 ='MODE' MAIL4 'THERMIQUE' 'TUY2';
  100. TAB_Mod . 5 ='MODE' MAIL5 'THERMIQUE' 'BARR';
  101. TAB_Mod . 6 ='MODE' MAIL6 'THERMIQUE' 'TUY3';
  102. MODTOT ='ETG' TAB_Mod ;
  103.  
  104.  
  105. * Extraction des inconnues
  106. INC1 ='EXTR' ('EXTR' TAB_Mod . 1 'DEPL') 1 ;
  107. INC2 ='EXTR' ('EXTR' TAB_Mod . 2 'DEPL') 1 ;
  108. INC3 ='EXTR' ('EXTR' TAB_Mod . 3 'DEPL') 1 ;
  109. INC4 ='EXTR' ('EXTR' TAB_Mod . 4 'DEPL') 1 ;
  110. INC5 ='EXTR' ('EXTR' TAB_Mod . 5 'DEPL') 1 ;
  111. INC6 ='EXTR' ('EXTR' TAB_Mod . 6 'DEPL') 1 ;
  112.  
  113. DUA1 ='EXTR' ('EXTR' TAB_Mod . 1 'FORC') 1 ;
  114. DUA2 ='EXTR' ('EXTR' TAB_Mod . 2 'FORC') 1 ;
  115. DUA3 ='EXTR' ('EXTR' TAB_Mod . 3 'FORC') 1 ;
  116. DUA4 ='EXTR' ('EXTR' TAB_Mod . 4 'FORC') 1 ;
  117. DUA5 ='EXTR' ('EXTR' TAB_Mod . 5 'FORC') 1 ;
  118. DUA6 ='EXTR' ('EXTR' TAB_Mod . 6 'FORC') 1 ;
  119.  
  120. *ITHER='EXIS' MOD1 'FORM' 'THERMIQUE';
  121.  
  122. * Flux generalise injecte a l'altitude de P2 et CHARGEMENT constant
  123. CHPinj1 ='MANU' 'CHPO' P21 1 DUA1 1.2 'NATURE' 'DISCRET';
  124. CHPinj2 ='MANU' 'CHPO' P22 1 DUA2 1.2 'NATURE' 'DISCRET';
  125. CHPinj3 ='MANU' 'CHPO' P23 1 DUA3 1.2 'NATURE' 'DISCRET';
  126. CHPinj4 ='MANU' 'CHPO' P24 1 DUA4 1.2 'NATURE' 'DISCRET';
  127. CHPinj5 ='MANU' 'CHPO' P25 1 DUA5 1.2 'NATURE' 'DISCRET';
  128. CHPinj6 ='MANU' 'CHPO' P26 1 DUA6 1.2 'NATURE' 'DISCRET';
  129.  
  130. id_Cha =('DIME' TAB_Cha) - 2 ;
  131. TAB_Cha . (1 + id_Cha) = 'CHAR' DUA1 CHPinj1 ;
  132. TAB_Cha . (2 + id_Cha) = 'CHAR' DUA2 CHPinj2 ;
  133. TAB_Cha . (3 + id_Cha) = 'CHAR' DUA3 CHPinj3 ;
  134. TAB_Cha . (4 + id_Cha) = 'CHAR' DUA4 CHPinj4 ;
  135. TAB_Cha . (5 + id_Cha) = 'CHAR' DUA5 CHPinj5 ;
  136. TAB_Cha . (6 + id_Cha) = 'CHAR' DUA6 CHPinj6 ;
  137.  
  138. * Flux generalise de soutirage en bas
  139. CHPsou1 ='MANU' 'CHPO' P01 1 DUA1 -0.5 'NATURE' 'DISCRET';
  140. CHPsou2 ='MANU' 'CHPO' P02 1 DUA2 -0.5 'NATURE' 'DISCRET';
  141. CHPsou3 ='MANU' 'CHPO' P03 1 DUA3 -0.5 'NATURE' 'DISCRET';
  142. CHPsou4 ='MANU' 'CHPO' P04 1 DUA4 -0.5 'NATURE' 'DISCRET';
  143. CHPsou5 ='MANU' 'CHPO' P05 1 DUA5 -0.5 'NATURE' 'DISCRET';
  144. CHPsou6 ='MANU' 'CHPO' P06 1 DUA6 -0.5 'NATURE' 'DISCRET';
  145.  
  146. id_Cha =('DIME' TAB_Cha) - 2 ;
  147. TAB_Cha . (1 + id_Cha) = 'CHAR' DUA1 CHPsou1 ;
  148. TAB_Cha . (2 + id_Cha) = 'CHAR' DUA2 CHPsou2 ;
  149. TAB_Cha . (3 + id_Cha) = 'CHAR' DUA3 CHPsou3 ;
  150. TAB_Cha . (4 + id_Cha) = 'CHAR' DUA4 CHPsou4 ;
  151. TAB_Cha . (5 + id_Cha) = 'CHAR' DUA5 CHPsou5 ;
  152. TAB_Cha . (6 + id_Cha) = 'CHAR' DUA6 CHPsou6 ;
  153.  
  154. * MATERIAU
  155. CooZ1 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 1) 'SCAL' 1. 'STRESSES')) 'Z';
  156. CooZ2 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 2) 'SCAL' 1. 'STRESSES')) 'Z';
  157. CooZ3 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 3) 'SCAL' 1. 'STRESSES')) 'Z';
  158. CooZ4 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 4) 'SCAL' 1. 'STRESSES')) 'Z';
  159. CooZ5 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 5) 'SCAL' 1. 'STRESSES')) 'Z';
  160. CooZ6 ='NOMC' ('COOR' 2 ('MANU' 'CHML' (TAB_Mod . 6) 'SCAL' 1. 'STRESSES')) 'Z';
  161.  
  162. Sect1 ='IPOL' CooZ1 EV_S_Z ;
  163. Sect2 ='IPOL' CooZ2 EV_S_Z ;
  164. Sect3 ='IPOL' CooZ3 EV_S_Z ;
  165. Sect4 ='IPOL' CooZ4 EV_S_Z ;
  166. Sect5 ='IPOL' CooZ5 EV_S_Z ;
  167. Sect6 ='IPOL' CooZ6 EV_S_Z ;
  168.  
  169. TAB_Mat . 1 ='MATE' (TAB_Mod . 1) 'KD' 1. 'SECT' Sect1 ;
  170. TAB_Mat . 2 ='MATE' (TAB_Mod . 2) 'KD' 1. 'SECT' Sect2 ;
  171. TAB_Mat . 3 ='MATE' (TAB_Mod . 3) 'KD' 1. 'SECT' Sect3 ;
  172. TAB_Mat . 4 ='MATE' (TAB_Mod . 4) 'KD' 1. 'SECT' Sect4 ;
  173. TAB_Mat . 5 ='MATE' (TAB_Mod . 5) 'KD' 1. 'SECT' Sect5 ;
  174. TAB_Mat . 6 ='MATE' (TAB_Mod . 6) 'KD' 1. 'SECT' Sect6 ;
  175. MATTOT ='ETG' TAB_Mat ;
  176.  
  177. * BLOCAGES, et VALEURS_IMPOSEES ;
  178. BLO1 ='BLOQ' INC1 P31 ;
  179. BLO2 ='BLOQ' INC2 P32 ;
  180. BLO3 ='BLOQ' INC3 P33 ;
  181. BLO4 ='BLOQ' INC4 P34 ;
  182. BLO5 ='BLOQ' INC5 P35 ;
  183. BLO6 ='BLOQ' INC6 P36 ;
  184.  
  185. DEPI1='DEPI' BLO1 1. ;
  186. DEPI2='DEPI' BLO2 1. ;
  187. DEPI3='DEPI' BLO3 1. ;
  188. DEPI4='DEPI' BLO4 1. ;
  189. DEPI5='DEPI' BLO5 1. ;
  190. DEPI6='DEPI' BLO6 1. ;
  191.  
  192. id_Cha =('DIME' TAB_Cha) - 2 ;
  193. TAB_Cha . (1 + id_Cha) = 'CHAR' 'CIMP' DEPI1 ;
  194. TAB_Cha . (2 + id_Cha) = 'CHAR' 'CIMP' DEPI2 ;
  195. TAB_Cha . (3 + id_Cha) = 'CHAR' 'CIMP' DEPI3 ;
  196. TAB_Cha . (4 + id_Cha) = 'CHAR' 'TIMP' DEPI4 ;
  197. TAB_Cha . (5 + id_Cha) = 'CHAR' 'TIMP' DEPI5 ;
  198. TAB_Cha . (6 + id_Cha) = 'CHAR' 'TIMP' DEPI6 ;
  199. CHATOT = 'ETG' TAB_Cha ;
  200.  
  201. * Calcul PASAPAS
  202. TAB1='TABL' 'PASAPAS' ;
  203. TAB1.'TEMPS_CALCULES' ='PROG' 0. PAS 1. 1. ;
  204. TAB1.'MODELE' = MODTOT ;
  205. TAB1.'CARACTERISTIQUES' = MATTOT ;
  206. TAB1.'BLOCAGES_DIFFUSIONS' = BLO1 'ET' BLO2 'ET' BLO3 ;
  207. TAB1.'BLOCAGES_THERMIQUES' = BLO4 'ET' BLO5 'ET' BLO6 ;
  208. TAB1.'CHARGEMENT' =CHATOT ;
  209.  
  210. PASAPAS TAB1 ;
  211.  
  212. * Post-Traitement
  213. Dim1 =('DIME' (TAB1 . 'TEMPS')) - 1 ;
  214. Solfin = (TAB1.'CONCENTRATIONS'. Dim1) 'ET' (TAB1.'TEMPERATURES'. Dim1) ;
  215.  
  216. Soltrac =('EXCO' Solfin INC1) 'ET' ('EXCO' Solfin INC2) 'ET'
  217. ('EXCO' Solfin INC3) 'ET' ('EXCO' Solfin INC4 ) ;
  218. 'TRAC' Soltrac (MAILDIF 'ET' MAILTHE) ;
  219.  
  220. * Calcul du gradient sur le modele complet
  221. Gradfin1 ='GRAD' MODTOT Solfin ;
  222. Gradfin2 ='CHAN' 'NOEUD' Gradfin1 MODTOT ;
  223. CHPgrad ='CHAN' 'CHPO' Gradfin1 MODTOT ;
  224.  
  225. * Pour tracer l'évolution du gradient
  226. EVgrad1='EVOL' 'BLEU' 'CHPO' CHPgrad 'V1,S' MAIL1 ;
  227. EVgrad2='EVOL' 'ROUG' 'CHPO' CHPgrad 'V2,S' MAIL2 ;
  228. EVgrad3='EVOL' 'ROSE' 'CHPO' CHPgrad 'V3,S' MAIL3 ;
  229. EVgrad4='EVOL' 'VERT' 'CHPO' CHPgrad 'T,S' MAIL4 ;
  230. EVgrad5='EVOL' 'TURQ' 'CHPO' CHPgrad 'T,S' MAIL5 ;
  231. EVgrad6='EVOL' 'JAUN' 'CHPO' CHPgrad 'T,S' MAIL6 ;
  232.  
  233. 'DESS' (EVgrad1 'ET' EVgrad2 'ET' EVgrad3 'ET' EVgrad4 'ET' EVgrad5 'ET' EVgrad6) ;
  234.  
  235. * VERIFICATION du resultat de GRAD
  236. * On utilise le MAILLAGE lineaire pour la comparaison ==> Interpolation sur le maillage LINEAIRE
  237. Absc1 ='EXTR' EVgrad1 'ABSC' 1 ;
  238.  
  239. Ordo1 ='EXTR' EVgrad1 'ORDO' 1 ;
  240. Ordo2 ='EXTR' EVgrad2 'ORDO' 1 ;
  241. Ordo3 ='IPOL' Absc1 ('EXTR' EVgrad3 'COUR' 1) ;
  242. Ordo4 ='EXTR' EVgrad4 'ORDO' 1 ;
  243. Ordo5 ='EXTR' EVgrad5 'ORDO' 1 ;
  244. Ordo6 ='IPOL' Absc1 ('EXTR' EVgrad6 'COUR' 1) ;
  245.  
  246. * Les valeurs du gradient 'CHPOINT' doivent être identiques (a epsilon pres entre les LINEAIRES et QUADRATIQUES)
  247. Maxi1 ='MAXI' 'ABS' Ordo1 ;
  248. Maxi3 ='MAXI' 'ABS' Ordo3 ;
  249.  
  250. * Lineaires ensembles
  251. Maxi21 ='MAXI' 'ABS' (Ordo2 - Ordo1) ;
  252. Maxi41 ='MAXI' 'ABS' (Ordo4 - Ordo1) ;
  253. Maxi51 ='MAXI' 'ABS' (Ordo5 - Ordo1) ;
  254. Maxtot1 =('MAXI' Maxi21 Maxi41 Maxi51) / Maxi1 ;
  255.  
  256. * Quadratiques ensembles
  257. Maxi63 ='MAXI' 'ABS' (Ordo6 - Ordo3) ;
  258. Maxtot2 = Maxi63 / Maxi3 ;
  259.  
  260. * Erreur entre LINEAIRE et QUADRATIQUES (attention au saut proche de l'injection)
  261. Maxi31 ='MAXI' 'ABS' (Ordo3 - Ordo1) ;
  262. Maxtot3 = Maxi31 / Maxi1 ;
  263.  
  264. 'MESS' 'Erreur relative entre les LINEAIRES :' Maxtot1 ;
  265. 'MESS' 'Erreur relative entre les QUADRATIQUES :' Maxtot2 ;
  266. 'MESS' 'Erreur relative entre LINEAIRE et QUADRATIQUE :' Maxtot3 ;
  267.  
  268. ****************************
  269. * Erreur dans certains cas
  270. ****************************
  271. Prec1 =9.6E-12 ;
  272. 'SI' (Maxtot1 '>' Prec1);
  273. 'MESS' 'A-Erreur trop grande lors de la comparaison des GRADIENTS';
  274. 'ERRE' 5 ;
  275. 'FINS';
  276.  
  277. Prec2 =3.1E-11 ;
  278. 'SI' (Maxtot2 '>' Prec2);
  279. 'MESS' 'B-Erreur trop grande lors de la comparaison des GRADIENTS';
  280. 'ERRE' 5 ;
  281. 'FINS';
  282.  
  283. Prec3 =1.37D-4 ;
  284. 'SI' (Maxtot3 '>' Prec3);
  285. 'MESS' 'C-Erreur trop grande lors de la comparaison des GRADIENTS';
  286. 'ERRE' 5 ;
  287. 'FINS';
  288.  
  289. 'FIN';
  290.  
  291.  
  292.  

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