trabalhos de ef

32
21 UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA MECÂNICA Disciplina: Método de Elementos Finitos Prof. Aldemir Aparecido Cavallini Junior Programas de Elementos Finitos feito no Matlab Alunos: Lucas Delabona Nagib 11021EMC021 João Lucas Gomes Perez 11021EMC033

Upload: lucasnagib

Post on 22-Dec-2015

220 views

Category:

Documents


1 download

DESCRIPTION

elementos finitos

TRANSCRIPT

Page 1: Trabalhos de EF

UNIVERSIDADE FEDERAL DE UBERLÂNDIAFACULDADE DE ENGENHARIA MECÂNICA

Disciplina: Método de Elementos FinitosProf. Aldemir Aparecido Cavallini Junior

Programas de Elementos Finitos feito no Matlab

Alunos:

Lucas Delabona Nagib 11021EMC021

João Lucas Gomes Perez 11021EMC033

15 dezembro de 2014, Uberlândia-MG

1

Page 2: Trabalhos de EF

Sumário

Exercício EIXO_TORCAO:.....................................................................................................................................3

Exercício ESCOA_RP:..............................................................................................................................................4

Exercício TRANSF_CALOR:.....................................................................................................................................6

Exercício VIGA_ESTATICO_COM_ANALISE_DE_CONVERGENCIA:.................................................................7

Exercício de Flambagem para determinação dos deslocamentos laterais de uma viga para diferentes valores de carga axial (compressão e tração):.........................................12

Exercício de Análise Modal de uma viga com força axial que varia de tração a compressão e convergência:............................................................................................................................18

Exercício de Análise Harmônica de uma viga com força axial que varia de tração a compressão e convergência:............................................................................................................................22

2

Page 3: Trabalhos de EF

Exercício EIXO_TORCAO:

clc; clear all; close all;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Programa EIXOS_TORCAO.M para análise estática por EF de um eixo que% irá ser torcionado%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENTRADA DE DADOSR = 0.05; % Raio da barra circular [m]% G -> módulo de cisalhamento do Aço = 75,8 GPa% G(N/m^2) J(m^4) L(m)propriedades=[ 75.8e9 pi*(R^4)/2 0.5 75.8e9 pi*(R^4)/2 0.5 75.8e9 pi*(R^4)/2 0.5]; T=300;% Torque aplicado [N.m]% número de elementos[nb_ele,dummy]=size(propriedades);% número de nósnb_node = nb_ele+1;% matriz de conectividademat_conect=[1 2 2 3 3 4];% condições de contorno nos gdl impostoscond_cont=[1 0];% torques externos aplicados nos gld livrestorques_aplic= [ 2 T 3 1.7*T 4 0.8*T]; % valores em Newtons x Metros% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBALK_global=zeros(nb_node);for ii=1:nb_elecoef=propriedades(ii,1)*propriedades(ii,2)/propriedades(ii,3);K_elementar=coef*[1 -1 ; -1 1];mat_ident=eye(nb_node);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:)];K_global=K_global+mat_transf'*K_elementar*mat_transf;end % IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA% MATRIZ DE RIGIDEZ% identificação dos gdl livres e gdl impostosgdl_livres = torques_aplic(:,1);gdl_impostos = cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_global(gdl_livres,gdl_livres);

3

Page 4: Trabalhos de EF

K_li=K_global(gdl_livres,gdl_impostos);K_ii=K_global(gdl_impostos,gdl_impostos);% construção dos vetores de torque nos gdl livres e de deslocamentos% angulares nos gdl impostost_liv=torques_aplic(:,2);teta_imp=cond_cont(:,2);% CÁLCULO DOS DESLOCAMENTOS ÂNGULARES NOS GDL LIVRES E TORQUE DE REAÇÃO NOS% GDL IMPOSTOSteta_liv=inv(K_ll)*(t_liv-K_li*teta_imp)t_imp=K_li'*teta_liv+K_ii*teta_impteta_completo=zeros(nb_node,1);teta_completo(gdl_livres)=teta_liv;teta_completo(gdl_impostos)=teta_imp;delta_d=diff(teta_completo);for ii=1:nb_eleTorque(ii)=delta_d(ii)*propriedades(ii,1)*propriedades(ii,2)/propriedades(ii,3);end% APRESENTAÇÃO DOS RESULTADOSdisp('Deslocamento Angular(Rad)');teta_completodisp('Torque na secção engastada(N.m)');t_impdisp('Torque na seção livre(N.m)');Torque

RESULTADOS:

Nó Teta (rad) Torque (N.m) 1 0 -10502 0.0007 1050 3 0.001 750 4 0.0014 240

Exercício ESCOA_RP:

clc; clear all; close all;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Programa ESCOA_RP.M para análise de um escoamento de fluidos em regime% permanente%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENTRADA DE DADOS% R -> Raio da tubulação [m]% u -> Viscosidade do fluido [N.s/m^2]% L -> Comprimento da tubulação [m]% Utilizando como fluido o óleo de Soja a 37,8ºC com viscosidade de% v = 6,0 (cSt) v = u/d (viscosidade cinemática = viscosidade / densidade)% densidade = 875 Kg/m³% v = 6e-6 [m²/s] -> u = 6e-6 * 875 = 5,25e-3% R(m^4) u(N.s/m^2) L(m)propriedades = [ 0.05^4 5.25e-3 0.20; 0.06^4 5.25e-3 0.22; 0.08^4 5.25e-3 0.23; 0.09^4 5.25e-3 0.25];Q = 3e2; % Vazão [m³/s]% número de elementos[nb_ele,dummy]=size(propriedades);% número de nósnb_node = nb_ele+1;% matriz de conectividademat_conect=[1 2 2 3

4

Page 5: Trabalhos de EF

3 4 4 5];% condições de contorno nos gdl impostoscond_cont=[1 2e5]; %Pressãs na entrada % Vazões medidas internas nos gld livresQ_medida= [ 2 3*Q 3 1.6*Q 4 1.2*Q 5 Q]; % valores em m³/s% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBALK_global=zeros(nb_node);for ii=1:nb_elecoef=(pi/8)*propriedades(ii,1)/(propriedades(ii,2)*propriedades(ii,3));K_elementar=coef*[1 -1 ; -1 1];mat_ident=eye(nb_node);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:)];K_global=K_global+mat_transf'*K_elementar*mat_transf;end % IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA% MATRIZ DE RIGIDEZ% identificação dos gdl livres e gdl impostosgdl_livres=Q_medida(:,1);gdl_impostos = cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_global(gdl_livres,gdl_livres);K_li=K_global(gdl_livres,gdl_impostos);K_ii=K_global(gdl_impostos,gdl_impostos);% construção dos vetores de forças nos gdl livres e de deslocamentos nos% gdl impostosq_liv=Q_medida(:,2);p_imp=cond_cont(:,2);% CÁLCULO DOS DESLOCAMENTOS NOS GDL LIVRES E FORÇAS DE REAÇÃO NOS GDL% IMPOSTOSp_liv=inv(K_ll)*(q_liv-K_li*p_imp)q_imp=K_li'*p_liv+K_ii*p_impp_completo=zeros(nb_node,1);p_completo(gdl_livres)=p_liv;p_completo(gdl_impostos)=p_imp;delta_d=diff(p_completo);for ii=1:nb_elevazao(ii)=delta_d(ii)*(pi/8)*propriedades(ii,1)/(propriedades(ii,2)*propriedades(ii,3));end% APRESENTAÇÃO DOS RESULTADOSdisp('Pressões(Pa): ');p_completodisp('Vazão na entrada(m³/s): ');-q_imp % Coloca-se sinal de negativo pq se não a vazão vai ser a de reação(lado oposto ao escoamento)disp('Vazão média em cada tubulação (m³/s): ');vazao

Resultados:

5

Elemento Vazão média em cada tubulação (x1e+03) (m³/s)

1 2.04002 1.14003 0.66004 0.3000

Nó Pressões (Pa)(x1e+06)

1 0.20002 1.0727 3 1.33144 1.38105 1.3963

Page 6: Trabalhos de EF

Exercício TRANSF_CALOR:clc; clear all; close all;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Programa TRANSF_CALOR.M para análise de transferência de calor através% de EF.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENTRADA DE DADOS% K -> Coeficiente de Condutividade Térmica do Aço = 52,9 W/(m.K)% A -> Área da seção tranversal% L -> Comprimento dos segmentos% K( W/(m.K) ) A(m^2) L(m)propriedades=[ 52.9 25e-4 0.5; 2*52.9 5e-4 0.4; 52.9 10e-4 0.3; 1.5*52.9 15e-4 0.5];% número de elementos[nb_ele,dummy]=size(propriedades);% número de nósnb_node = nb_ele+1;% matriz de conectividademat_conect=[1 2 2 3 3 4 4 5];% condições de contorno nos gdl impostos ( Temperatura nas extremidades )cond_cont=[1 373 5 293]; % Quantidade de calor aplicada nos gld livresQ = 10000; % [Watt]qcalor_aplic= [ 2 3*Q 3 Q 4 2*Q]; % valores em Watts% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBALK_global=zeros(nb_node);for ii=1:nb_elecoef=propriedades(ii,1)*propriedades(ii,2)/propriedades(ii,3);K_elementar=coef*[1 -1 ; -1 1];mat_ident=eye(nb_node);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:)];K_global=K_global+mat_transf'*K_elementar*mat_transf;end % IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA% MATRIZ DE RIGIDEZ% identificação dos gdl livres e gdl impostosgdl_livres=qcalor_aplic(:,1);gdl_impostos = cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_global(gdl_livres,gdl_livres);K_li=K_global(gdl_livres,gdl_impostos);

6

Page 7: Trabalhos de EF

K_ii=K_global(gdl_impostos,gdl_impostos);% construção dos vetores de quantidade de calor nos gdl livres e de % temperatura nos gdl impostosq_liv = qcalor_aplic(:,2); t_imp = cond_cont(:,2);% CÁLCULO DAS TEMPERATURAS NOS GDL LIVRES E QUANTIDADE DE CALOR NOS GDL% IMPOSTOSt_liv=inv(K_ll)*(q_liv-K_li*t_imp)q_imp=K_li'*t_liv+K_ii*t_impt_completo=zeros(nb_node,1);t_completo(gdl_livres)=t_liv;t_completo(gdl_impostos)=t_imp;delta_d=diff(t_completo);for ii=1:nb_eleTemp(ii)=delta_d(ii)*propriedades(ii,1)*propriedades(ii,2)/propriedades(ii,3);end% APRESENTAÇÃO DOS RESULTADOSdisp('Temperaturas (K)');t_completodisp('Quantidade de Calor nas extremidades(W)');q_impdisp('Temperatura média de cada placa(K)');Temp

Resultados:

Considerando que a placa foi submetida a quantidade de calor conhecida nos nós interiores e os nós exteriores foi dada temperaturas pré-definidas.

Nó Temperaturas [K] (x1e+05)

Quantidade de Calor [W](x1 e+04)

1 0.0037 -3.32642 1.2613 33 1.5081 14 1.1261 25 0.0029 -2.6736

ElementoTemperatura média de cada placa[K] (x1e+04)

1 3.3264 2 0.3264 3 -0.6736 4 -2.6736

Exercício VIGA_ESTATICO_COM_ANALISE_DE_CONVERGENCIA:

% Programa para análise estática por EF de vigas retas - Teoria de Euler-% Bernoulli clc; close all; clear% ENTRADA DE DADOS% Propriedades físicas e geométricas dos elementos % ll_1 = input('\nEntre com a quantidade de elementos na parte livre da viga: ');

7

Page 8: Trabalhos de EF

% ll_2 = input('\nEntre com a quantidade de elementos na parte do meio da viga: ');% ll_3 = input('\nEntre com a quantidade de elementos na parte engastada da viga: ');% F_Aplicada = input('\nEntre com o valor da força que deseja aplicar em Newton: '); ll_1 = 2;ll_2 = 2;ll_3 = 2;F_Aplicada = 30 ; % F(N)E=2.10e11; % E(N/m^2)I=5/12*1e-8; % I(m^4)q=0; %q(N/m)L_parte=(2/3); %L(m)ymax=0.005; % ymaxll=ll_1+ll_2+ll_3;erro = zeros(ll,1);nb_ele= 0;while ll ~= nb_elepropriedades = zeros(ll,5);for i=1:1:ll_1 for j=1:1:5 if j==1 propriedades(i,j)=E; end if j==2 propriedades(i,j)=I; end if j==3 propriedades(i,j)=(L_parte/ll_1); end if j==4 propriedades(i,j)=q; end if j==5 propriedades(i,j)=ymax; end endendfor i=(ll_1+1):1:(ll_1+ll_2) for j=1:1:5 if j==1 propriedades(i,j)=E; end if j==2 propriedades(i,j)=I; end if j==3 propriedades(i,j)=(L_parte/ll_2); end if j==4 propriedades(i,j)=q; end if j==5 propriedades(i,j)=ymax; end endendfor i=(ll_1+ll_2+1):1:ll for j=1:1:5 if j==1 propriedades(i,j)=E; end if j==2

8

Page 9: Trabalhos de EF

propriedades(i,j)=I; end if j==3 propriedades(i,j)=(L_parte/ll_3); end if j==4 propriedades(i,j)=q; end if j==5 propriedades(i,j)=ymax; end endend% número de elementos[nb_ele,dummy]=size(propriedades);nb_nos=nb_ele+1;% número de graus de liberdade em nível elementar e em nível globalnb_gdl_ele = 4;nb_gdl_glo = nb_nos*2;% geração da matriz de conectividade - graus de liberdade ordenados segundo:% 1: nó 1, direção y% 2: nó 1, direção theta% 3: nó 2, direção y% 4: nó 2, direção theta, ...% construção da matriz de conectividadet=1;for i=1:1:nb_ele for j=1:1:4 if i==1 mat_conect(i,j)=t; t=t+1; end if j==1 && i>1 mat_conect(i,j)=t-2; t=t-1; end if j>1 && i>1 mat_conect(i,j)=t; t=t+1; end endend% condições de contorno nos gdl impostoscond_cont=[ 1 0 2 0];% forças externas aplicadas nos gld livres valores em Newtonslinha=nb_ele*2;t=3;forcas_aplic = zeros(linha,2);for i=1:1:linha for j=1:1:2 if j==2 && i<(linha-1) forcas_aplic(i,j)=0; end if j==2 && i==(linha-1) forcas_aplic(i,j)=F_Aplicada; end if j==1 forcas_aplic(i,j)=t; t=t+1; end

9

Page 10: Trabalhos de EF

endend% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBAL% CONSTRUÇÃO DOS VETORES DE ESFORÇOS NODAIS ASSOCIADOS AO CARREGAMENTO% TRANSVERSAL DISTRIBUÍDOK_glob=zeros(nb_gdl_glo);F_glob=zeros(nb_gdl_glo,1);for ii=1:nb_eleK_ele=zeros(nb_gdl_ele);E=propriedades(ii,1);I=propriedades(ii,2);L=propriedades(ii,3);coef_flex_k=E*I/L^3;

K_ele=coef_flex_k*[12 6*L -12 6*L 0 4*L^2 -6*L 2*L^2 0 0 12 -6*L 0 0 0 4*L^2];K_ele=K_ele'+K_ele-diag(diag(K_ele));mat_ident=eye(nb_gdl_glo);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:); ...mat_ident(mat_conect(ii,3),:); mat_ident(mat_conect(ii,4),:)]; ...K_glob=K_glob+mat_transf'*K_ele*mat_transf;f_ele=zeros(nb_gdl_ele,1);q=propriedades(ii,4);f_ele=0*[q*L/2 q*L^2/12 q*L/2 -q*L^2/12]';F_glob=F_glob+mat_transf'*f_ele;end% IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA MATRIZ DE % RIGIDEZ%identificacao dos gdl livres e gdl impostosgdl_livres=forcas_aplic(:,1);gdl_impostos = cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_glob(gdl_livres,gdl_livres);K_li=K_glob(gdl_livres,gdl_impostos);K_ii=K_glob(gdl_impostos,gdl_impostos);K_glob=K_ll;%% construção dos vetores de forças nos gdl livres e de deslocamentos nos gdl impostosf_liv=forcas_aplic(:,2)+F_glob(gdl_livres,1);d_imp=cond_cont(:,2);% CÁLCULO DOS DESLOCAMENTOS NOS GDL LIVRES E FORÇAS DE REAÇÃO NOS GDL IMPOSTOSd_liv=inv(K_ll)*(f_liv-K_li*d_imp);des_global=zeros(nb_gdl_glo,1);des_global(cond_cont(:,1))=cond_cont(:,2);des_global(forcas_aplic(:,1))=d_liv;disp('Deslocamentos (em metros)');desloc_trans=des_global(1:2:nb_nos*2-1) for i=1:1:nb_eleerro(i,1) = abs(desloc_trans(i+1,1)) - abs(desloc_trans(i,1));end if erro(ll_1,1)>= 10e-4 ll_1=ll_1+1;endif erro((ll_1+ll_2),1)>= 10e-4 ll_2=ll_2+1;endif erro(nb_ele,1)>= 10e-4 ll_3=ll_3+1;end

10

Page 11: Trabalhos de EF

ll=ll_1+ll_2+ll_3;end disp('Rotação da seção transversal(em rad)');rot=des_global(2:2:nb_nos*2)disp('Reacoes de apoio (em N) ');f_imp=(K_li'*d_liv+K_ii*d_imp)% CÁLCULO DAS TENSÕES NORMAIS DE FLEXÃO MÁXIMAS NOS NÓSfor ii=1:nb_eleE=propriedades(ii,1);L=propriedades(ii,3);y_max=propriedades(ii,5);u_e= des_global(mat_conect(ii,:));x=0;psi2_0=[-6/L^2+12*x/L^3 -4/L+6*x/L^2 6/L^2-12*x/L^3 -2/L+6*x/L^2];x=L;psi2_L=[-6/L^2+12*x/L^3 -4/L+6*x/L^2 6/L^2-12*x/L^3 -2/L+6*x/L^2];mat_sigma(ii,1)=-E*psi2_0*u_e*y_max;mat_sigma(ii,2)=-E*psi2_L*u_e*y_max;endX(1,1) = 0;for s=2:nb_nos X(s,1) = propriedades(s-1,3);endfor s=1:nb_nos-1 X(s+1,1) = X(s,1)+X(s+1,1);endsigma_disp1=[mat_sigma(:,1);0];sigma_disp2=[0;mat_sigma(:,2)];sigma_disp=(sigma_disp1+sigma_disp1)/2;disp('Tensões normais (em N/m^2)');sigma_disp% Plotagem dos deslocamentosfigure(1)subplot(1,3,1)plot(X,desloc_trans)[cmin,cmax] = caxis;caxis([0,cmax])title('DESLOCAMENTOS TRANSVERSAIS')ylabel('Deslocamento (m)');xlabel('x(m)')% plotagem das rotaçõessubplot(1,3,2)plot(X,rot)title('ROTAÇÕES DAS SEÇÕES TRANSVERSAIS')ylabel('Rotação (rad)');xlabel('x(m)')% plotagem das tensõessubplot(1,3,3)plot(X,sigma_disp)title('TENSÕES NORMAIS')ylabel('Tensão normal de flexão (N/m^2)');xlabel('x(m)')RESULTADOS:

Observamos que quanto mais distante do apoio fixo, maior a quantidade de nós é necessário, ou seja, a região mais flexível da viga precisa de uma quantidade maior de nós para ficar com uma boa modelação.

Para os condições impostas acima, resultou em um total de 112 nós, os quais 25 estava na região próxima ao apoio, 41 nós estava distribuído na parte central da viga e 46 nós estava concentrado na região livre da viga.

Gráfico contendo os deslocamentos, rotações e tensões normais:

11

Page 12: Trabalhos de EF

Exercício de Flambagem para determinação dos deslocamentos laterais de uma viga para diferentes valores de carga axial (compressão e tração):%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Programa para análise de estabilidade de colunas - Teoria de Euler-Bernoulli%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENTRADA DE DADOS% propriedades dos elementos% [A(m^2) E(N/m^2) I(m^4) L(m)close all; clear all; clc;propriedades = [5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2;5e-4 2.10e11 5/12*1e-8 0.2];% número de elementos[nb_ele,dummy]=size(propriedades);nb_nos=nb_ele+1;% número de graus de liberdade em nível elementar e em nível globalnb_gdl_ele = 4;nb_gdl_glo = nb_nos*2;% matriz de conectividade - graus de liberdade ordenados segundo:% 1: nó 1, direção y% 2: nó 1, direção theta% 3: nó 2, direção y% 4: nó 2, direção theta, ...% construção da matriz de conectividademat_conect=[ 1 2 3 43 4 5 65 6 7 87 8 9 109 10 11 1211 12 13 1413 14 15 1615 16 17 18

12

Page 13: Trabalhos de EF

17 18 19 2019 20 21 22];% condições de contorno nos gdl impostoscond_cont=[ 1 02 0;21 0];% forças externas aplicadas nos gld livres valores em Newtonsforcas_aplic= [ 3 0;4 0;5 0;6 0;7 0;8 0;9 0;10 0;11 0;12 0;13 0;14 0;15 0;16 0;17 0;18 0;19 0;20 0;22 0];% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBAL%K_glob=zeros(nb_gdl_glo);G_glob=zeros(nb_gdl_glo);%for ii=1:nb_eleK_ele=zeros(nb_gdl_ele);E=propriedades(ii,2);I=propriedades(ii,3);L=propriedades(ii,4);coef_flex_k=E*I/L^3;K_ele=coef_flex_k*[12 6*L -12 6*L0 4*L^2 -6*L 2*L^20 0 12 -6*L0 0 0 4*L^2];G_ele= [6/(5*L) 1/10 -6/(5*L) 1/10;0 2*L/15 -1/10 -L/300 0 6/(5*L) -1/100 0 0 2*L/15];K_ele=K_ele'+K_ele-diag(diag(K_ele));G_ele=G_ele'+G_ele-diag(diag(G_ele));mat_ident=eye(nb_gdl_glo);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:); ...mat_ident(mat_conect(ii,3),:); mat_ident(mat_conect(ii,4),:)]; ...K_glob=K_glob+mat_transf'*K_ele*mat_transf;G_glob=G_glob+mat_transf'*G_ele*mat_transf;end% IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA MATRIZ DE RIGIDEZ%identificacao dos gdl livres e gdl impostosgdl_livres=forcas_aplic(:,1);gdl_impostos=cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_glob(gdl_livres,gdl_livres);G_ll=G_glob(gdl_livres,gdl_livres);% DETERMINAÇÃO DOS AUTOVALORES

13

Page 14: Trabalhos de EF

carga_flamb=eig(K_ll,G_ll); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ANALISE ESTATICA DA VIGA PARA VARIAÇOES DE CARGA DE COMPRESSÃO / TRAÇÃO%Carga axial aplicadacarga_flamb_max=carga_flamb(1);for f=1:7carga_flamb_ap=[carga_flamb_max carga_flamb_max/2 carga_flamb_max/4 0 -carga_flamb_max/4 -carga_flamb_max/2 -carga_flamb_max];% Força externa aplicada no nó 11 da vigat=3;for i=1:nb_ele*2-1 for j=1:2 if j==1 && t~=21 forcas_aplic_horizontal(i,j)=t; t=t+1; elseif j==2 && i==11 %Força de 10N aplicada no nó 11 da viga forcas_aplic_horizontal(i,j)=10; elseif j==1 && t==21 forcas_aplic_horizontal(i,j)=22; t=t+1; else forcas_aplic_horizontal(i,j)=0; end endend% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBAL% CONSTRUÇÃO DOS VETORES DE ESFORÇOS NODAIS ASSOCIADOS AO CARREGAMENTO% TRANSVERSAL DISTRIBUÍDOK_glob=zeros(nb_gdl_glo);G_glob=zeros(nb_gdl_glo);for ii=1:nb_eleK_ele=zeros(nb_gdl_ele);E=propriedades(ii,2);I=propriedades(ii,3);L=propriedades(ii,4);coef_flex_k=E*I/L^3; K_ele=coef_flex_k*[12 6*L -12 6*L0 4*L^2 -6*L 2*L^20 0 12 -6*L0 0 0 4*L^2];K_ele=K_ele'+K_ele-diag(diag(K_ele)); G_ele= [6/(5*L) 1/10 -6/(5*L) 1/10;0 2*L/15 -1/10 -L/300 0 6/(5*L) -1/100 0 0 2*L/15];G_ele=G_ele'+G_ele-diag(diag(G_ele)); mat_ident=eye(nb_gdl_glo);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:); ...mat_ident(mat_conect(ii,3),:); mat_ident(mat_conect(ii,4),:)]; ...K_glob=K_glob+mat_transf'*K_ele*mat_transf;G_glob=G_glob+mat_transf'*G_ele*mat_transf; end% IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA MATRIZ DE RIGIDEZ

14

Page 15: Trabalhos de EF

%identificacao dos gdl livres e gdl impostosgdl_livres=forcas_aplic(:,1);gdl_impostos = cond_cont(:,1);% construção das submatrizes de rigidezK_ll=K_glob(gdl_livres,gdl_livres);K_li=K_glob(gdl_livres,gdl_impostos);K_ii=K_glob(gdl_impostos,gdl_impostos);K_glob=K_ll; G_ll=G_glob(gdl_livres,gdl_livres);G_li=G_glob(gdl_livres,gdl_impostos);G_ii=G_glob(gdl_impostos,gdl_impostos);G_glob=G_ll;%% construção dos vetores de forças nos gdl livres e de deslocamentos nos gdl impostosf_liv=forcas_aplic_horizontal(:,2);d_imp=cond_cont(:,2); % CÁLCULO DOS DESLOCAMENTOS NOS GDL LIVRES E FORÇAS DE REAÇÃO NOS GDL IMPOSTOSd_liv=inv(K_ll+G_ll*carga_flamb_ap(f))*(f_liv-K_li*d_imp-G_li*d_imp*carga_flamb_ap(f));des_global=zeros(nb_gdl_glo,1);des_global(cond_cont(:,1))=cond_cont(:,2);des_global(forcas_aplic_horizontal(:,1))=d_liv;desloc_trans=des_global(1:2:nb_nos*2-1);rot=des_global(2:2:nb_nos*2);f_imp=(K_li'*d_liv+K_ii*d_imp+G_li'*d_liv*carga_flamb_ap(f) +G_ii*d_imp*carga_flamb_ap(f)); % Eixo X, comprimento da viga (2m)for i=1:nb_nos if i==1 X(i)=0; else X(i)=X(i-1)+L; endend % Plotagem dos deslocamentosfigure(f)plot(X,desloc_trans)title('DESLOCAMENTOS TRANSVERSAIS')ylabel('Deslocamento (m)');xlabel('x(m)');end

RESULTADOS:

Pode-se observar com esse programa que os deslocamentos obtidos nas vigas modeladas (engastatadas e apoiadas) com uma carga axial e uma carga lateral (aplicada no gdl 11, nó 6) se eleva quando a carga axial se torna mais negativa (compressão). Pode-se observar inicialmente que com uma carga positiva (de valor igual ao da menor carga crítica de flambagem obtida pelo programa em sala, porém positivo, ou seja, de tração) o deslocamento é da ordem de 10^-4 metros, e com a diminuição dessa carga desse valor até a 6º força (metade do valor da menor carga crítica de flambagem divido por 2 e negativo, ou seja, compressão) promove um aumento razoável do deslocamento lateral (10^-3 metros, ou seja, em milímetros). Além disso, como esperado, caso a força axial seja igual a força mínima de flambagem e exista um carregamento lateral, a viga irá flambar, caso ocorrido com a 7º força que é igual a menor carga crítica de flambagem negativa (compressão), no qual os deslocamentos laterais se tornaram imensos (da ordem de metros), indicando que a viga falhou por flambagem.

15

Page 16: Trabalhos de EF

Os gráficos das 7 forças aplicadas estão, em ordem da mais positiva para a mais negativa:

16

Page 17: Trabalhos de EF

Figura 7 -> Flambagem

17

Page 18: Trabalhos de EF

Exercício de Análise Modal de uma viga com força axial que varia de tração a compressão e convergência:

% ENTRADA DE DADOSclc; clear all; close all;% propriedades físicas e geométricas dos elementos (discretização com 5% elementos)% [A(m^2) E(N/m^2) I(m^4) L(m) rho(kg/m)]erro=1;nb_ele=1;freq1=0;while erro >=10^-7nb_ele_final=nb_ele;A=5e-4;E=2.1e11;I=5/12*1e-8;L=2;rho=3.9;for i=1:nb_ele for j=1:5 if j==1 propriedades(i,j)=A; elseif j==2 propriedades(i,j)=E; elseif j==3 propriedades(i,j)=I; elseif j==4 propriedades(i,j)=L/nb_ele; else propriedades(i,j)=rho; end endend% número de nósnb_nos=nb_ele+1;% número de graus de liberdade em nível elementar e em nível globalnb_gdl_ele = 4;nb_gdl_glo = nb_nos*2;% matriz de conectividade - graus de liberdade ordenados segundo:% 1: nó 1, direção y% 2: nó 1, direção theta% 3: nó 2, direção y% 4: nó 2, direção theta, ...% construção da matriz de conectividades=1;for i=1:nb_ele for j=1:nb_gdl_ele if i==1 mat_conect(i,j)=s; s=s+1; elseif i>1 && j==1 mat_conect(i,j)=s-2; elseif i>1 && j==2 mat_conect(i,j)=s-1; else mat_conect(i,j)=s; s=s+1; end endend% condições de contorno nos gdl impostos

18

Page 19: Trabalhos de EF

cond_cont=[ 1 02 0];% gld livres / forcas aplicadast=3;for i=1:nb_ele*2 for j=1:2 if j==1 forcas_aplic(i,j)=t; t=t+1; else forcas_aplic(i,j)=0; end endend% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBALK_glob=zeros(nb_gdl_glo);M_glob=zeros(nb_gdl_glo);G_glob=zeros(nb_gdl_glo);for ii=1:nb_eleK_ele=zeros(nb_gdl_ele);M_ele=zeros(nb_gdl_ele);A=propriedades(ii,1);E=propriedades(ii,2);I=propriedades(ii,3);L=propriedades(ii,4);rho=propriedades(ii,5);coef_flex_k=E*I/L^3;coef_flex_m=rho*L/420; K_flex=coef_flex_k*[12 6*L -12 6*L0 4*L^2 -6*L 2*L^20 0 12 -6*L0 0 0 4*L^2];M_flex=coef_flex_m*[156 22*L 54 -13*L0 4*L^2 13*L -3*L^20 0 156 -22*L0 0 0 4*L^2];G_ele= [6/(5*L) 1/10 -6/(5*L) 1/10;0 2*L/15 -1/10 -L/300 0 6/(5*L) -1/100 0 0 2*L/15]; K_ele=K_flex'+K_flex-diag(diag(K_flex));M_ele=M_flex'+M_flex-diag(diag(M_flex));G_ele=G_ele'+G_ele-diag(diag(G_ele)); mat_ident=eye(nb_gdl_glo);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:); ...mat_ident(mat_conect(ii,3),:); mat_ident(mat_conect(ii,4),:)]; K_glob=K_glob+mat_transf'*K_ele*mat_transf;M_glob=M_glob+mat_transf'*M_ele*mat_transf;G_glob=G_glob+mat_transf'*G_ele*mat_transf; end% IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA MATRIZ DE%RIGIDEZ%ANALISE MODAL%identificacao dos gdl livresgdl_livres=forcas_aplic(:,1);% construção das submatrizes de rigidezK_ll=K_glob(gdl_livres,gdl_livres);

19

Page 20: Trabalhos de EF

M_ll=M_glob(gdl_livres,gdl_livres);G_ll=G_glob(gdl_livres,gdl_livres);K_glob=K_ll;M_glob=M_ll;G_glob=G_ll; P=0; %apenas para convergencian_modos=nb_ele;[vet,val]=eig(K_glob+P*G_glob,M_glob);freqs=sqrt(diag(val))/2/pi;[freqs,ord]=sort(freqs);%disp('Frequências naturais (Hz): '); freqsmodos=vet(:,ord);freqs=freqs(1:n_modos);modos=modos(:,1:n_modos);%disp('Modos naturais: '); modosfreq2=freq1;freq1=min(freqs);erro=abs(freq1-freq2);nb_ele=nb_ele+1;endfor f=1:5P=[-100 -50 0 50 100]; %variação da força entre 100N de traçao e compressaon_modos=10; %10 modos de vibrar[vet,val]=eig(K_glob+P(f)*G_glob,M_glob);freqs=sqrt(diag(abs(val)))/2/pi;[freqs,ord]=sort(freqs);modos=vet(:,ord); %modos de vibrarfreqs=freqs(1:n_modos);disp('Frequências naturais (Hz): '); freqsmodos=modos(:,1:n_modos);disp('Modos naturais: '); modos[n_gdl,dummy]=size(K_glob);des_modos=modos(1:2:n_gdl,:);des_modos=[zeros(1,n_modos); des_modos];subplot(2,3,f)plot(des_modos)% construção dos gráficos% freq_ini=0;% freq_fin=1000;% gdl_rep=1;% gdl_forca=nb_nos; % vet_freq=linspace(freq_ini,freq_fin,1000);% for ii=1:1000% omg=2*pi*vet_freq(ii);% H=inv(K_glob+P(f)*G_glob-omg^2*(M_glob));% H_i_j(ii)=H(gdl_rep,gdl_forca);% end% subplot(2,3,f)% semilogy(vet_freq,abs(H_i_j),'b');% xlabel('Frequência (Hz)')% ylabel('Amplitude (dB), ref.=1')% gridend

20

Page 21: Trabalhos de EF

RESULTADOS:

Pode-se notar que com variação da carga axial aplicada no elemento, o resultado da análise modal se altera. Nos modos de vibrar, a diferença entre os valores com cargas axiais de tração, compressão e nulas são bem pequenos, geralmente na 3º casa decimal. Já as frequências naturais são mais afetadas pela carga axial aplicada, aumentando consideravelmente quanto maior o valor da força aplicada (em tração) e diminuindo consideravelmente quanto mais negativo for a força axial aplicada (compressão). Pode-se dizer que isso ocorre pois, com a aplicação de uma carga axial de tração na viga, tem-se um aumento relativo de sua “rigidez” (no caso, rigidez aparente, pois leva em conta a força axial aplicada e a matriz de rigidez geométrica – G). O programa leva em conta 10 modos de vibrar (ou seja, contempla 10 frequências naturais).

Tabela de frequências naturais:

P=-100 N P=-50 N P=0 N P=50 N P=100 N1.9044 2.0028 2.0955 2.1831 2.2664

12.9300 13.0315 13.1322 13.2320 13.330936.6007 36.6863 36.7718 36.8570 36.942171.9048 71.9855 72.0660 72.1465 72.2269

119.0054 119.0832 119.1610 119.2387 119.3163177.9409 178.0170 178.0930 178.1689 178.2449248.7968 248.8716 248.9464 249.0211 249.0958331.7107 331.7846 331.8584 331.9322 332.0060426.8881 426.9612 427.0342 427.1073 427.1804534.6128 534.6853 534.7577 534.8302 534.9026

O programa também realiza uma operação de convergência, na qual se considera um erro na menor frequência natural quando a carga aplicada na axial é nula. Foi considerado que esse erro deveria ser menor que 1e-7 a fim de se convergir, e com isso se obteve um número de elementos mínimo de 16. Ou seja, 17 nós.

A fim de avaliar se o programa promove resultados coerentes, nós também realizamos a simulação dessa viga no Ansys com carga axial nula e obtivemos um resultado semelhante para os 10 modos. Tanto no MATLAB quanto no ANSYS foram utilizados 16 números de elementos (o valor que o programa convergiu) e as mesmas propriedades.

Ansys MATLAB2.1004 2.095513.163 13.132236.856 36.771872.227 72.0660119.42 119.1610178.45 178.0930249.42 248.9464332.44 331.8584427.71 427.0342535.50 534.7577

Obs: Abaixo uma imagem ilustrativa do Ansys mostrando o deslocamento da viga ao vibrar com a frequência natural 5, de 119.161 Hz (no caso do Ansys, 119.416 Hz).

21

Page 22: Trabalhos de EF

Exercício de Análise Harmônica de uma viga com força axial que varia de tração a compressão e convergência:

% ENTRADA DE DADOSclc; clear all; close all;% propriedades físicas e geométricas dos elementos (discretização com 5% elementos)% [A(m^2) E(N/m^2) I(m^4) L(m) rho(kg/m)]erro=1;nb_ele=1;H1=0;while erro >=10^-4nb_ele_final=nb_ele;A=5e-4;E=2.1e11;I=5/12*1e-8;L=2;rho=3.9;pripriedades=zeros(nb_ele,5);for i=1:nb_ele for j=1:5 if j==1 propriedades(i,j)=A;

22

Page 23: Trabalhos de EF

elseif j==2 propriedades(i,j)=E; elseif j==3 propriedades(i,j)=I; elseif j==4 propriedades(i,j)=L/nb_ele; else propriedades(i,j)=rho; end endend% número de elementos e de nósnb_nos=nb_ele+1;% número de graus de liberdade em nível elementar e em nível globalnb_gdl_ele = 4;nb_gdl_glo = nb_nos*2;% matriz de conectividade - graus de liberdade ordenados segundo:% 1: nó 1, direção y% 2: nó 1, direção theta% 3: nó 2, direção y% 4: nó 2, direção theta, ...% construção da matriz de conectividades=1;mat_conect=zeros(nb_ele,4);for i=1:nb_ele for j=1:nb_gdl_ele if i==1 mat_conect(i,j)=s; s=s+1; elseif i>1 && j==1 mat_conect(i,j)=s-2; elseif i>1 && j==2 mat_conect(i,j)=s-1; else mat_conect(i,j)=s; s=s+1; end endend% condições de contorno nos gdl impostoscond_cont=[ 1 02 0];% gld livrest=3;for i=1:nb_ele*2 for j=1:2 if j==1 forcas_aplic(i,j)=t; t=t+1; else forcas_aplic(i,j)=0; end endend% CONSTRUÇÃO DAS MATRIZES ELEMENTARES E MONTAGEM DA MATRIZ DE RIGIDEZ GLOBALK_glob=zeros(nb_gdl_glo);M_glob=zeros(nb_gdl_glo);G_glob=zeros(nb_gdl_glo);for ii=1:nb_eleK_ele=zeros(nb_gdl_ele);M_ele=zeros(nb_gdl_ele);A=propriedades(ii,1);

23

Page 24: Trabalhos de EF

E=propriedades(ii,2);I=propriedades(ii,3);L=propriedades(ii,4);rho=propriedades(ii,5);coef_flex_k=E*I/L^3;coef_flex_m=rho*L/420; K_flex=coef_flex_k*[12 6*L -12 6*L0 4*L^2 -6*L 2*L^20 0 12 -6*L0 0 0 4*L^2];M_flex=coef_flex_m*[156 22*L 54 -13*L0 4*L^2 13*L -3*L^20 0 156 -22*L0 0 0 4*L^2];G_ele= [6/(5*L) 1/10 -6/(5*L) 1/10;0 2*L/15 -1/10 -L/300 0 6/(5*L) -1/100 0 0 2*L/15]; K_ele=K_flex'+K_flex-diag(diag(K_flex));M_ele=M_flex'+M_flex-diag(diag(M_flex));G_ele=G_ele'+G_ele-diag(diag(G_ele)); mat_ident=eye(nb_gdl_glo);mat_transf=[mat_ident(mat_conect(ii,1),:); mat_ident(mat_conect(ii,2),:); ...mat_ident(mat_conect(ii,3),:); mat_ident(mat_conect(ii,4),:)]; K_glob=K_glob+mat_transf'*K_ele*mat_transf;M_glob=M_glob+mat_transf'*M_ele*mat_transf;G_glob=G_glob+mat_transf'*G_ele*mat_transf; end% IMPOSIÇÃO DAS CONDIÇÕES DE CONTORNO PELO MÉTODO DO PARTICIONAMENTO DA MATRIZ DE%RIGIDEZ%ANALISE HARMONICA%identificacao dos gdl livresgdl_livres=forcas_aplic(:,1);% construção das submatrizes de rigidezK_ll=K_glob(gdl_livres,gdl_livres);M_ll=M_glob(gdl_livres,gdl_livres);G_ll=G_glob(gdl_livres,gdl_livres);K_glob=K_ll;M_glob=M_ll;G_glob=G_ll; P=0;freq_ini=0;freq_fin=1000;gdl_rep=1; %nó no qual se pega a respostagdl_forca=nb_nos; %nó onde é aplicado a forçavet_freq=linspace(freq_ini,freq_fin,1000);for ii=1:1000 omg=2*pi*vet_freq(ii); H=inv(K_glob+P*G_glob-omg^2*(M_glob)); H_i_j(ii)=H(gdl_rep,gdl_forca);endH2=H1;H1=max(H_i_j);erro=abs(H1-H2);nb_ele=nb_ele+1;end

24

Page 25: Trabalhos de EF

for f=1:5P=[-100 -50 0 50 100];[dummy,n_gdl]=size(K_glob);freq_ini=0;freq_fin=1000;gdl_rep=nb_nos; %nó no qual se pega a respostagdl_forca=nb_nos; %nó onde é aplicado a forçavet_freq=linspace(freq_ini,freq_fin,1000);for ii=1:1000 omg=2*pi*vet_freq(ii); H=inv(K_glob+P(f)*G_glob-omg^2*(M_glob)); H_i_j(ii)=H(gdl_rep,gdl_forca);endsubplot(2,3,f)semilogy(vet_freq,abs(H_i_j),'b');xlabel('Frequência (Hz)')ylabel('Amplitude (dB), ref.=1')gridend

RESULTADOS:

O programa inicialmente converge o número de elementos para um erro na maior amplitude da função de resposta em frequência (FRF), chegando a um número de elementos mínimo de 28 para um erro de 1e-4. Nessa parte do programa, considera-se que a força axial é nula (P=0). A fim dessa parte do programa funcionar, coloca-se como local de aquisição do sinal sempre no 1º gdl após o nó engastado (gdl_rep=1 -> 2º nó) e como local de aplicação da força sempre no ultimo nó (gdl_forca=nb_nos).

Após isso, o programa utiliza 5 forças axiais diferentes (-100, -50, 0, 50, 100) aplicadas à viga engastada e, com isso, se obtém diferentes FRF. Nessa parte do programa, se escolheu arbitrariamente os graus de liberdade de aquisição e aplicação da força iguais (ultimo gdl, nb_nos) e, com isso, se obtem o gráfico da FRF para as 5 cargas axiais diferentes. Leva-se em consideração que as frequências avaliadas estão entre 0 e 1000 Hz.

A partir dos gráficos, pode-se concluir q a variação das frequências naturais (locais de pico dos gráficos da FRF) com diferentes cargas axiais é mínima (como visto na análise modal), sendo maiores na menor frequência (próxima a 2 Hz). Também se conclui que o modo de vibrar de um elemento não possui uma variação muito ampla conforme a carga axial aplicada. (5 gráficos semelhantes em forma).

Cargas de compressão (-100 e -50 N respectivamente da esquerda pra direita)

25

Page 26: Trabalhos de EF

Cargas de tração (50 e 100 N respectivamente da esquerda pra direita)

Carga nula (0N)

Utilizando a mesma viga e fazendo uma analise harmônica no software Ansys, com 28 elementos e com uma carga de 100N aplicada no ultimo nó (ulitmo gdl, assim como no programa do MATLAB) e avaliando também o ultimo nó (assim como no MATLAB), obtém-se a seguinte FRF:

Obs: O intervalo de frequências utilizado no Ansys é exatamente o mesmo do MATLAB (0 a 1000Hz) e a força axial é nula.

26

Page 27: Trabalhos de EF

Desse modo, pode-se afirmar que o programa do matlab tem um aproximação boa com a viga real (visto que os gráficos são semelhantes, principalmente nos pontos de pico que, no caso, são as frequências naturais).

Obs: O valor das amplitudes é diferente pois no MATLAB se plota a FRF em si (deslocamento/ força ou seja, saída/entrada) enquanto no Ansys foi plotado o valor dos deslocamentos do último nó em relação a força de 100N aplicada, ou seja, se plotou apenas o deslocamento (UY_2, como foi chamado no software). Mas observa-se que a forma dos dois gráficos são semelhantes.

27