Você está na página 1de 5

23 de outubro de 20222

1º Trabalho Computacional
MECÂNICA E MODULAÇÃO COMPUTACIONAL

ALUNOS:
Joana Mendes 99678

Maria Dias 99696

Mariana Parrinha 99700

PROFESSORES:
Prof. João Folgado

Prof. Carlos Quental


1. Métodos
Inicialmente, criou-se o ficheiro data1.txt que inclui as coordenadas dos nós, as conectividades dos elementos, o
material utilizado, as condições fronteira e as forças aplicadas da estrutura em estudo, essenciais à resolução do
problema enunciado. No Phython converteram-se os dados do tipo String provenientes do ficheiro data1.txt para
dados do tipo Float.

A variável coord é representada em forma de lista e guarda as coordenadas dos eixos x e y de cada nó i em cada
tuplo i, coord= [(x1, y1),…,(xi,yi)]. A variável el é também representada em forma de lista e guarda as conectividades de
cada elemento i, ou seja, os nós presentes na extremidade de cada elemento i, el= [(a1, b1),…,(ai,bi)]. Foram definidas
as variáveis num_nos e num_el que calcula o número de nós e elementos da estrutura, respetivamente. De seguida,
a variável cf é definida como uma lista de tuplos, que guarda para cada nó i a possibilidade de existência de
deslocamento ao longo dos eixos x e y: 0 se não existe possibilidade de deslocamento (com apoio nessa direção) ou 1
se existe possibilidade de deslocamento (sem apoio nessa direção), cf= [(cf_x1, cf_y1),...,(cf_xi,cf_yi)]. Foi também
criada a lista v_cf em que a única diferença para com a lista cf é a inexistência de tuplos, v_cf= [cf_x1,
cf_y1,...,cf_xi,cf_yi]. A variável forces é representada como uma lista de tuplos, que guarda para cada nó i a intensidade
(I) da força aplicada e o ângulo (Ɵ) que esta faz com o eixo x, forces= [(I1, Ɵ 1),…,(Ii, Ɵ i)]. Foram definidas as variáveis E
(módulo de Young), a e b (cross-sections das barras) e Area (área).

De modo a definir a matriz de rigidez global, global_K definiram-se as variáveis K, lista que contém todas as
matrizes de rigidez para cada elemento i, k_el (figura 1). Para determinar k_el, definiu-se uma variável auxiliar h_el
que corresponde ao comprimento de cada elemento, e definiu-se o seno (s) (diferença entre as coordenadas y dos
nós 2 e 1 (y2-y1)/ comprimento da barra h_el) e o cosseno (c) (diferença entre as coordenadas x dos nós 2 e 1 (x2-x1)/
comprimento da barra h_el) para cada elemento. Para além disso, foram definidas as variáveis cc2, cs2 e ccs que
multiplicam a constante (constant= E*Area/h_el) pelo cosseno ao quadrado, seno ao quadrado e pelo produto do
seno pelo cosseno, respetivamente. Adicionalmente, foi definida a variável graus_lib, como uma lista de tuplos que
representa os graus de liberdade para cada nó i, graus_lib=[(gl_x1,gl_y1),…,(gl_xi,gl_yi)]. Para cada elemento i, a partir
de graus_lib, determina-se a lista l_connect que guarda os graus de liberdade dos nós de cada elemento i (corresponde
à linha da matriz de conectividades do elemento i). A lista gl contém as posições da matriz matrix_glob_el onde vão
ser colocados os valores das matrizes de rigidez para cada elemento, percorrendo a lista de matrizes de rigidez K. A
matriz global_K consiste na soma das matrizes matrix_glob_el obtidas para cada elemento.

Figura 1. Expressão para a determinação da matriz de


rigidez para cada elemento (k_el).

Definiu-se a variável v_fa como uma lista que contém as componentes nos eixos x e y das forças aplicadas em
cada nó i, v_fa= [fax1, fay1,…, faxi, fayi ]. Com o objetivo de determinar os deslocamentos das componentes de cada nó
i, recorreu-se à seguinte fórmula teórica: [k]{u}={F}. Para tal, foi criada a matriz_aux (inicialmente igual à matriz
global_K) que não possuí as linhas e colunas da matriz global_K que correspondem aos valores em que os
deslocamentos são nulos. Deste modo, foi criada a lista delete que guarda as posições correspondentes às linhas e
colunas a eliminar da matriz matriz_aux, isto é, as posições da lista v_cf que contém o valor 0. De modo a possibilitar

1
a resolução do sistema de equações, foi criado o vetor v_fa_aux (inicialmente igual ao vetor v_fa) onde foram
eliminados os valores correspondentes às posições contidas na lista delete. O vetor u_aux, solução do sistema de
equações [matriz_aux]{ u_aux }={ v_fa_aux }, apenas contém os deslocamentos das componentes associadas a
condições fronteira iguais a 1. De modo a obter o vetor dos deslocamentos completo, isto é, com todos os nós, foi
criado um vetor u com entradas nulas, tendo sido adicionados nas posições, em que pelas condições fronteira existe
possibilidade de deslocamento, os valores respetivos do vetor u_aux.

De modo a calcular o vetor das forças de reação nos nós, recorreu-se à multiplicação da matriz global_K pelo
vetor de deslocamentos completo u, obtendo-se o vetor f_total que representa as forças totais sobre cada nó i, isto é
a soma das forças aplicadas com as forças de reação, f_total= [Fx1, Fy1,…, Fxi, Fyi ]. De seguida, subtraiu-se o vetor das
forças aplicadas v_fa ao vetor das forças totais, f_total, obtendo-se o vetor reações que representa as forças de reação
em cada nó, reações= [Rx1, Ry1,…, Rxi, Ryi ].

Posteriormente, foram determinadas as tensões em cada barra. Para tal, calcularam-se previamente as
extensões, ext, sofridas por cada elemento através de um procedimento linear, tendo por base a fórmula teórica 1.
̅̅̅3 𝑒 − ̅̅̅
𝑢 𝑒
𝑢1 𝑒
𝜀 = (1)
ℎ𝑒
O vetor de deslocamentos u obtido, representa os deslocamentos no referencial global, ue. Sendo assim, torna-
se necessário calcular os deslocamentos no referencial da barra, ūe. A transformação de coordenadas é feita a partir
das seguintes formulas 2 e 3.
̅̅̅1 𝑒 = cos(Ɵ) ∗ 𝑢1 𝑒 + sin(Ɵ) ∗ 𝑢2 𝑒 (2)
𝑢
𝑢3 𝑒 = cos(Ɵ) ∗ 𝑢3 𝑒 + sin(Ɵ) ∗ 𝑢4 𝑒 (3)
̅̅̅

Para cada elemento i, definiu-se o seno (s) (diferença entre as coordenadas y dos nós 2 e 1 (y2-y1)/
comprimento da barra h_el) e o cosseno (c) (diferença entre as coordenadas x dos nós 2 e 1 (x2-x1)/ comprimento da
barra h_el). As variáveis u1 e u2 correspondem aos deslocamentos no eixo x e y (no referencial global) do primeiro nó
do elemento i, respetivamente. As variáveis u3 e u4 correspondem aos deslocamentos no eixo x e y (no referencial
global) do segundo nó do elemento i, respetivamente. A extensão, ext, de cada elemento é, assim, calculada através
(𝒖𝟑∗𝒄+𝒖𝟒∗𝒔)−(𝒖𝟏∗𝒄+𝒖𝟐∗𝒔)
da fórmula 𝒆𝒙𝒕 = 𝒉_𝒆𝒍
. As tensões de cada barra são assim determinadas através da fórmula 𝜎 =
𝐸𝜀, tendo sido criada a lista tensions, que guarda as tensões aplicadas em cada barra.

Por último, foi desenvolvido código com o intuito de obter a representação da configuração da estrutura
deformada. Sendo as deformações ínfimas, de modo a poder observar-se com clareza a diferença existente entre a
configuração original e a deformada, foi criado o vetor fe_u, que guarda cada deslocamento multiplicado por um fator
de escala de 200. A lista fe_coord_finais guarda para cada nó, as suas coordenadas iniciais somadas aos respetivos
deslocamentos presentes no vetor fe_u.

2. Resultados e Discussão
De modo a verificar os resultados obtidos através do código desenvolvido, recorreu-se ao programa abaqus,
onde se procedeu à modelação da estrutura do enunciado. Devido à estrutura ser constituída por barras de aço, o
módulo de Young utilizado foi de 200 GPa [1]. Na figura 2 está representada a configuração original da estrutura, em
que a numeração dos nós e dos elementos encontra-se representada a laranja e azul, respetivamente. É de notar que
o abaqus considera um nó adicional no cruzamento entre as barras 4 e 5. Consequentemente, estas barras são
subdivididas em duas, tendo como resultado a inclusão de dois elementos adicionais na estrutura. Os valores obtidos
no abaqus para esse nó e para os elementos adicionais, não existindo na estrutura original, não foram incluídos na
2
discussão de resultados. Pode-se concluir que a configuração deformada obtida a partir do código (figura 3) está de
acordo com a obtida através do abaqus (figura 4), o que indica uma possível conformidade nos resultados obtidos.

Figura 3. Configuração original com os nós e Figura 2. Configuração deformada obtida Figura 4. Configuração deformada obtida
elementos devidamente numerados. através do código implementado. através do abaqus.

Na tabela 1 encontram-se representados os valores de deslocamentos de cada nó nas direções x e y obtidos a


partir do código desenvolvido e pelo abaqus.

Tabela 1. Valores dos deslocamentos em x e y obtidos pelo código e pelo abaqus.

Código Abaqus
Nó Deslocamento Deslocamento Deslocamento Deslocamento em
em x (m) em y (m) em x (m) y (m)
-33
1 0 0 1.42971 x10 6.00000 x10-33
-33
2 0 0 -1.42971 x10 -12.00000 x10-33
-4
3 2.49624 x10 -2.67675 x10-4 2.49624 x10-4 -2.67675 x10-4
-4
4 6.26026 x10 -5.94513 x10-4 6.26026 x10 -4
-5.94513 x10-4
5 5.77026 x10-4 -1.14887 x10-4 5.77026 x10-4 -1.14887 x10-4
-4
6 5.53046 x10 1.10113 x10-4 5.53046 x10 -4
1.10113 x10-4

Analisando a tabela 1, é possível verificar que apenas existem diferenças nos valores de deslocamentos obtidos
para os nós apoiados (nós 1 e 2). Neste caso, o código desenvolvido admite que os deslocamentos nos nós apoiados
são 0, isto é, que estão completamente imóveis, nas direções x e/ou y em que os apoios estão inseridos. Através do
abaqus, os deslocamentos obtidos são da ordem de 10-33 (bastante próximos de 0). No entanto, a diferença na ordem
de 10-33 obtida não é significativa. Nos outros nós, verifica-se que os deslocamentos obtidos pelo código desenvolvido
e pelo abaqus são iguais. No ponto D (correspondente ao nó 4) verifica-se um descolamento de 6.26026 x10-4 m ao
longo do eixo do x e de -5.94513 x10-4 ao longo do eixo do y.

A partir do código, obtém-se as forças de reação para todos os nós. A tabela 2 apenas representa os valores
das componentes (x e y) das forças de reação nos nós em que existem apoios, a partir do código desenvolvido e pelo
abaqus, já que nos restantes nós as forças de reação são nulas.

Tabela 2. Valores obtidos para as reações nos apoios em x e y pelo código e pelo abaqus.

Código Abaqus
Nó Reação em x Reação em y Reação em x Reação em x
(N) (N) (N) (N)
3
1 -1.42971 x10 -6.00000 x103 -1.42971 x10 3
-6.00000 x103
3
2 1.42971 x10 1.20000 x104 1.42971 x103
1.20000 x104

3
Analisando a tabela 2, verifica-se que as reações nos apoios (nós 1 e 2) obtidas através do código
implementado estão de acordo com o obtido através do programa abaqus.

Na tabela 3 encontram-se representados os valores para as tensões aplicadas em cada elemento obtidos a
partir do código desenvolvido e pelo abaqus.

Tabela 3. Valores obtidos do módulo da tensão pelo código e pelo abaqus.

Código Abaqus
Elemento Tensão (Pa) Tensão (Pa)
1 1.46817 x107 1.46817 x107
2 6.85146 x106 6.85146 x106
3 -1.53183 x107 -1.53183 x107
4 1.69042 x107 1.69042 x107
5 -1.62017 x107 -1.62017 x107
6 -3.31059 x107 -3.31059 x107
7 0.0 -3.21600 x100
8 -3.31059 x107 -3.31059 x107
9 1.4 x107 1.4 x107

O abaqus determina, por definição, as tensões utilizando um procedimento linear, tendo sido este mesmo
procedimento utlizado na implementação do código. A partir da análise da tabela 3, verifica-se que os valores de
tensão obtidos pelo código desenvolvido e pelo abaqus são iguais para todos os elementos, à exceção do elemento 7.
Teoricamente, o elemento 7 terá tensão nula. A partir do código desenvolvido, obteve-se um valor de tensão 0 na
barra 7, como espectável. A partir do abaqus verifica-se que o valor de tensão obtido para esta barra (-3.21600 x100)
é inferior em 6 ou 7 ordens de grandeza do valor de tensão obtido para as restantes barras, visto que estes são da
ordem de 106 ou 107, traduzindo assim, na prática, a tensão na barra em análise a um valor nulo, como espectável. Os
deslocamentos são exatamente iguais nos dois programas, pelo que não existirá uma explicação óbvia e plausível para
a pequena discrepância observada entre os valores obtidos para tensão na barra 7 pelos dois programas.

Verificam-se valores de tensão positivos e negativos, devido à tração e compressão sofridas pelas barras,
respetivamente. Observa-se um valor máximo de tensão (em valor absoluto) nas barras 6 e 8. O valor mínimo de
tensão (em valor absoluto) reside na barra 7.

Em suma, utilizando o abaqus para comparar os resultados obtidos, é possível concluir que o código desenvolvido
em Python permite resolver com eficácia o problema de estruturas de barras 2D enunciado, através do Método dos
Elementos Finitos.

3. Referências
[1] 2022: Módulo de Elasticidade ou Módulo de Young (Resumo e Exemplos). (n.d.). Materiais (PT). Retrieved
October 22, 2022, from https://www.materiais.gelsonluz.com/2017/12/modulo-de-elasticidade-ou-modulo-de-
young.html.

Você também pode gostar