==================================================================== programmes MuPAD - 24/03/06 Méthode des éléments finis : élasticité plane Yves DEBARD Institut Universitaire de Technologie du MANS Département Génie Mécanique et Productique Avenue Olivier Messiaen 72085 LE MANS CEDEX 9 ==================================================================== Eléments iso-paramétriques Calcul des fonctions d'interpolation et de leurs dérivées ============================================================== tri3_int : triangle à 3 noeuds reset():export(linalg): n:=3; // base polynomiale P:=(xi,eta)->[1,xi,eta]; // coordonnées nodales xi_nod:=[0,1,0]: eta_nod:=[0,0,1]: C:=matrix([P(xi_nod[i],eta_nod[i]) $ i=1..n]); // fonctions d'interpolation N:=matrix(1,3,P(xi,eta))*C^-1; dNxi:=map(N,diff,xi); dNeta:=map(N,diff,eta); ----------------------------------- tri6_int : triangle à 6 noeuds reset():export(linalg): n:=6; // base polynomiale P:=(xi,eta)->[1,xi,eta,xi*xi,eta*eta,xi*eta]; // coordonnées nodales xi_nod:=[0,1/2,1,1/2,0,0]: eta_nod:=[0,0,0,1/2,1,1/2]: C:=matrix([P(xi_nod[i],eta_nod[i]) $ i=1..n]); // fonctions d'interpolation N:=matrix(1,6,P(xi,eta))*C^-1; N:=map(N,factor); dNxi:=map(N,diff,xi); dNeta:=map(N,diff,eta); ------------------------------------ quad4_int : quadrangle à 4 noeuds reset():export(linalg): n:=4; // base polynomiale P:=(xi,eta)->[1,xi,eta,xi*eta]; // coordonnées nodales xi_nod:=[-1,1,1,-1]: eta_nod:=[-1,-1,1,1]: C:=matrix([P(xi_nod[i],eta_nod[i]) $ i=1..n]); // fonctions d'interpolation N:=matrix(1,4,P(xi,eta))*C^-1; N:=map(N,factor); dNxi:=map(N,diff,xi); dNeta:=map(N,diff,eta); ------------------------------------ quad8_int : quadrangle à 8 noeuds reset():export(linalg): n:=8; // base polynomiale P:=(xi,eta)->[1,xi,eta,xi*eta,xi^2,eta^2,xi^2*eta,xi*eta^2]; // coordonnées nodales xi_nod:=[-1,0,1,1,1,0,-1,-1]: eta_nod:=[-1,-1,-1,0,1,1,1,0]: C:=matrix([P(xi_nod[i],eta_nod[i]) $ i=1..n]); // fonctions d'interpolation N:=matrix(1,8,P(xi,eta))*C^-1; N:=map(N,factor); dNxi:=map(N,diff,xi); dNeta:=map(N,diff,eta); ---------------------------------------- quad9_int : quadrangle à 9 noeuds reset():export(linalg): n:=9; // base polynomiale P:=(xi,eta)->[1,xi,eta,xi*eta,xi^2,eta^2,xi^2*eta,xi*eta^2,xi^2*eta^2]; // coordonnées nodales xi_nod:=[-1,0,1,1,1,0,-1,-1,0]: eta_nod:=[-1,-1,-1,0,1,1,1,0,0]: C:=matrix([P(xi_nod[i],eta_nod[i]) $ i=1..n]); // fonctions d'interpolation N:=matrix(1,9,P(xi,eta))*C^-1; N:=map(N,factor); dNxi:=map(N,diff,xi); dNeta:=map(N,diff,eta);