076doct.mws

> restart:

> with(linalg):

Warning, new definition for norm

Warning, new definition for trace

Viga de Bernouilli-Euler

Jose Mª Goicolea Ruigomez,
10/02/2000

Funciones de forma cºbicas del elemento

> N:=matrix([[1-3*(x/l)^2+2*(x/l)^3,x*(1-2*x/l+(x/l)^2),
(x/l)^2*(3-2*x/l),x^2/l*(x/l-1)]]);

N := matrix([[1-3*x^2/(l^2)+2*x^3/(l^3), x*(1-2*x/l...

Vector de grados de libertad del elemento: flechas y derivadas de las mismas (=giros)

> a:=matrix([[w[1]],[wx[1]],[w[2]],[wx[2]]]);

a := matrix([[w[1]], [wx[1]], [w[2]], [wx[2]]])

Interpolación de flechas

> w[h](x):=multiply(N,a)[1,1];

w[h](x) := (1-3*x^2/(l^2)+2*x^3/(l^3))*w[1]+x*(1-2*...

Interpolación de curvaturas

> kappa[h](x):=diff(w[h](x),x,x);

kappa[h](x) := (-6*1/(l^2)+12*x/(l^3))*w[1]+2*(-2*1...

Matriz de interpolación de deformaciones (curvaturas)

> B:=map(z->diff(z,x,x),N);

B := matrix([[-6*1/(l^2)+12*x/(l^3), -4*1/l+6*x/(l^...

La curvatura (aproximada) es

> kappa[h](x):=multiply(B,a)[1,1];

kappa[h](x) := (-6*1/(l^2)+12*x/(l^3))*w[1]+(-4*1/l...

Integrando de la matriz de rigidez del elemento

> Kb:=multiply(transpose(B),(E*J)*B);

Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...
Kb := matrix([[E*J*(-6*1/(l^2)+12*x/(l^3))^2, (-6*1...

Integración para obtener la matriz de rigidez

> Kb:=map(z->int(z,x=0..l),Kb);

Kb := matrix([[12*E*J/(l^3), 6*E*J/(l^2), -12*E*J/(...

Viga de Timoshenko

Vector de grados de libertad: flechas y giros independientes

> a:=matrix([[w[1]],[theta[1]],[w[2]],[theta[2]]]);

a := matrix([[w[1]], [theta[1]], [w[2]], [theta[2]]...

Interpolacion de las flechas (lineal)

> Nx:=matrix([[1-x/l,0,x/l,0]]);

Nx := matrix([[1-x/l, 0, x/l, 0]])

Interpolacion de los giros (lineal)

> Nt:=matrix([[0,1-x/l,0,x/l]]);

Nt := matrix([[0, 1-x/l, 0, x/l]])

Flechas y giros interpolados

> w[h](x):=multiply(Nx,a)[1,1];

> theta[h](x):=multiply(Nt,a)[1,1];

w[h](x) := (1-x/l)*w[1]+x*w[2]/l

theta[h](x) := (1-x/l)*theta[1]+x*theta[2]/l

Curvatura aproximada

> kappa[h](x) := diff(theta[h](x),x)

kappa[h](x) := -theta[1]/l+theta[2]/l

Cortante aproximado

> alpha[h](x) := diff(w[h](x),x)-theta[h](x)

alpha[h](x) := -w[1]/l+w[2]/l-(1-x/l)*theta[1]-x*th...

Funciones de interpolacion de deformaciones, para flexion y cortante

> Bf := map(proc (z) options operator, arrow; diff(z,...

> Bc := evalm(map(proc (z) options operator, arrow; d...

Bf := matrix([[0, -1/l, 0, 1/l]])

Bc := matrix([[-1/l, x/l-1, 1/l, -x/l]])

Las curvaturas y cortantes aproximados salen lo mismo que antes:

> kappa[h](x):=multiply(Bf,a)[1,1];

kappa[h](x) := -theta[1]/l+theta[2]/l

> alfa[h](x):=multiply(Bc,a)[1,1];

alfa[h](x) := -w[1]/l+(x/l-1)*theta[1]+w[2]/l-x*the...

Matriz de rigidez por flexión

> Kf:=multiply(transpose(Bf),(E*J)*Bf);

Kf := matrix([[0, 0, 0, 0], [0, E*J/(l^2), 0, -E*J/...

> Kf:=map(z->int(z,x=0..l),Kf);

Kf := matrix([[0, 0, 0, 0], [0, E*J/l, 0, -E*J/l], ...

Matriz de rigidez por cortante

> Kc:=multiply(transpose(Bc),(G*A)*Bc);

Kc := matrix([[G*A/(l^2), -G*A*(x/l-1)/l, -G*A/(l^2...

> Kc:=map(z->int(z,x=0..l),Kc );

Kc := matrix([[G*A/l, 1/2*G*A, -G*A/l, 1/2*G*A], [1...

Matriz de rigidez conjunta

> Kt:=evalm(Kf+Kc);

Kt := matrix([[G*A/l, 1/2*G*A, -G*A/l, 1/2*G*A], [1...

Ejemplo: ménsula empotrada en el extremo 1, con carga P en el extremo 2

Primero se resuelve con elementos viga de Timoshenko, con un sólo elemento.

El vector de cargas es

> carga:=matrix([[V[1]],[M[1]],[P],[0]]);

carga := matrix([[V[1]], [M[1]], [P], [0]])

Lado izquierdo de la ecuación K[t]*a = P

> Kta:=multiply(Kt,a);

Kta := matrix([[G*A*w[1]/l+1/2*G*A*theta[1]-G*A*w[2...

Las ecuaciones que interesan son las dos ºltimas (las primeras sirven para dar las reacciones)

> Kta[3,1]=carga[3,1];
Kta[4,1]=carga[4,1];

-G*A*w[1]/l-1/2*G*A*theta[1]+G*A*w[2]/l-1/2*G*A*the...

1/2*G*A*w[1]+(-E*J/l+1/6*l*G*A)*theta[1]-1/2*G*A*w[...

Sustituyendo las condiciones del empotramiento en 1

> tmp:=map(z->subs(w[1]=0,theta[1]=0,z),Kta);

tmp := matrix([[-G*A*w[2]/l+1/2*G*A*theta[2]], [-1/...

Extraemos los coeficientes que dan la matriz de rigidez efectiva para los 2 g.d.l. del problema:

> Ke:=matrix([[coeff(Kta[3,1],w[2]),coeff(Kta[3,1],theta[2])],
[coeff(Kta[4,1],w[2]),coeff(Kta[4,1],theta[2])]]);

Ke := matrix([[G*A/l, -1/2*G*A], [-1/2*G*A, E*J/l+1...

La inversa es la flexibilidad

> Fe:=inverse(Ke);

Fe := matrix([[4*(3*E*J+l^2*G*A)*l/(G*A*(12*E*J+l^2...

Veamos la expresión que resulta si se elimina el siguiente factor comºn de la matriz:

> tmp1 := (1+12*E*J/(G*A*l^2))/(12*E*J/(G*A*l^2))

A falta del factor tmp1 , la matriz de flexibilidad es:

> Fe1:=map(expand,map(simplify,evalm(tmp1*Fe)));

Fe1 := matrix([[l/(G*A)+1/3*l^3/(J*E), 1/2*l^2/(J*E...

Calculemos ahora el valor exacto. Para ello, repetimos lo mismo pero con elementos viga de Bernouilli (exactos para flexión)

> Kba:=map(z->subs(w[1]=0,theta[1]=0,z),multiply(Kb,a));

Kba := matrix([[-12*E*J*w[2]/(l^3)+6*E*J*theta[2]/(...

> Ke:=matrix([[coeff(Kba[3,1],w[2]),coeff(Kba[3,1],theta[2])],
[coeff(Kba[4,1],w[2]),coeff(Kba[4,1],theta[2])]]);

Ke := matrix([[12*E*J/(l^3), -6*E*J/(l^2)], [-6*E*J...

> Feb:=inverse(Ke);

Feb := matrix([[1/3*l^3/(J*E), 1/2*l^2/(J*E)], [1/2...

Añadimos la flecha por cortante y tenemos la flexibilidad de la solución exacta:

> Feb[1,1] := Feb[1,1]+l/(G*A)

> evalm(Feb);

matrix([[l/(G*A)+1/3*l^3/(J*E), 1/2*l^2/(J*E)], [1/...

> evalm(Fe1)=evalm(Feb);

matrix([[l/(G*A)+1/3*l^3/(J*E), 1/2*l^2/(J*E)], [1/...

Vemos que se obtiene idéntico resultado que antes, pero en este caso no aparece el factor tmp1; .
Veamos el valor de este factor multiplicador, que indica la rigidización artificial de la ménsula, para un caso concreto con secci³n rectangular de ancho
b , canto t y módulo de Poisson nu = 1/4 .

> tmp2(lambda) := subs({J = b*t^3/12, A = 5/6*b*t, G ...

tmp2(lambda) := 5/6*(1+6/5*(2+2*nu)/(lambda^2))*lam...

> tmp2(lambda):=simplify(subs(nu=1/4,tmp2(lambda)));

tmp2(lambda) := 1/3*lambda^2+1

> plot(tmp2(lambda),lambda=1..50);

[Maple Plot]

Viga de Timoshenko con integración reducida

Integrando de la rigidez a cortante

> Kc1:=multiply(transpose(Bc),(G*A)*Bc);

Kc1 := matrix([[G*A/(l^2), -G*A*(x/l-1)/l, -G*A/(l^...

Particularizamos en el ºnico punto de integración que emplearemos, en el centro del elemento ( x = l/2 )

> Kc1:=map(z->subs(x=l/2,z),Kc1);

Kc1 := matrix([[G*A/(l^2), 1/2*G*A/l, -G*A/(l^2), 1...

Integrando:

> Kc1:=map(z->int(z,x=0..l),Kc1);

Kc1 := matrix([[G*A/l, 1/2*G*A, -G*A/l, 1/2*G*A], [...

Comparación entre la integraci³n completa ( Kc ) y la reducida de 1 punto ( Kc1 )

> evalm(Kc)=evalm(Kc1);

matrix([[G*A/l, 1/2*G*A, -G*A/l, 1/2*G*A], [1/2*G*A...

> Kt1:=Kf+Kc1;

Kt1 := Kf+Kc1

Repetimos el ejemplo anterior de la ménsula:

> Kta:=multiply(Kt1,a);

Kta := matrix([[G*A*w[1]/l+1/2*G*A*theta[1]-G*A*w[2...

Las ecuaciones que interesan son las dos ºltimas (las primeras sirven para dar las reacciones)

> Kta[3,1]=carga[3,1];
Kta[4,1]=carga[4,1];

-G*A*w[1]/l-1/2*G*A*theta[1]+G*A*w[2]/l-1/2*G*A*the...

1/2*G*A*w[1]+(-E*J/l+1/4*l*G*A)*theta[1]-1/2*G*A*w[...

Sustituyendo las condiciones del empotramiento en 1

> tmp:=map(z->subs(w[1]=0,theta[1]=0,z),Kta);

tmp := matrix([[-G*A*w[2]/l+1/2*G*A*theta[2]], [-1/...

Extraemos los coeficientes que dan la matriz de rigidez efectiva para los 2 g.d.l. del problema:

> Ke:=matrix([[coeff(Kta[3,1],w[2]),coeff(Kta[3,1],theta[2])],
[coeff(Kta[4,1],w[2]),coeff(Kta[4,1],theta[2])]]);

Ke := matrix([[G*A/l, -1/2*G*A], [-1/2*G*A, E*J/l+1...

La inversa es la flexibilidad

> Fe:=map(expand,inverse(Ke));

Fe := matrix([[l/(G*A)+1/4*l^3/(J*E), 1/2*l^2/(J*E)...

Comparación con la flexibilidad exacta: ya no aparece el término responsable del bloqueo, aunque la soluci³n difiere en el primer t©rmino (de 1/3 a 1/4 ). Esto origina un error que a medida que la discretización es más fina, se reduce. Si emple¡semos un s³lo elemento para la ménsula, en el límite de esbeltez infinita, la flecha calculada ser­a 3/4 de la exacta. (Como hemos visto, esto es mucho más dram¡tico sin integración reducida: ¡la ménsula se bloquea y la flecha sale nula!)

> evalm(Feb)=evalm(Fe);

matrix([[l/(G*A)+1/3*l^3/(J*E), 1/2*l^2/(J*E)], [1/...

>