* fichier : darcy1.dgibi ************************************************************************ ************************************************************************ ***************** CAS TEST : darcy1.dgibi ************************* * GRAPH = 'N' ; 'SAUT' 'PAGE' ; * *------------------------------------------------------------------- * TEST DARCY1 * * CALCUL DARCY ISOTROPE * Résolution par une méthode d'éléments finis mixtes hybrides. * * Ce test permet de vérifier le bon fonctionnement des opérateurs * utilisés pour la résolution des équations de DARCY par une méthode * d'éléments finis mixtes hybrides dans CASTEM2000. * * On effectue trois calculs sur un domaine carré, maillé par des * quadrangles réguliers. Le phénomène étudié est monodimensionnel. * Les conditions aux limites varient suivant le cas considéré : * on impose le flux ou la charge sur les cotés du domaine. * * La solution analytique en charge étant un polynome de degré un * en x, la vitesse est constante et horizontale. * Si on note L la longueur du domaine, HD (resp. HG) la charge à * droite du domaine (resp. à gauche) et dH=HD-HG on a : * h(x) = (x-L) * dH/L + HD * Et par suite * V(x) = (-K*dH/L ; 0.) * * On s'attend à une précision de l'ordre de la précision machine. * *------------------------------------------------------------------- * 'SAUT' 'PAGE' ; * *- Options générales de calcul. * * Dimension 2, éléments à générer quadrangulaires ou triangulaires : * Pas d'affichage à l'écran des lignes de commandes lues : * ------------ * = MAILLAGE = * ------------ * *- Création des points supports des DROITES * * Dimensions : L = 1.D0 ; HA = 1.D0 ; * Coordonnées : XG = 0.D0 ; XD = XG + L ; YG = 0.D0 ; YD = YG + HA ; * Points A1 = XG YG ; A3 = XD YG ; D1 = XG YD ; D3 = XD YD ; * *- Création des DROITES frontières * * Discrétisation dans les deux directions : INUMX = 9 ; INUMY = 4 ; * droites maillées : * *- Création maillage GEOMETRIQUE * * on va faire des parallèlépipèdes réguliers grâce à DALLER * Les points définissant les quadrangles sont appellés 'SOMMET' CARRE = 'DALLER' DRBAS DRGAU DRHAU DRDRO 'PLAN' ; * *- Création maillage HYBRIDE y compris sous-objets (cond. limites) * ce sont les maillages avec les points sommets + les points faces + * les points centres. * on crée celui du maillage total DOMHYB = 'CHANGER' CARRE 'QUAF' ; * et ceux des droites sur lesquelles on voudra mettre des conditions * aux limites (en fait les quatre côtés, ici) : DOMGAU = 'CHANGER' DRGAU 'QUAF' ; DOMDRO = 'CHANGER' DRDRO 'QUAF' ; DOMHAU = 'CHANGER' DRHAU 'QUAF' ; DOMBAS = 'CHANGER' DRBAS 'QUAF' ; * On a créé à chaque fois les points faces et centres. * Comme CARRE, DRGAU, DRDRO, DRHAU et DRBAS avaient des segments en * commun, les opérations précédentes ont créé beaucoup de points en * double. Il faut les éliminer pour qu'on parle bien de la même chose. * critère d'élimination (inférieur à la plus petite dimension d'arête ELI0 = L / INUMX / 10.D0 ; * élimination proprement dite : 'ELIMINATION' ( DOMHYB ET DOMGAU ET DOMDRO ET DOMHAU ET DOMBAS) ELI0 ; * ---------------- * = MODELISATION = * ---------------- * Définition du modèle physique attaché au domaine d'étude : * Il servira d'une part pour la résolution, * d'autre part pour extraire les points faces, centres, et autres * informations utiles MODHYB = 'MODELE' DOMHYB 'DARCY' 'ISOTROPE' ; * On voudra aussi disposer des points faces des frontières, * c'est-à-dire des points centres des lignes constituant ces * frontières. Pour cela, on attache à ces lignes une modélisation, * inutile en soi, mais qui dit implicitement (comme c'est un modèle * 'DARCY'), que l'on travaille en éléments finis mixte hybrides, * et donc qu'on aura besoin, à un moment ou à un autre, des points * centres, faces, et autres : MODGAU = 'MODELE' DOMGAU 'DARCY' 'ISOTROPE' ; MODDRO = 'MODELE' DOMDRO 'DARCY' 'ISOTROPE' ; MODHAU = 'MODELE' DOMHAU 'DARCY' 'ISOTROPE' ; MODBAS = 'MODELE' DOMBAS 'DARCY' 'ISOTROPE' ; * On peut maintenant extraire via ces modèles, les points centre des * maillages 'QUAF' des frontières, qui sont en fait les points faces * en limite du domaine : * Les autres petites informations, sur le domaine entier : * Maillage des points centres : * Maillage des points faces : * Longueur des arêtes (on est en 2D) : * Surface des mailles : * Vecteurs normaux aux faces, champ-points à autant de composantes que * la dimension de l'espace : 'UX' , 'UY' (, 'UZ'). * * ------------------------------------ * = Tenseur de perméabilité isotrope = * ------------------------------------ * La grandeur physique correspondant au laplacien. C'est ici la * perméabilité hydraulique. VK = 0.75D0 ; * On la stoque dans un objet de type matériau MATI3 = 'MATERIAU' MODHYB 'K' VK ; * ----------------------- * = Solution analytique = * ----------------------- * Elle va servir à deux choses : définir les conditions aux limites, * et vérifier la précision de la résolution. * * Trace de charge aux faces * La charge étant linéaire, Th moyen est au centre de la face * HG = 100.D0 ; HD = 20.D0 ; DH = HD - HG ; PANAF = (XX - L) * DH / L + HD ; * * Charge aux centres des éléments * La charge étant linéaire, la moyenne est au centre de l'élément * PANAC = (XXC - L) * DH / L + HD ; * * Composantes scalaires de la vitesse * VXANA = ( -1.D0 ) * VK * DH / L ; VYANA = 0.D0 ; * * Vitesse aux faces et aux centres * * * ------------------------- * = matrice Masse HYBride = * ------------------------- * C'est l'inverse du tenseur de perméabilité. Il ne faut donc jamais * avoir mis une valeur de perméabilité nulle. * ------------------------- * = MAtrice globale en TH = * ------------------------- * La matrice correspondant à div (K 'GRAD'). * C'est un objet de type RIGIDITE. * ---------------- * = TH imposée = * ---------------- * Les conditions aux limites de Dirichlet portent sur la charge. * On est en EFMH, donc ce sont les valeurs aux faces qu'on utilise. * On les appelle trace de charge. C'est un champ-point appuyé aux * face, de nom de composante 'TH'. * Contribution au membre de gauche pour chaque sous-partie de la frontière * Contribution au membre de droite pour chaque sous-partie de la frontière * * * * ---------------- * = Flux imposé = * ---------------- * Conditions aux limites de Neuman. * En discrétisation EFMH comme ici, ce sont des débits intégrés aux * faces. C'est un champ-point de composante 'FLUX' * Il faut tenir compte de l'orientation des normales aux faces, * toujours sortantes aux frontières du domaine. Une valeur de débit * positive correspond donc à un flux sortant. * flux rentrant à gauche - (- K 'GRAD' h) : FG = VK * DH / L ; * champ de débit imposé à gauche, constant sur les faces de la * frontière de gauche (il faut multiplier le flux par la longueur des * arêtes pour obtenir le débit intégré) : FLGAU = FGAU * LGAU ; * on en fait un champ de nature discret (diffus conviendrait tout aussi bien) : * pour que sa nature ne reste pas 'INDETERMINE'. Cela permettra de le * concaténer avec d'autres champs par la suite. * * idem pour le flux sortant à droite : FD = ( -1.D0 ) * FG ; FLDRO = FDRO * LDRO ; * ---------------- * = Assemblage = * ---------------- * Création des membres de gauche et de droite de l'équation "A TH = B" * pour les trois jeux de conditions aux limites choisis. * CCC# correspond à A, FFF# correspond à B. * Les CL de Neuman n'ont pas de contribution au terme de gauche. * CL de Dirichlet partout : CCC1 = HND1A 'ET' BBHAU 'ET' BBBAS 'ET' BBDRO 'ET' BBGAU ; FFF1 = EEHAU 'ET' EEBAS 'ET' EEDRO 'ET' EEGAU ; * CL de Dirichlet à gauche et à droite, * et flux nul imposé en haut et en bas (c'est ce qui se passe par * défaut, donc il suffit de ne rien mettre) : CCC2 = HND1A 'ET' BBDRO 'ET' BBGAU ; FFF2 = EEDRO 'ET' EEGAU ; * CL de Dirichlet en hau et en bas, * et flux imposés à gauche et à droite : CCC3 = HND1A 'ET' BBHAU 'ET' BBBAS ; FFF3 = EEHAU 'ET' EEBAS 'ET' FLDRO 'ET' FLGAU ; * ----------------- * = Résolution TH = * ----------------- * On résoud les trois systèmes d'équations (CL comprises) * On obtient en sortie la trace de charge, valeur moyenne de la charge * sur chaque arête. * ---------------- * = Résolution H = * ---------------- * On en déduit la charge moyenne par élément, sous la forme d'un * champ-point de composante 'H' appuyé aux centres des éléments. * ---------------- * = Résolution V = * ---------------- * On en déduit aussi pour chaque jeu de conditions aux limites, * les débits intégrés sur chaque arête, sous la forme d'un champ-point * de composante 'FLUX' appuyé aux centre des faces : * La vitesse moyenne dans chaque élément, sous la forme d'un champ-point * de composantes 'VX', 'VY' (,'VZ') appuyé aux centres des éléments : * La vitesse moyenne à travers chaque face, sous la forme d'un champ-point * de composante 'SCAL' appuyé aux centres des faces : * de même pour le 2e jeux de CLs * de même pour le 3e jeux de CLs * ----------------- * = Calcul ERREUR = * ----------------- * Comparaison calcul analytique, calcul numérique : * Erreur relative en trace de charge (moyenne aux faces) * Erreur relative en charge (moyenne aux centres des éléments) * * Jeu de CL n°1 ERRTP1 = ERRTP1 - PANAF / PANAF ; ERRTP1 = 'ABS' ERRTP1 ; ERRP1 = ERRP1 - PANAC / PANAC ; ERRP1 = 'ABS' ERRP1 ; * Jeu de CL n°2 ERRTP2 = ERRTP2 - PANAF / PANAF ; ERRTP2 = 'ABS' ERRTP2 ; ERRP2 = ERRP2 - PANAC / PANAC ; ERRP2 = 'ABS' ERRP2 ; * Jeu de CL n°3 ERRTP3 = ERRTP3 - PANAF / PANAF ; ERRTP3 = 'ABS' ERRTP3 ; ERRP3 = ERRP3 - PANAC / PANAC ; ERRP3 = 'ABS' ERRP3 ; * * Erreur relative en vitesse aux centres des éléments * Jeu de CL n°1 VD1 = VANAC - VCENT1 ; SDC1 = 'ABS' ( VC1 / VDVD ) ; SDC1 = SDC1 '**' 0.5D0 ; * Jeu de CL n°2 VD2 = VANAC - VCENT2 ; SDC2 = 'ABS' ( VC2 / VDVD ) ; SDC2 = SDC2 '**' 0.5D0 ; * Jeu de CL n°3 VD3 = VANAC - VCENT3 ; SDC3 = 'ABS' ( VC3 / VDVD ) ; SDC3 = SDC3 '**' 0.5D0 ; * * ------------------- * = Tracé resultats = * ------------------- 'SI' ('NEG' GRAPH 'N') ; * *- Transformation des quantités aux centres en MCHAML * * * Dans chaque cas on trace * L'erreur relative sur la charge moyenne aux centres des éléments * L'erreur relative sur la Vitesse aux centres des éléments * 'TRAC' MODHYB ERRP1 ; 'TRAC' MODHYB SDS1 ; * 'TRAC' MODHYB ERRP2 ; 'TRAC' MODHYB SDS2 ; * 'TRAC' MODHYB ERRP3 ; 'TRAC' MODHYB SDS3 ; * 'FINSI' ; * * ------------------- * = Gestion ERREURS = * ------------------- * 'SAUT' 'PAGE' ; 'MESS' ' ERREURS RELATIVES ' ; 'MESS' ' cas test TH H V' ; 'MESS' ' numero1 ' maxtp1 ' ' maxp1 ' ' maxv1 ; 'MESS' ' numero2 ' maxtp2 ' ' maxp2 ' ' maxv2 ; 'MESS' ' numero3 ' maxtp3 ' ' maxp3 ' ' maxv3 ; * EPS0 = 1.E-13 ; LOG1 = MAXTP1 > EPS0 ; LOG2 = MAXTP2 > EPS0 ; LOG3 = MAXTP3 > EPS0 ; LOG4 = MAXP1 > EPS0 ; LOG5 = MAXP2 > EPS0 ; LOG6 = MAXP3 > EPS0 ; LOG7 = MAXV1 > EPS0 ; LOG8 = MAXV2 > EPS0 ; LOG9 = MAXV3 > EPS0 ; LTP0 = LOG1 'OU' LOG2 'OU' LOG3 ; LP0 = LOG4 'OU' LOG5 'OU' LOG6 ; LV0 = LOG7 'OU' LOG8 'OU' LOG9 ; L0 = LTP0 'OU' LP0 'OU' LV0 ; * Compte-rendu de fin et sortie 'SI' L0 ; 'ERREUR' 5 ; 'SINON' ; 'ERREUR' 0 ; 'FINSI' ; * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales