==================================================================== programmes MuPAD - 24/03/06 Méthodes énergétiques : théorème de Castigliano Yves DEBARD Institut Universitaire de Technologie du MANS Département Génie Mécanique et Productique Avenue Olivier Messiaen 72085 LE MANS CEDEX 9 ==================================================================== // Exercice 1 : étude d'une poutre console soumise à un effort normal // initialisation reset(): // effort normal dans la section d'abscisse x N:=F+q*(L-x); // énergie de déformation dEdef:=N^2/(2*EA); Edef:=int(dEdef,x=0..L); // déplacement du noeud 2 u2:=simplify(diff(Edef,F)); // déplacement de la section d'abscisse x N0_x:=F+q*(L-s)+Q; Nx_L:=F+q*(L-s); Edef:=int(N0_x^2,s=0..x)+int(Nx_L^2,s=x..L): Edef:=simplify(Edef/(2*EA)); ux:=diff(Edef,Q); ux:=subs(ux,Q=0); subs(ux,x=L); ------------------------------------------------------------- // Exercice 2 : étude d'une poutre console reset(): // initialisation // efforts dans la section d'abscisse x Ty:=F; Mfz:=F*(L-x); // énergie de déformation ET:=int(Ty^2/(2*G*A*ky),x=0..L); EMfz:=int(Mfz^2/(2*E_*Iz),x=0..L); Edef:=ET+EMfz; // déplacements du noeud 2 v2T:=diff(ET,F);v2:=diff(Edef,F); rotz2T:=diff(ET,M);rotz2:=diff(Edef,M); // influence de l'effort tranchant G:=E_/2/(1+nu); ky:=10*(1+nu)/(12+11*nu); plotfunc2d(ky,nu=0..0.5); A:=b*h: Iz:=b*h^3/12: L:=x*h: f:=simplify(v2T/v2); f1:=subs(f,nu=0);f2:=subs(f,nu=0.25);f3:=subs(f,nu=0.5); plotfunc2d(f1*100,f2*100,f3*100,x=3..20); --------------------------------------------------------------- // Exercice 3 : étude d'une poutre console // initialisation reset():export(linalg): // efforts dans la section d'abscisse x Ty:=F+p*(L-x); Mfz:=M+F*(L-x)+p*(L-x)^2/2; // énergie de déformation dEdef:=Ty^2/(2*GAky)+Mfz^2/(2*EIz); Edef:=int(dEdef,x=0..L); // déplacements du noeud 2 u2:=grad(Edef,[F,M]);simplify(u2); // matrice de souplesse C:=hessian(Edef,[F,M]); // ou C:=jacobian(u2,[F,M]); // matrice de rigidité K:=C^-1; -------------------------------------------------------------- // Exercice 4 : étude d'une poutre console reset(): // initialisation // efforts dans la section d'abscisse x Ty:=F+q*(L-x); Mfz:=M+F*(L-x)+q*(L-x)^2/2; // énergie de déformation ET:=int(Ty^2/(2*G*A*ky),x=0..L); EMfz:=int(Mfz^2/(2*E_*Iz),x=0..L); Edef:=ET+EMfz; // déplacements du noeud 2 v2T:=diff(ET,F);v2:=diff(Edef,F); rotz2T:=diff(ET,M);rotz2:=diff(Edef,M); F:=0;M:=0; v2;rotz2; // influence de l'effort tranchant G:=E_/2/(1+nu); ky:=10*(1+nu)/(12+11*nu); A:=b*h: Iz:=b*h^3/12: L:=x*h: f:=simplify(v2T/v2); f1:=subs(f,nu=0);f2:=subs(f,nu=0.25);f3:=subs(f,nu=0.5); plotfunc2d(f1*100,f2*100,f3*100,x=3..20); -------------------------------------------------------------- // Exercice 5 : étude d'un arc plan reset(): // initialisation de la mémoire angle_arc:=3*PI/2; assume(EA>0):assume(EIz>0):assume(GAk>0): // efforts dans la section phi c:=cos(phi):s:=sin(phi): N:=Fx*s-Fy*c; T:=Fx*c+Fy*s; Mfz:=(Fx*s+Fy*(1-c))*R+Mz; // énergie de déformation EN:=int(N^2/(2*EA)*R,phi=0..angle_arc); ET:=int(T^2/(2*GAk)*R,phi=0..angle_arc); EMfz:=int(Mfz^2/(2*EIz)*R,phi=0..angle_arc); Edef:=EN+ET+EMfz; // déplacement u2:=diff(Edef,Fx); v2:=diff(Edef,Fy); rotz2:=diff(Edef,Mz); -------------------------------------------------------------- // Exercice 6 : étude d'un arc plan // initialisation reset(): // angle de l'arc angle_arc:=3*PI/2; assume(E_>0):assume(A>0):assume(Iz>0):assume(k>0): // efforts dans la section théta N:=F*sin(phi); T:=F*cos(phi); Mfz:=F*R*sin(phi); // énergie de déformation EN:=int(N^2/(2*E_*A)*R,phi=0..angle_arc); ET:=int(T^2/(2*G*k*A)*R,phi=0..angle_arc); EMfz:=int(Mfz^2/(2*E_*Iz)*R,phi=0..angle_arc); Edef:=EN+ET+EMfz; // déplacement vN:=diff(EN,F); vT:=diff(ET,F); vMfz:=diff(EMfz,F); v:=vN+vT+vMfz; // influence de l'effort normal et de l'effort tranchant G:=E_/2/(1+nu); k:=5/6; //k:=10*(1+nu)/(12+11*nu); A:=b*h: Iz:=b*h^3/12: R:=x*h: fnor:=simplify(vN/v); ftra:=simplify(vT/v); f1:=subs(ftra,nu=0);f2:=subs(ftra,nu=0.25);f3:=subs(ftra,nu=0.5); plotfunc2d(f1*100,f2*100,f3*100,x=2..10); nu:=0.25; plotfunc2d(fnor*100,ftra*100,x=2..10); -------------------------------------------------