OUTUBRO DE 2014
miec@fe.up.pt
Editado por
feup@fe.up.pt
http://www.fe.up.pt
Este documento foi produzido a partir de verso eletrnica fornecida pelo respetivo
Autor.
RESUMO
A importncia da simulao numrica justifica a realizao de um trabalho que faa uso das
possibilidades computacionais para desenvolver uma soluo informtica que implemente o Mtodo do
Elementos Finitos na resoluo de diversos problemas na rea da engenharia estrutural.
Nesta dissertao so descritas diversas teorias e formulaes de elementos finitos usadas correntemente
na anlise de problemas estruturais. Das diversas formulaes e tipos de elementos finitos disponveis
so focados os elementos finitos unidimensionais, bidimensionais, tridimensionais, de viga e de laje.
So apresentados elementos finitos de viga formulados pela teoria de Euler-Bernoulli e pela teoria de
Timoshenko. Os elementos finitos de laje apresentados abrangem a teoria de Kirchhoff e a teoria de
Reissner-Mindlin.
De modo a implementar computacionalmente o Mtodo dos Elementos Finitos so discutidos os
fundamentos do mtodo e o seu mbito de aplicabilidade. alvo de pormenorizao a obteno das
funes de forma, das matrizes de rigidez elementares e dos vetores de foras nodais equivalentes.
focada a construo da equao de equilbrio global e a sua resoluo. A integrao numrica e a gerao
de malhas uma das partes constituintes da anlise estrutural pelo Mtodo dos Elementos Finitos.
Assim, so abordadas algumas tcnicas de gerao de malhas e discutidos alguns requisitos que as
malhas devem cumprir.
So abordados alguns conceitos sobre desenvolvimento de programas informticos, discutido o modo
como o programa desenvolvido foi construdo e apresentados alguns cdigos exemplificativos de
algumas das tarefas realizadas.
apresentado o programa de modelao e anlise estrutural pelo Mtodo dos Elementos Finitos
desenvolvido no mbito desta dissertao. So referidas e apresentadas algumas classes e mtodos do
programa. apresentada a interface grfica do utilizador e as funcionalidades disponveis. De modo a
exemplificar o funcionamento do programa so detalhadas todas as etapas desde a modelao da
estrutura at visualizao grfica dos resultados.
ii
ABSTRACT
The importance of numerical simulation justifies a work that makes use of computational possibilities
to develop a software solution that implements the Finite Element Method to solve various problems in
the area of structural engineering.
This dissertation describes several theories and formulations currently used in finite element structural
analysis problems. From the different formulations and types of finite elements available, the focus is
on one-dimensional, two-dimensional, three-dimensional finite element, beams and slabs. Finite beam
elements formulated by the Euler-Bernoulli theory and the Timoshenko theory are presented. The finite
element slab presented covers the Kirchhoff theory and Reissner-Mindlin theory.
In order to implement computationally the Finite Element Method, the fundamentals of the method and
its scope of applicability are discussed. The acquisition of shape functions, the elementary stiffness
matrix and equivalent nodal forces vector are detailed. The construction of the global equilibrium
equation and its resolution is focused on. The numerical integration and mesh generation is one of the
constituent parts of the structural analysis by Finite Element Method. Thus, some techniques for mesh
generation are addressed and requirements that the meshes must meet are discussed.
Concepts on the development of computer programs are referred to, how the software was built is
discussed and illustrative codes of some of the tasks performed are presented.
Program modelling and structural analysis by Finite Element Method developed in the context of this
dissertation is presented. Classes and methods of the program are referred to and presented. The
graphical user interface and functionalities are addressed. In order to demonstrate the operation of the
program, all the steps from the structure modelling to the graphic display of results are detailed.
KEYWORDS: Finite Element Method, One-dimensional Elements, Two-dimensional Elements, Tree-dimensional Elements, Beams, Slabs, Software Development, Java, FEM for Students.
iii
iv
NDICE GERAL
RESUMO .................................................................................................................................. i
ABSTRACT .............................................................................................................................................. iii
1. INTRODUO .......................................................................................................................... 1
1.1. MBITO E OBJETIVOS DO TRABALHO ............................................................................................ 1
1.2. ESTRUTURAO DA DISSERTAO................................................................................................ 2
vi
vii
viii
ix
ANEXOS........................................................................................................................................ 119
A. PACOTES E CLASSES DO PROJETO DO FEM FOR STUDENTS ................................................... 121
A.1. PACOTES DO PROJETO ................................................................................................................... 121
A.2. CLASSES DE CADA PACOTE ............................................................................................................. 121
NDICE DE FIGURAS
xi
xii
NDICE DE TABELAS
xiii
xiv
1
INTRODUO
elemento finito. Do ponto de vista de programao so apresentados alguns conceitos sobre o projeto
de programas informticos. Como referido, a componente prtica desta dissertao consiste no
desenvolvimento de um programa de modelao e anlise estrutural por elementos finitos. Assim,
discutido o modo como o Mtodo dos Elementos Finitos est implementado computacionalmente no
programa desenvolvido.
Finalmente, o programa desenvolvido apresentado pelas ticas do programador e utilizador. Do ponto
de vista do programador discutido o modo como o programa foi construdo e exemplifica-se com a
apresentao de excertos de algumas das classes e mtodos do projeto. Esta exemplificao consiste na
apresentao de alguns dos cdigos construdos para realizar operaes de clculo associadas ao Mtodo
dos Elementos Finitos e outras relativas interface grfica do utilizador. Na tica de utilizao do
programa descrita a sua interface grfica com especificao do modo como as etapas associadas a uma
anlise por elementos finitos so realizadas.
2
FUNDAMENTOS DO MTODO DOS
ELEMENTOS FINITOS
O Mtodo dos Elementos Finitos um mtodo aproximado e por este motivo a realizao de uma
simulao numrica sempre um modo aproximado para resolver um problema complexo. Assim, a sua
utilizao deve ser limitada a problemas para os quais no existam abordagens ou solues analticas
para a sua resoluo. Quando se recorre ao Mtodo dos Elementos Finitos para resolver problemas de
engenharia importante identificar as possveis fontes de erro e estimar a sua magnitude. A qualidade e
o rigor que empregue na modelao do problema estrutural vai influenciar os resultados obtidos da
anlise.
A sequncia de passos apresentada pretende mostrar o encadeamento usado numa anlise por elementos
finitos. Ao longo dos captulos 2 a 6 so pormenorizados cada um destes passos de modo a no final
estarem reunidas as condies necessrias implementao computacional do mtodo. Importa destacar
a importncia das decises que se tomam ao longo do cumprimento destes passos, pois, os resultados
obtidos da anlise vm afetados por essas decises.
O primeiro passo para resoluo de um problema a identificao do prprio problema. Para se poder
analisar corretamente um problema necessrio identifica-lo corretamente. A correta identificao de
todos os fenmenos fsicos envolvidos que influenciam o comportamento da estrutura, a natureza
esttica ou dinmica, as propriedades dos materiais, entre outros, so fundamentais para a escolha
adequada do modelo estrutural. Quando se pretende modelar um problema por elementos finitos
necessrio escolher, por exemplo, se a anlise vai ser bidimensional ou tridimensional. A escolha tem
implicaes na quantidade de clculos realizados.
Os modelos, no mbito de uma anlise por elementos finitos, costumam ser classificados como
conceptuais, estruturais ou computacionais [13].
Os modelos computacionais so aplicados aos modelos conceptuais de um problema real e no ao
problema real em si [13]. Um modelo conceptual pode ser desenvolvido no seguimento da compreenso
da natureza fsica de um problema. Um modelo conceptual deve excluir os detalhes suprfluos e incluir
todas as caractersticas relevantes do problema em anlise de modo a descrever a realidade com preciso
adequada.
Um modelo conceptual para o estudo de uma estrutura deve incluir todos os dados necessrios para a
sua representao e anlise. Depois de se selecionar um modelo conceptual adequado para uma estrutura,
o passo seguinte para o seu estudo a definio de um modelo estrutural. Um modelo estrutural deve
incluir a descrio geomtrica da estrutura por meio dos seus componentes geomtricos, a expresso
matemtica das leis fsicas bsicas que regem o comportamento da estrutura e a especificao das
propriedades dos materiais e das cargas que atuam sobre a estrutura [13]. perfeitamente possvel que
o mesmo modelo conceptual de uma estrutura possa ser analisado utilizando diferentes modelos
estruturais, dependendo do rigor e/ou simplicidade procurada na anlise.
O passo seguinte na sequncia da anlise estrutural a escolha de um mtodo numrico. A aplicao do
Mtodo dos Elementos Finitos , normalmente, feita com a sua implementao num programa de
computador. No Captulo 9 apresentado o programa desenvolvido no mbito desta dissertao que
possibilita a modelao e a anlise estrutural pelo Mtodo dos Elementos Finitos.
A discretizao de um modelo em elementos finitos constitui uma das primeiras tarefas na anlise por
elementos finitos. A figura 2.1 mostra a discretizao de uma viga de espessura h com recurso a
elementos finitos retangulares.
Todo o conhecimento sobre problemas fsicos, elementos finitos e algoritmos de resoluo contribui
para a experincia de modelao. A principal dificuldade enfrentada nesta etapa consiste em no
entender a ao fsica e as condies fronteira da estrutura real, bem como as limitaes da teoria
aplicvel, para criar um modelo adequado. Outra dificuldade de no compreender o comportamento
dos vrios elementos finitos para se selecionar os adequados resoluo do problema. O resultado pode
ser uma m pormenorizao do problema. Um modelo que no incorpore as caractersticas importantes
do problema fsico, uma discretizao imprpria dos carregamentos ou uma introduo de condies de
apoio inadequadas conduz a que os resultados obtidos no tenham correspondncia com os observados
na realidade.
Os utilizadores de programas de modelao por elementos finitos esto habituados utilizao de
ferramentas que geram automaticamente as malhas para o domnio em estudo. Contudo, a qualidade da
malha depende da qualidade dos algoritmos programados para a gerar. Logo, esto dependentes do
conhecimento que o programador tem sobre a modelao com elementos finitos. Portanto, o
procedimento de modelao no dever nunca ser menosprezado independentemente da sua dimenso
ou importncia. Face importncia que a modelao por elementos finitos apresenta esta costuma ser
considerada uma arte [3].
adequado que uma malha de elementos finitos seja composta por elementos finitos pouco distorcidos,
com dimenses semelhantes e refinada o suficiente para a obteno de resultados com qualidade
aceitvel. A melhor preciso est associada modelao com muitos elementos finitos e de ordem de
interpolao mais elevada. Igual preciso pode ser obtida com elementos de baixa ordem recorrendo a
um elevado refinamento da malha. A escolha do elemento finito tambm dependente do problema em
anlise. Um elemento ou malha que funcione bem numa situao pode funcionar mal noutra. A escolha
est dependente do conhecimento sobre cada elemento finito e da compreenso fsica do problema.
O principal problema associado ao custo computacional de uma anlise que as capacidades
computacionais so limitadas. Isto pode no ser evidente na anlise de pequenos problemas mas tornase relevante nos grandes problemas. Deve-se procurar usar modelos simples de modo a que os possveis
erros sejam mais facilmente detetveis. uma boa prtica usar dois modelos na anlise. Um modelo
mais simples que fornece resultados aproximados que depois pode ser usado para orientar a construo
de um novo modelo mais refinado e validar os seus resultados.
Existem algumas orientaes a seguir no processo de modelao de uma estrutura com elementos finitos,
nomeadamente:
A escolha dos elementos a usar tem influncia na preciso dos resultados obtidos. H elementos que no
so capazes de modelar alguns modos de deformao ou distores [6]. Elementos diferentes tm
diferentes sensibilidades para modelar distores. Deve-se procurar que a seleo dos elementos a usar
esteja em conformidade com o tipo de deformao esperada. Os elementos finitos vizinhos do mesmo
tipo devem ter uma geometria semelhante e as transies entre elementos diferentes devem ser graduais.
As condies de apoio do modelo so to relevantes como a prpria malha de elementos finitos. No
adianta recorrer a refinamentos elevados se os apoios usados no modelo no modelem as condies de
apoio reais da estrutura. Normalmente, em teoria, os apoios estruturais so idealizados como
completamente rgidos ou como articulados. Os apoios reais, em geral, situam-se entre um apoio rgido
e um apoio articulado. Esta diferena pode levar a que exista uma alterao significativa da distribuio
de esforos na estrutura. No final de uma anlise deve-se procurar verificar a consistncia dos resultados
obtidos.
Assumindo que o material de que constitudo o modelo de elementos finitos homogneo e tem um
comportamento linear elstico, as foras nodais dependem de forma direta e proporcional dos
deslocamentos dos ns associados ao desenvolvimento de deformaes.
A relao entre o vetor de foras nodais equivalentes e o vetor de deslocamentos nodais, que se assume
ser de proporcionalidade direta, pode ser expressa atravs da relao matricial
11
21
31
[1
12
22
32
13
23
33
1
1 1
2
2 2
3 3 = 3
] { } { }
(2.1)
onde n representa o nmero total de graus de liberdade do elemento finito. Colocando (2.1) numa forma
mais compacta,
=
(2.2)
em que k designa a matriz de rigidez elementar, a o vetor de deslocamentos e f o vetor de foras nodais
equivalentes. Determinadas todas as matrizes de rigidez elementares para o problema em estudo, tornase necessrio agrup-las de forma a construir a matriz de rigidez global do problema. Esta operao
frequentemente designada por assemblagem. Uma operao semelhante tem de ser efetuada com os
vetores de foras nodais equivalentes dos elementos finitos.
2.4.4. ASSEMBLAGEM
Uma anlise por elementos finitos de um problema genrico que envolve meios contnuos, atravs da
anlise de partes discretas desses meios, implica que se proceda juno dos contributos de cada uma
das partes de modo a se conhecer o comportamento do problema global. A passagem da anlise ao nvel
de cada elemento finito para a anlise do todo d-se o nome de assemblagem. Com a operao de
assemblagem construda a matriz de rigidez e o vetor de foras nodais globais para todo o domnio do
problema. Note-se que na essncia desta operao est o facto de que uma qualquer fora externa
aplicada num determinado n da malha partilhada por todos os elementos finitos que tm esse n em
comum.
|
|
(2.3)
onde a primeira coluna contm a numerao local dos n graus de liberdade do elemento finito e a
segunda coluna a correspondncia destes com a numerao global dos graus de liberdade da malha de
elementos finitos.
O procedimento de assemblagem no mais do que o espalhamento dos termos da matriz de rigidez
elementar e do vetor de foras nodais equivalentes do elemento finito pelas posies globais que estes
11
21
12
22
= 1
2
]{ } { }
(2.4)
onde
e , ,=1,, , correspondem aos termos da matriz de rigidez elementar e do vetor de foras
nodais equivalentes, respetivamente, do elemento finito e. A matriz de rigidez global uma matriz
quadrada com dimenso correspondente ao nmero total de graus de liberdade do problema, enquanto,
os vetores de deslocamentos e foras nodais tm N linhas. Colocando o sistema de equaes (2.4) numa
forma mais compacta,
=.
(2.5)
Aps a introduo das condies de apoio e a prescrio dos deslocamentos, o sistema de equaes (2.5)
pode ser escrito na forma
=+
(2.6)
em que o vetor R armazena a informao relativa s condies de apoio da estrutura. Para facilitar a sua
resoluo do ponto de vista computacional conveniente organiz-lo de modo a separar os termos
associados aos graus de liberdade no prescritos dos graus de liberdade prescritos, isto , colocando-o
na forma
[
] { } = { } + { }
(2.7)
onde o ndice L se refere aos graus de liberdade no prescritos ou livres e o ndice F aos graus de
liberdade prescritos ou fixos. O vetor r corresponde s reaes de apoio da estrutura que at esta fase
so uma incgnita do problema como, tambm, os deslocamentos nodais associados aos ns no
prescritos. Este novo sistema de equaes pode ser resolvido do seguinte modo.
= 1 ( )
(2.8a)
= +
(2.8b)
Este procedimento genrico permite determinar o valor dos deslocamentos nodais associados aos ns
no prescritos e sucessivamente o valor das reaes de apoio na estrutura. Se no existirem
assentamentos de apoio na estrutura, o vetor nulo, pelo que as expresses (2.8) so simplificadas
nas seguintes expresses.
= 1
(2.9a)
(2.9b)
De forma a se ter confiana nos resultados obtidos conveniente efetuar a sua validao. A validao
assenta fundamentalmente em duas partes distintas que so realizadas em fases diferentes e normalmente
por pessoas diferentes. A primeira parte consiste em verificar o cdigo de modo a estabelecer a confiana
que tudo foi corretamente programado. A segunda parte consiste em verificar os clculos de modo a
estabelecer a confiana no modelo criado para a anlise.
Como a discretizao introduz uma aproximao [13], existem duas fontes de erro desde o incio, ou
seja, o erro de modelao e o erro de discretizao. O primeiro pode ser reduzido, melhorando os
modelos conceptuais e estruturais que descrevem o comportamento real da estrutura. O erro de
discretizao pode ser reduzido pelo uso de uma malha mais refinada ou usando elementos finitos de
ordens superiores. Os computadores tambm introduzem erros numricos associados sua limitao
para representar os dados com elevada preciso. O erro numrico apesar de pequeno somado aos erros
associados modelao e discretizao.
10
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
(2.10)
Para um corpo tridimensional contnuo representado pela figura 2.3, o Princpio dos trabalhos Virtuais
pode ser escrito na forma
= + + +
(2.11)
(2.12)
onde B a matriz de deformao e a o vetor de deslocamentos nodais. Quando esta equao se refere
aos deslocamentos virtuais e correspondentes deformaes virtuais, tem-se
=
(2.13)
= .
(2.14)
que equivalente a
As tenses, para um material isotrpico com comportamento linear elstico, podem ser obtidas atravs
da relao constitutiva
=
(2.15)
onde a matriz D designada por matriz de elasticidade e na isotropia funo das propriedades elsticas
do material, isto , do mdulo de elasticidade, E, e do coeficiente de Poisson, v. Substituindo (2.12) em
(2.15) obtm-se
11
(2.16)
=.
em que N agrupa as funes de forma que dependem do elemento finito considerado e a contm os
deslocamentos nodais cujo nmero depende do nmero total de graus de liberdade que o elemento finito
apresenta. Quando esta equao se refere aos deslocamentos virtuais, tem-se
=
(2.18)
= .
(2.19)
que equivalente a
Substituindo em (2.11) as equaes (2.14), (2.16) e (2.19), o Princpio dos Trabalhos Virtuais expresso
na forma
= + + + .
(2.20)
Uma vez que os vetores de deslocamentos nodais virtuais e de deslocamentos nodais so constantes,
podem passar-se para fora do integral. Assim, aps alguma manipulao algbrica, obtm-se
= ( + + + ) .
(2.21)
Considerando que, para alm destes serem constantes, o campo de deslocamentos nodais virtuais
sempre no-nulo nos domnios considerados, ento da equao anterior pode concluir-se que
= + + + .
(2.22)
Comparando esta equao com a relao de rigidez que utilizada no Mtodo dos Deslocamentos,
conclui-se que
=.
(2.23)
Este procedimento genrico pode facilmente ser utilizado para determinar os sistemas de equaes
elementares de todos os elementos finitos.
Os deslocamentos devem ser contnuos dentro de cada elemento finito. Esta condio automaticamente
satisfeita usando aproximaes polinomiais para o campo de deslocamentos. necessrio tambm que
exista continuidade do campo de deslocamentos na fronteira de cada um dos elementos que lhe so
adjacentes na malha de elementos finitos.
Elementos que satisfazem a condio de continuidade do campo de deslocamentos so denominados
elementos finitos conformes. No entanto, em alguns casos particulares, tais como, em alguns elementos
flexo baseados na teoria de Kirchhoff, esta condio no satisfeita. Estes elementos, em que a
condio de continuidade no satisfeita, so denominados elementos finitos no conformes. Elementos
12
no conformes podem convergir para a soluo exata se passarem no patch test. Em algumas ocasies
estes elementos finitos fornecem boas solues com malhas relativamente grosseiras.
As derivadas das funes de forma devem existir at s derivadas que aparecem nos elementos da matriz
de deformao B. Por exemplo, para uma matriz que contenha derivadas de primeira ordem, as funes
forma devem ser, pelo menos, de primeira ordem.
Uma funo contnua com a primeira derivada descontnua designada por funo com continuidade
C0. Por outro lado, uma funo contnua com primeira derivada contnua e segunda derivada descontnua
possui continuidade C1. Desta forma, uma funo possui continuidade Cn quando todas as suas derivadas
at ordem n so contnuas, mas a sua derivada de ordem n + 1 descontnua.
No caso de uma funo ter continuidade C0, a sua primeira derivada apresentar descontinuidades
pontuais, correspondendo a uma funo de continuidade C-1. Contudo, tais descontinuidades no
impedem que esta derivada seja integrvel em todo o seu domnio.
A integrabilidade de funes de continuidade C-1 torna admissvel a utilizao de funes com
continuidade C0. Nesta situao, tal significa que o campo de deslocamentos tem continuidade C0, pelo
que o campo de deformao, definido com base na primeira derivada do deslocamento, possui
continuidade C-1. Devido simplicidade das funes de continuidade C0, este tipo de funes
usualmente utilizado na resoluo de problemas pelo Mtodo dos Elementos Finitos [21].
As funes de forma devem ser capazes de representar um movimento de translao sem deformao,
isto , um movimento de corpo rgido. Isto significa que todos os pontos pertencentes ao elemento finito
tm um deslocamento igual ao dos ns. Esta condio fsica satisfeita para um nico elemento finito,
se a soma das suas funes de forma avaliadas em qualquer ponto do elemento finito for igual unidade,
isto , se
1 () + 2 () + 3 () + + () = 1
(2.24)
13
14
3
FORMULAO DE ELEMENTOS
FINITOS
A generalidade dos elementos estruturais aplicados nas estruturas de edifcios so do tipo barra e muitos
destes esto submetidos a cargas axiais aplicadas nas extremidades. O estudo dos elementos finitos
unidimensionais prende-se com a necessidade de apresentar uma formulao que permita o estudo destes
elementos estruturais.
De modo a se poder calcular a distribuio de tenso que atua na seco transversal da barra so adotadas
as seguintes hipteses simplificadoras [4]:
A barra permanece reta tanto antes como depois da aplicao da carga, e, alm disso, a
seco transversal permanece plana durante a deformao;
A carga aplicada segundo o eixo longitudinal da barra e o material homogneo e
isotrpico.
Considere-se uma barra reta de seco transversal constante e sujeita a um carregamento axial centrado
nas suas extremidades. Como a barra sofre uma variao de comprimento aps aplicao da carga, a
deformao axial calculada recorrendo expresso
=
(3.1)
(3.2)
em que P corresponde carga axial e A rea da sua seco transversal da barra. A partir do valor da
deformao possvel calcular o valor da tenso em qualquer seco transversal da barra. Admitindo
que o material da barra apresenta um comportamento linear elstico possvel definir a relao entre
tenses e deformaes
=
(3.3)
15
O estudo dos elementos finitos unidimensionais justifica-se com a necessidade de introduzir as tcnicas
usadas para formular os diversos elementos finitos, nomeadamente, os elementos finitos bidimensionais
e tridimensionais.
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
(3.4)
Para o caso de um elemento finito unidimensional definido segundo o eixo Ox, de comprimento L e
sujeito a uma carga axial p uniformemente distribuda ao longo do seu comprimento, pelo Princpio dos
Trabalhos Virtuais, tem-se
= u .
(3.5)
Atendendo ao apresentado no Captulo 2 sobre o Princpio dos Trabalhos Virtuais, a relao (3.5), aps
alguma manipulao algbrica, equivalente a
+/2
+/2
/2
(3.6)
/2
=.
As funes de forma do tipo polinomial para um elemento finito de n ns podem ser determinadas
recorrendo ao polinmio de Lagrange. Conhecidas as n coordenadas dos n ns do elemento finito
unidimensional, a expresso genrica do polinmio de Lagrange de grau n - 1, associado ao n i,
() =
=1 ()
( )
( )
(3.8)
16
Sendo apenas considerado o eixo Ox, todos os deslocamentos ocorrem paralelamente a ele. Se se
conhecer os deslocamentos nodais do elemento finito, o campo de deslocamentos u() do elemento
finito pode ser interpolado a partir desses mesmos deslocamentos, ou seja,
u() = 1 ()1 + 2 ()2 + + ()
(3.9)
u() = i ()
(3.10)
=1
Sendo o campo de deslocamentos aproximado com recurso a funes interpoladoras, conhecido o campo
de deslocamentos para o elemento finito suficiente derivar as suas funes de forma e multiplic-las
pelos respetivos deslocamentos nodais.
=
(3.11)
Na forma matricial, derivando as n funes de forma do elemento finito com n ns, o campo de
deformaes obtido pela multiplicao da matriz de deformao pelo vetor de deslocamentos nodais
do elemento finito, isto ,
1
2
1 2
= [
]{ }
(3.12)
(3.13)
sendo a matriz B designada por matriz de deformao ou, correntemente designada, matriz das derivadas
das funes de forma.
As tenses, para um material isotrpico com comportamento linear elstico, podem ser obtidas atravs
da relao constitutiva (3.3) que aps a substituio de (3.13) resulta em
17
(3.14)
Conhecida a tenso instalada num dado ponto do elemento finito, o esforo axial obtido atravs da
multiplicao do valor da tenso pela rea da seco transversal do elemento finito. Se o esforo axial
obtido positivo, a seco transversal est tracionada, caso contrrio, a seco transversal est
comprimida.
Na forma como foi apresentada esta formulao de elementos finitos, estes s podem ser aplicados ao
clculo de estruturas em que todos os seus elementos estejam alinhados, ou seja, na situao em que
todos os graus de liberdade dos elementos da estrutura sejam colineares.
Uma vez que os membros da estrutura podem ter diferentes direes, necessrio definir um sistema de
eixos global para a estrutura. Como consequncia desta definio de sistema de eixos, cada grau de
liberdade de um elemento de barra decomposto nos respetivos graus liberdade dependentes para cada
direo do novo referencial. Esta decomposio dos graus de liberdade do elemento finito nas duas
direes ortogonais do sistema de eixos global realizada com recurso a uma matriz de transformao
coordenadas.
A transformao da matriz de rigidez elementar do referencial local para o referencial global feita com
recurso expresso
=
(3.15)
(3.16)
Determinadas as matrizes de rigidez elementares e os vetores de foras nodais equivalentes dos vrios
elementos finitos no referencial global procede-se ao seu espalhamento de forma a formar o sistema de
equaes globais. Resolvido o sistema de equaes globais, para determinar os deslocamentos nodais
no referencial local de cada elemento finito necessrio realizar um procedimento oposto ao apresentado
para os passar do referencial local para o global.
Conhecidos os deslocamentos no sistema de eixos global da estrutura, os deslocamentos nodais para
cada elemento finito no respetivo sistema de eixos local so calculados do seguinte modo.
=
(3.17)
18
Tipicamente, um corpo sujeito a um estado plano de deformao apresenta uma das dimenses
significativamente superior s restantes, isto , a espessura deixa de ser desprezvel, bem como a
componente de tenso . Aplicando o conceito de deformao infinitesimal da Mecnica dos Slidos,
as componentes cartesianas da extenso e da distoro so dadas por
= { }
(3.18)
= { }
(3.19)
Para materiais que apresentem comportamento linear elstico, homogeneidade e isotropia, as tenses
podem ser obtidas atravs da relao entre tenses e deformaes
(3.20)
onde a matriz D designada por matriz de elasticidade e funo das propriedades elsticas do material,
isto , do mdulo de elasticidade, E, e do coeficiente de Poisson, . Num estado plano de tenso, para
um material isotrpico com comportamento linear elstico,
1 2
=
1 2
[
1 2
1 2
0
0
0
(3.21)
2(1 + )]
19
=
[
(1 + )(1 2)
0
1
0
0
0
1 2 ] .
2
(3.22)
Na figura 3.3 encontra-se representado um elemento finito retangular de quatro ns, de comprimento a,
altura b e espessura h. Do ponto de vista de implementao computacional conveniente numerar os
ns do elemento finito no sentido anti-horrio, numerando, em primeiro lugar, os ns que se encontram
na sua fronteira e depois, se existirem, os ns interiores.
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
=
(3.23)
No caso geral, a expresso anterior que relaciona o trabalho interno com o trabalho externo pode ser
expressa na forma
=
(3.24)
(3.25)
20
+/2
/2
+/2
+/2
/2
+/2
/2
(3.26)
/2
Na situao em que o elemento finito bidimensional est sujeito a carregamentos distribudos ao longo
da sua fronteira, o segundo membro de (3.26) reduz-se a um integral de linha. Colocando (3.26) numa
forma mais compacta,
(3.27)
=.
Note-se que a expresso apresentada em (3.26) apenas permite o clculo da matriz de rigidez elementar
e do vetor de foras nodais equivalentes para elementos finitos retangulares.
1
2
2
1 1 1
] { }
(3.28)
(3.29)
Os elementos finitos bidimensionais costumam ser divididos em duas famlias, isto , em elementos da
famlia lagrangeana e em elementos da famlia serendipity.
Os elementos finitos da famlia lagrangeana so quadrilteros que tm em comum o facto das suas
funes de forma poderem ser obtidas atravs do polinmio de Lagrange e de possurem o mesmo
nmero de ns segundo cada uma das duas direes do sistema de coordenadas. A funo de forma
(, ) para o n i determinada pela multiplicao dos polinmios interpoladores obtidos para cada
uma das duas direes do sistema de coordenadas. Os elementos finitos bidimensionais da famlia
lagrangeana tm p2 ns, sendo p o nmero de ns de um bordo.
Os elementos finitos da famlia serendipity so caraterizados por apenas possurem ns sobre a sua
fronteira. O nmero de ns de cada elemento finito bidimensional quadriltero da famlia serendipity
4(p - 1), sendo p o nmero de ns de um bordo. Estes elementos finitos apresentam um bom
compromisso entre o nmero de ns e a qualidade dos resultados obtidos.
(3.30)
21
seleo dos termos que compem o polinmio feita com recurso ao tringulo de Pascal. Se se conhecer
os n deslocamentos nodais para cada uma das direes, cada componente de (, ) interpolada
separadamente com base nas funes de forma (, ) e nos deslocamentos nodais.
(, ) = 1 (, )1 + 2 (, )2 + + (, )
(3.31a)
(, ) = 1 (, )1 + 2 (, )2 + + (, )
(3.31b)
{ }=[ 1
0
1
2
0
0
2
1
1
2
0
] 2
{ }
(3.32)
=.
Conhecidas as funes de forma, o campo de deslocamentos num qualquer ponto do elemento finito
bidimensional pode ser determinado a partir das suas funes de forma e dos valores dos seus
deslocamentos nodais. Sendo o campo de deformaes do elemento finito obtido por derivao do
campo de deslocamentos, ento, o campo de deformaes definido da seguinte forma.
(3.34)
+
{ }
Como o campo de deslocamentos aproximado com recurso a funes interpoladoras, conhecido o
campo de deslocamentos suficiente derivar as funes de forma e multiplic-las pelos respetivos
deslocamentos nodais. Assim,
1
0
0
0
1
2
1
1 2
2
0
0
2
= 0
(3.35)
1 1 2 2
] { }
(3.36)
A matriz B designada por matriz de deformao e obtida apenas com recurso derivao das funes
de forma do elemento finito associadas a cada n.
22
As tenses, para um material isotrpico com comportamento linear elstico, podem ser obtidas atravs
da relao constitutiva (3.20) que aps a substituio de (3.36) resulta em
=
(3.37)
onde a matriz D designada por matriz de elasticidade. Como se pode constatar, o clculo das tenses
no elemento finito est dependente do conhecimento dos deslocamentos nodais e da avaliao da matriz
B no ponto onde se pretende conhecer o estado de tenso.
O estado plano de tenses num determinado ponto de uma estrutura em estudo representado pelo
elemento da figura 3.4, onde tambm esto definidas as tenses principais e as suas direes.
Na prtica da engenharia importante determinar a orientao dos planos que fazem a tenso normal
atingir o mximo e o mnimo, bem como a orientao dos planos que fazem a tenso de corte chegar ao
mximo.
1,2 =
+
2
(
) + 2
2
2
(3.38)
2
.
(3.39)
Da anlise de (3.38) pode-se referir que as duas parcelas que permitem obter o valor das tenses
principais correspondem, respetivamente, s tenses normais mdias e tenso de corte mxima. O
elemento que representa a tenso de corte mxima est orientado a 45 da posio do elemento que
representa as tenses principais.
23
O elemento representado tem lados com dimenses infinitesimais dx, dy e dz, encontrando-se em
equilbrio de tenses. Este elemento representa o estado de tenso num dado ponto considerando
desprezvel a variao das tenses ao longo das suas faces. Para haver equilbrio, o momento de todas
as foras deve ser nulo [4].
Deste modo, considerando individualmente cada um dos eixos e calculando os momentos em relao a
esse eixo conclui-se o seguinte.
24
(3.40)
(3.41)
(3.42)
Deste modo, no caso tridimensional, obtm-se seis parmetros independentes de tenso, ou seja, trs
tenses normais e trs tenses tangenciais. Assim, as componentes cartesianas da extenso e da
distoro, para o estado geral de tenso, so as seguintes.
=
(3.43)
{ }
O campo de tenses associado ao campo de deformaes pode ser escrito pelas seguintes componentes
cartesianas.
=
(3.44)
{ }
Para materiais que apresentem comportamento linear elstico, homogeneidade e isotropia, as tenses
podem ser obtidas atravs da relao constitutiva
(3.45)
onde a matriz D designada por matriz de elasticidade e funo das propriedades elsticas do material,
isto , do mdulo de elasticidade, E, e do coeficiente de Poisson, . Para um material isotrpico com
comportamento linear elstico,
1
=
(1 + )(1 2) 0
0
[ 0
0
0
0
1
0
0
0
0
0
0
1 2
2
0
0
0
0
0
0
1 2
2
0
0
0
0
.
0
0
1 2
2 ]
(3.46)
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
=
(3.47)
Para um elemento finito tridimensional sujeito a um carregamento de volume, o Princpio dos trabalhos
Virtuais pode ser escrito na forma
=
(3.48)
25
(3.49)
/2
+/2
/2
+/2
+/2
/2
+/2
/2
+/2
/2
(3.50)
/2
=.
Note-se que (3.50) apenas permite o clculo da matriz de rigidez elementar e do vetor de foras nodais
equivalentes para elementos finitos hexadricos de geometria regular. Para elementos finitos distorcidos
habitual recorrer-se a elementos finitos isoparamtricos e integrao numrica.
Na figura 3.6 encontra-se representado o elemento finito paralelepipdico com oito ns, largura a,
comprimento b e altura c.
{ }
ou, de forma mais compacta,
26
1
2
2
2
1 1 1
] {}
(3.52)
= 1
(3.53)
em que Q uma matriz quadrada, que se supe no singular, que aps a substituio das respetivas
coordenadas dos ns do elemento finito permite calcular as funes de forma.
(3.54)
Se se conhecer os n deslocamentos nodais para cada direo, cada uma das componentes de (, , )
interpolada separadamente com base nas funes de forma (, , ) e nos deslocamentos nodais. Na
forma matricial equivalente a
1
1
1
2
0 2 0
0 0
0
1 0
{ } = [ 0 1 0
0 2 0 0 0 ] 2
(3.55)
2
0
0
0
0
0
0
1
2
{ }
ou, de forma mais compacta,
=.
(3.56)
O campo de deformaes do elemento finito obtido por derivao do campo de deslocamentos. Deste
modo, o campo de deformaes num estado tridimensional de tenso definido derivando cada uma das
componentes do campo de deslocamentos.
=
+
+
+
{ }
(3.57)
27
Sendo o campo de deslocamentos aproximado com recurso a funes interpoladoras, conhecido o campo
de deslocamentos para o elemento finito suficiente derivar as suas funes de forma e multiplic-las
pelos respetivos deslocamentos nodais. Assim, para um elemento finito tridimensional de n ns,
1
0 0
1
0
0
1
0 0
=
1
1
0
1
1
0
1 1
0
|
|
|
|
2
0 0
2
0
0
2
0 0
2 2
0
2
2
0
2 2
0
0 0
1
0
0
2
0 0
2
2
0
{ }
0
(3.58)
(3.59)
Como j referido, a matriz B designada por matriz de deformao e obtida apenas com recurso s
derivadas das funes de forma do elemento finito associadas a cada n.
As tenses, para um material isotrpico com comportamento linear elstico, podem ser obtidas atravs
da relao constitutiva (3.45) que aps a substituio de (3.59) conduz a
=
(3.60)
onde a matriz D designada por matriz de elasticidade. Como se pode constatar, o clculo das tenses
no elemento finito est dependente do conhecimento dos deslocamentos nodais e da avaliao da matriz
B no ponto onde se pretende conhecer os seus valores. A dificuldade desta metodologia reside em
escolher o ponto adequado para avaliar a matriz B de modo a se obter resultados precisos.
Do mesmo modo que os elementos finitos bidimensionais, os elementos finitos tridimensionais tambm
costumam ser divididos em duas famlias, isto , em elementos da famlia lagrangeana e em elementos
da famlia serendipity.
Os elementos finitos hexadricos da famlia lagrangeana so obtidos pela extenso dos elementos finitos
bidimensionais quadrilaterais ao caso tridimensional. As funes de forma dos elementos desta famlia
podem ser obtidas de duas maneiras. A primeira metodologia para a obteno das funes de forma
consiste em recorrer expresso geral (3.53). A outra metodologia resulta da combinao dos
polinmios de Lagrange deduzidos para cada direo ortogonal.
Os elementos finitos hexadricos da famlia serendipity possuem apenas ns sobre a sua fronteira. As
funes de forma para os elementos finitos desta famlia, em que n representa o nmero total de ns,
so determinadas atravs da expresso geral (3.53).
28
A teoria Euler-Bernoulli considera que as seces transversais se mantm planas e normais ao eixo da
barra aps a deformao, pelo que, as deformaes por corte so desprezadas. Considera-se somente a
existncia de cargas transversais ao eixo da viga e so desprezadas as cargas axiais.
Considere-se uma viga de comprimento L, momento de inrcia , sob ao de cargas verticais e
momentos que atuam no plano xz e que o eixo x da viga coincide com a linha que une o centro de
gravidade das seces transversais. A teoria de Euler-Bernoulli para vigas estabelece as seguintes
hipteses [14]:
O deslocamento vertical, w, dos pontos contidos numa seco transversal so iguais ao
valor de deflexo da viga;
O deslocamento lateral v ao longo do eixo y nulo;
As seces transversais normais ao eixo da viga permanecem planas e ortogonais ao eixo
da viga aps deformao.
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
=
(3.61)
Para deduo da equao de equilbrio considere-se a figura 3.7 relativa a um elemento finito de viga
sujeito a um carregamento transversal distribudo ao longo do seu comprimento que origina foras
nodais concentradas e momentos fletores.
(3.62)
29
De acordo com o Captulo 2, o Princpio dos Trabalhos Virtuais, aps as devidas manipulaes
algbricas, pode-se escrever na forma
+/2
+/2
/2
(3.63)
/2
em que representa o momento de inrcia em relao ao eixo y. Colocando (3.63) numa forma mais
compacta,
(3.64)
=.
Considere-se o elemento finito de viga com n ns representado na figura 3.8 de comprimento L, mdulo
de elasticidade E e momento de inrcia .
Os elementos finitos de viga possuem dois graus de liberdade por n, isto , um deslocamento segundo
z e uma rotao no plano xz. Num elemento finito com n ns existem 2n graus de liberdade. Quanto
numerao dos ns, para efeitos de implementao computacional, conveniente que seja feita da
esquerda para a direita.
A obteno das funes de forma para o elemento finito de viga de Euler-Bernoulli feita com recurso
interpolao hermitiana. Simplificadamente, a obteno das funes de forma realizada atravs da
expresso matricial
1
1
1
2
{
}=[
2
1
0
1
1
2
0
1
0 1 1
1
] { }
(3.65)
(3.66)
Um dado ponto que se encontre distncia z do eixo da viga no estado indeformado, permanece mesma
distncia aps deformao da viga. No estado deformado, a seco transversal da viga sobre apenas uma
rotao
=
(3.67)
Desta forma, o campo de deslocamentos num ponto qualquer do elemento finito de viga pode ser
determinado atravs das igualdades seguintes.
30
(, , ) =
(3.68)
(, , ) = 0
(3.69)
(, , ) = ()
(3.70)
(3.71)
em que () so as funes de forma do elemento finito para o grau de liberdade i. Colocando (3.71)
em notao matricial,
1
= [1 2 2 ] { 2 }
(3.72)
2
ou, de forma mais compacta,
(3.73)
=.
A partir do campo de deslocamentos descrito, conclui-se que s existe deformao segundo a direo
horizontal paralela ao eixo longitudinal x. Sendo o campo de deformaes do elemento finito obtido
pela derivao do campo de deslocamentos, ento,
=
u
2
= 2 .
(3.74)
2
2
2
(3.76)
As tenses, para um material isotrpico com comportamento linear elstico, so obtidas atravs da
relao constitutiva
31
(3.77)
(3.78)
Para vigas flexo, as tenses variam linearmente ao longo da altura e os valores mximos ocorrem nos
planos limite da viga. Assim, o momento fletor obtido a partir da integrao da tenso ao longo da
seco transversal da viga.
=
(3.79)
Aps as devidas substituies em (3.79) e resolvendo o integral, o momento fletor na viga obtido
atravs da expresso
=
(3.80)
onde a matriz B deve ser avaliada no ponto onde se pretende calcular o momento fletor. Note-se que
esta formulao de elementos finitos no permite considerar esforos axiais. Esta limitao ultrapassa
com a combinao desta formulao com a do elemento finito unidimensional.
A teoria de Timoshenko considera que as seces se mantm planas aps deformao mas, ao contrrio
da formulao de Euler-Bernoulli, estas no se mantm normais ao eixo da barra. A formulao de
Timoshenko considera o contributo das deformaes por corte. Considera-se somente a existncia de
cargas transversais ao eixo da viga aplicadas segundo a direo z e que as cargas axiais so desprezadas.
A teoria de Timoshenko para vigas estabelece as seguintes hipteses [14]:
O deslocamento vertical, w, dos pontos contidos numa seco transversal so iguais ao
valor de deflexo da viga;
O deslocamento lateral v ao longo do eixo y nulo;
As seces transversais normais ao eixo da viga permanecem planas mas no
necessariamente ortogonais ao eixo da viga aps deformao.
Considere-se um elemento finito de comprimento L, com uma rea de seco transversal A, sujeito a um
carregamento distribudo ao logo do seu comprimento no plano xz e que o eixo x do elemento finito
coincide com a linha que une o centro de gravidade de todas as seces transversais.
O Princpio dos Trabalhos Virtuais estabelece que o trabalho realizado pelas tenses internas na
deformao virtual do corpo igual ao trabalho realizado pelas foras exteriores nos deslocamentos
virtuais dos seus pontos de aplicao.
=
32
(3.81)
Para o elemento finito descrito, a relao entre trabalho virtual interno e externo equivalente a
+ = .
(3.82)
Atendendo ao comprimento do elemento finito e de acordo com o que j foi expresso para os elementos
finitos de viga pela teoria Euler-Bernoulli, aps alguma manipulao algbrica, chega-se a
+/2
/2
+/2
+/2
/2
(3.83)
/2
(3.84)
Considere-se o elemento finito de viga com n ns representado na figura 3.9, de comprimento L, rea
da seco transversal A, momento de inrcia , mdulo de elasticidade E e mdulo de distoro .
Como o elemento finito de viga possui dois graus de liberdade por n, isto , um deslocamento segundo
z e uma rotao no plano xz, ento, no elemento finito com n ns existem 2n graus de liberdade. As
funes de forma para o elemento finito de viga de Timoshenko so obtidas do mesmo modo que as
funes de forma para os elementos finitos unidimensionais.
Um dado ponto que se encontra distncia z do eixo da viga no estado indeformado, permanecer
mesma distncia aps deformao da viga mas no necessariamente ortogonal. No estado deformado, a
seco transversal da viga sobre apenas uma rotao dada por
=
+.
(3.85)
Pela anlise de (3.85), a rotao obtida pela soma da inclinao do eixo da viga com uma rotao
adicional . Note-se que o valor da rotao no coincide com a inclinao da viga como acontece na
teoria de Euler-Bernoulli. O campo de deslocamentos num qualquer ponto do elemento de viga de
Timoshenko pode ser determinado atravs das igualdades seguintes.
(, , ) =
(3.86)
(, , ) = 0
(3.87)
(, , ) = ()
(3.88)
33
(3.89a)
() = 1 ()1 + 2 ()2 + + ()
(3.89b)
Onde em (3.89) () a funo de forma do elemento finito para o n i. Colocando (3.89) em notao
matricial, chega-se a
1
1
2
0 2 0 0
{ }=[ 1
] 2
(3.90)
0 1 0 2 0
{ }
ou, de forma mais compacta,
=.
(3.91)
O campo de deformaes do elemento finito dado por derivao do campo de deslocamentos, ou seja,
(3.92)
+
=
.
(3.93)
=
e
=
Da anlise de (3.92) conclui-se que os elementos finitos pela teoria de Timoshenko exigem apenas
continuidade C0 para a deflexo e campo de rotaes. Por conseguinte, so mais simples do que os
elementos de viga de Euler-Bernoulli. Infelizmente, sofrem geralmente do chamado locking, defeito que
produz excesso de rigidez em vigas esbeltas.
Na forma matricial, as extenses para um elemento finito com n ns so obtidas pela expresso
1
1
2
1
2
= [0
0
] 2
(3.94)
0
{ }
ou, de forma mais compacta,
= .
(3.95)
De igual modo, para um elemento finito com n ns, o clculo das distores efetuado com recurso
expresso
34
=[
1
1
2
] 2
{ }
(3.96)
(3.97)
As tenses axiais e de corte, para um material isotrpico com comportamento linear elstico, so obtidas
atravs das relaes
=
(3.98)
(3.99)
(3.100)
= .
(3.101)
Para vigas flexo, as tenses axiais variam linearmente ao longo da altura e os valores mximos
ocorrem nos planos limite da viga. O momento fletor obtido a partir da integrao da tenso ao longo
da seco transversal da viga.
= =
(3.102)
As tenses de corte pela teoria de Timoshenko permanecem constantes ao longo da espessura, pelo que,
o esforo transverso atuante calculado pela expresso
= =
(3.103)
em que corresponde rea reduzida da seco transversal. Para seces macias de forma retangular
= (5/6) e para circulares = (6/7).
As matrizes Bb e Bs devem ser avaliadas nos pontos onde se pretende calcular o momento fletor e o
esforo transverso, respetivamente. Importa referir que, quer o momento fletor, quer o esforo
transverso, calculados pelas expresses (3.102) e (3.103) s apresentam valores aceitveis em
determinados pontos do elemento finito. Normalmente, estes pontos so coincidentes com os utilizados
no procedimento de integrao numrica pela quadratura de Gauss-Legendre.
35
A teoria de Kirchhoff, semelhana dos elementos de viga pela teoria Euler-Bernoulli, no permite
considerar o efeito da deformabilidade por esforo transverso. A teoria de Kirchhoff adequada para o
estudo de lajes onde a razo entre a espessura e a menor dimenso da superfcie mdia inferior a 1/10,
ou seja, adequada ao estudo de lajes finas.
No estudo de elementos finitos de laje pela teoria de Kirchhoff, alm da condio da espessura ser muito
inferior s outras dimenses, considerado que as cargas so aplicadas transversalmente ao plano mdio
da laje. Esta teoria estabelece as seguintes hipteses simplificadoras [17]:
Nos pontos do plano mdio os deslocamentos u e v so nulos;
Todos os pontos normais ao plano mdio possuem o mesmo deslocamento vertical;
A tenso desprezvel;
As retas normais ao plano mdio indeformado da laje permanecem retas e normais ao plano
mdio aps deformao.
Na teoria de Kirchhoff para lajes, o polinmio interpolador para o deslocamento vertical do plano mdio,
w(x, y), definido em funo do nmero de graus de liberdade existentes em cada n e da quantidade
de ns do elemento finito. Uma das particularidades na formulao dos elementos finitos pela teoria de
Kirchhoff prende-se com a continuidade das funes de forma. Se as funes de forma do elemento
finito garantem continuidade das rotaes entre elementos, estes designam-se por elementos finitos
conformes. Caso no exista continuidade das rotaes entre elementos finitos, estes designam-se por
elementos finitos no conformes.
36
(3.104)
onde e h representam o plano mdio e a espessura da laje, respetivamente. O Princpio dos Trabalhos
Virtuais estabelece que o trabalho realizado pelas tenses internas na deformao virtual do corpo
igual ao trabalho realizado pelas foras exteriores nos deslocamentos virtuais dos seus pontos de
aplicao.
=
(3.105)
(3.106)
Atendendo ao apresentado no Captulo 2 sobre o Princpio dos Trabalhos Virtuais, a relao (3.106),
aps alguma manipulao algbrica, equivalente a
+/2 +/2
3 +/2 +/2
12 /2 /2
/2 /2
(3.107)
(3.108)
As funes de forma em elementos finitos de laje pela teoria de Kirchhoff so definidas em funo do
nmero de graus de liberdade dos ns do elemento finito. As diversas formulaes de elementos finitos
desta teoria podem apresentar trs ou quatro graus de liberdade por n. O significado fsico deste quarto
grau de liberdade corresponde ao valor da curvatura de toro no n em causa [5].
Na figura 3.11 encontra-se representado um elemento finito retangular de comprimento a, largura b e
espessura h.
O polinmio interpolador que descreve a aproximao elementar para o deslocamento vertical do plano
mdio, w(x, y), definido por um nmero de termos igual ao nmero de graus de liberdade do elemento
finito.
37
(, ) = 1 + 2 + 3 + 4 2 + 5 + 6 2 + 7 3 + 8 2 + 9 2 + 10 3
(3.109)
Para determinar o valor das constantes ci (i = 1, 2, n), com n a representar o nmero de graus de
liberdade do elemento finito, necessrio reescrever estas mesmas equaes para cada uma das
componentes de deslocamento dos ns.
Segundo as hipteses simplificadoras adotadas, um dado ponto que se encontre distncia z do plano
mdio no estado indeformado, permanece mesma distncia aps deformao da laje. No estado
deformado, qualquer segmento reto perpendicular ao plano mdio sofre apenas rotao. Assim,
analisando a figura 3.12, para o plano xz
=
(3.110)
(3.111)
Desta forma, o campo de deslocamentos num ponto qualquer do elemento de laje pode ser determinado
atravs das seguintes igualdades.
(, , ) = (, )
(3.112a)
(, , ) = (, )
(3.112b)
(, , ) = (, )
(3.112c)
38
transversais. O deslocamento transversal para elementos finitos da teoria de Kirchhoff pode ser
interpolado a partir dos seus deslocamentos nodais, isto ,
1
2
3
4
= [1 2 3 4 3 2 1 ]
(3.113)
3
2
1
{ }
ou, de forma mais compacta,
=.
(3.114)
2
2
(3.115a)
2
2
(3.115b)
(3.115c)
= 2
2 2
2
2 2
2
2 2
2
2
2
1
2
2
{}
2
2 n
2
]
(3.116)
(3.117)
Uma vez que a laje est livre para se deformar na direo z e que a tenso desprezvel, pode-se
admitir que a relao entre tenso e deformao anloga dos problemas de Estado Plano de Tenso.
39
Assim, para materiais isotrpicos e com comportamento linear elstico, estabelece-se a seguinte a
relao constitutiva entre o campo de tenses e o campo de deformaes.
(3.118)
=
Aps as devidas substituies, (3.118) equivalente a
(3.119)
onde matriz D designada por matriz de elasticidade e funo das propriedades elsticas do material,
isto , do mdulo de elasticidade, E, e do coeficiente de Poisson, . Em problemas de lajes pela teoria
de Kirchhoff,
1 2
=
1 2
[
1 2
1 2
0
0
(3.120)
2(1 + )]
O campo de tenses associado ao campo de deformaes pode ser escrito pelas seguintes componentes
cartesianas.
={ }
(3.121)
Para lajes sujeitas flexo, as tenses variam linearmente ao longo da espessura e os valores mximos
ocorrem nos planos limite da laje. Os esforos internos so, assim, obtidos a partir da integrao das
tenses ao longo da espessura da laje.
+/2
{ } =
{ }
/2
(3.122)
3
.
12
(3.123)
A teoria de Reissner-Mindlin, semelhana dos elementos de viga pela teoria de Timoshenko, permite
considerar o efeito da deformabilidade devido ao esforo transverso. Nesta teoria considerado que as
retas perpendiculares ao plano mdio se mantm retas aps deformao mas no necessariamente
normais ao plano mdio da laje. Esta teoria adequada ao estudo de lajes espessas, mas, dada a
simplicidade e facilidade de utilizao dos elementos finitos formulados por esta teoria tambm se
utilizam em situaes em que se deixa de considerar a laje como espessa.
40
O estudo do elemento finito de laje pela teoria de Reissner-Mindlin pressupe que a espessura muito
inferior s outras dimenses e que as cargas so aplicadas transversalmente ao seu plano mdio. Assim
como na teoria de Kirchhoff, a teoria de Reissner-Mindlin tambm est fundamentada em hipteses
simplificadoras [17], nomeadamente:
Nos pontos do plano mdio os deslocamentos u e v so nulos;
Todos os pontos normais ao plano mdio possuem o mesmo deslocamento vertical;
A tenso desprezvel;
As retas normais ao plano mdio indeformado da laje permanecem retas mas no
necessariamente normais ao plano mdio aps deformao.
Como as deformaes por corte no so nulas, deixa de se poder calcular diretamente o campo de
rotaes a partir do campo de deslocamentos transversais. Desta forma, para se caracterizar o campo de
deslocamentos numa laje espessa necessrio determinar trs campos independentes, isto , um campo
de deslocamentos transversais e dois campos de rotaes.
(3.124)
onde e h representam o plano mdio e a espessura da laje, respetivamente. O Princpio dos Trabalhos
Virtuais estabelece que o trabalho realizado pelas tenses internas na deformao virtual do corpo
igual ao trabalho realizado pelas foras exteriores nos deslocamentos virtuais dos seus pontos de
aplicao.
(3.125)
Considerando um elemento finito submetido a um carregamento distribudo no seu plano mdio atuando
na direo z, a relao existente entre trabalho virtual interno e trabalho virtual externo pode ser escrita
da seguinte forma.
=
(3.126)
De acordo com o apresentado no Captulo 2, a relao (3.126), aps alguma manipulao algbrica,
equivalente a
+/2
/2
+/2
+/2
/2
/2
+/2
(3.127)
/2
em que
3
= [12
].
(3.128)
(3.129)
41
Na figura 3.13 encontra-se representado um elemento finito retangular de quatro ns com trs graus de
liberdade por n, comprimento a, largura b e espessura h. Uma das principais caractersticas dos
elementos finitos formulados pela teoria de Reissner-Mindlin advm do facto de se poder utilizar
diretamente as funes de forma dos elementos finitos bidimensionais. Esta caracterstica dos elementos
finitos usados nas lajes pela teoria de Reissner-Mindlin permite, ainda, a utilizao de elementos finitos
isoparamtricos bidimensionais.
Da anlise da figura 3.14 percebe-se que a rotao adicional da laje faz com que um dado segmento que
seja perpendicular ao plano mdio da laje no estado indeformado j no permanea aps a deformao
da laje. Note-se que quanto mais espessa for a laje mais importante se revela a rotao adicional que
este segmento reto sofre.
Como no existe ortogonalidade do segmento normal ao plano mdio, o clculo do campo de rotaes
difere do da teoria de Kirchhoff. Assim, para o plano xz
=
e de forma anloga para o plano yz
42
(3.130)
+ .
(3.131)
Esta diferena garante teoria de Reissner-Mindlin uma maior flexibilidade quanto sua
empregabilidade, tornando-a, hierarquicamente superior quando comparada com a teoria de Kirchhoff.
O campo de deslocamentos num ponto qualquer do elemento de laje pode ser determinado atravs das
igualdades seguintes.
(, , ) = (, )
(3.132a)
(, , ) = (, )
(3.132b)
(, , ) = (, )
(3.132c)
0
0
1 0
0
,1
{ } = [ 0 1 0 0 0 ]
(3.133)
0
0 1 0
0
,
{, }
ou, de forma mais compacta,
=
(3.134)
= (
+
)
(3.135a)
(3.135b)
(3.135c)
(3.135d)
(3.135e)
43
0
0
=
0
1
1
[
0
1
1
,1
,1
,
{ , }
(3.136)
que equivalente a
= [ ]
(3.137)
= .
(3.138)
Para materiais isotrpicos e com comportamento linear elstico, estabelece-se a seguinte relao
constitutiva entre o campo de tenses e o campo de deformaes.
=
(3.139)
(3.140)
].
(3.141)
O parmetro em (3.141) tem como finalidade corrigir o efeito da distribuio no uniforme das tenses
tangenciais ao longo da espessura da laje. Como as deformaes por corte so independentes da
coordenada z, as tenses tangenciais transversais adquirem uma distribuio constante ao longo da
espessura da laje.
De acordo com a teoria da elasticidade, a distribuio exata das tenses tangenciais transversais no
constante ao longo da espessura mas parablica com valores nulos nas extremidades superior e inferior
da laje. Para contornar este problema utilizado um fator de correo com o objetivo de igualar o
trabalho de deformao realizado entre as solues aproximada (Teoria de Reissner-Mindlin) e exata
(Teoria da Elasticidade) [14]. Para um elemento finito de laje com espessura constante adota-se o valor
para de 5/6.
Os esforos internos so obtidos a partir da integrao das tenses ao longo da espessura da laje. Sabendo
que as tenses de flexo variam linearmente ao longo da espessura e que as tenses de corte permanecem
constantes, tem-se,
44
+/2
{ }=
{ }
/2
(3.142)
+/2
{ } =
{ } .
(3.143)
/2
3
12
(3.144)
e
(3.145)
= .
Para um material isotrpico com comportamento linear elstico,
1 2
=
1 2
[
1 2
1 2
0
0
(3.146)
2(1 + )]
=
[
2(1 + )
2(1 + )]
(3.147)
Dada a sua simplicidade e facilidade de utilizao, os modelos de elementos finitos para lajes espessas
so os mais utilizados, mesmo em situaes para as quais se pode deixar de considerar a laje como
espessa. Contudo, h situaes em que a diminuio da espessura da laje coloca alguns problemas no
que toca utilizao de elementos finitos baseados na teoria de Reissner-Mindlin.
Um dos fenmenos mais gravosos que podem surgir nesta circunstncia o chamado locking. Este
fenmeno de locking est associado a uma rigidez excessiva do modelo numrico utilizado. A sua
resoluo passa pela subavaliao dos elementos das matrizes de rigidez elementares, ou seja, realizando
uma integrao numrica reduzida ou uma integrao numrica seletiva.
A formulao apresentada no permite a incluso de esforos normais atuantes no plano da laje. A
combinao do elemento finito de laje pela teoria de Reissner-Mindlin com o elemento finito do Estado
Plano de Tenso permite obter o designado elemento finito laminar. O elemento finito laminar possui
cinco graus de liberdade sendo dois vindos do elemento finito bidimensional usado no Estado Plano de
Tenso e trs do elemento de laje pela teoria de Reissner-Mindlin. Devido s suas caractersticas, este
elemento finito empregue no estudo de lajes pr-esforadas e de estruturas laminares compsitas. O
elemento finito laminar, alm do estudo de lajes, pode ser adaptado ao estudo de cascas.
45
46
4
ELEMENTOS FINITOS COM
SUBSTITUIO DE VARIVEL
={ }
(4.1)
47
= { 2 } .
(4.2)
De modo a automatizar o clculo da matriz de rigidez elementar e do vetor de foras nodais equivalentes
conveniente realizar uma substituio de varivel do seguinte tipo.
= ()
(4.3)
As coordenadas dos ns do elemento finito so interpoladas com recurso seguinte expresso geral.
() = 1 ()1 + 2 ()2 + + ()
(4.4)
(4.5)
em que o determinante jacobiano. O determinante jacobiano tem como funo definir a relao
existente para a dimenso do elemento finito entre os dois referenciais de modo a se poder usar os limites
de integrao considerados em (4.5). Se os parmetros E e A no forem constantes, estes podem ser
interpolados com as mesmas funes de forma com que foram interpoladas as coordenadas dos ns, ou
seja,
() = 1 ()1 + 2 ()2 +. . . + ()
(4.6)
() = 1 ()1 + 2 ()2 +. . . + ()
(4.7)
1
2
=
1 +
2 +. . . +
(4.8)
Para avaliar o integral (4.5) ainda necessrio definir a matriz B em funo de r. Desta forma, existe a
necessidade de calcular as derivadas das funes de forma em ordem a x mas expressas em funo de r.
Recorrendo regra de derivao em cadeia das funes de forma para um n genrico i, chega-se
expresso geral
=
.
(4.9)
(4.10)
Calculadas todas as derivadas das funes de forma procede-se sua distribuio na matriz B de acordo
com o formato apresentado no Captulo 3. Apresentados todos os passos necessrios para calcular a
matriz de rigidez do elemento finito com recurso substituio de varivel do tipo (4.3) pormenorizado
o clculo do vetor de foras nodais equivalentes.
48
Para um elemento finito unidimensional carregado axialmente ao longo do seu comprimento, o vetor de
foras nodais equivalentes com substituio de varivel obtido pelo seguinte integral.
+1
(4.11)
,
As coordenadas do elemento finito real bidimensional no referencial Oxy so armazenadas na matriz
em que
1 1
2 2
=[
]
(4.12)
e as coordenadas do elemento finito normalizado bidimensional no referencial Ors so armazenadas na
matriz , sendo
1 1
2 2
= [
].
(4.13)
49
De forma a facilitar o clculo da matriz de rigidez e do vetor de foras nodais equivalentes do elemento
finito efetuada uma substituio de variveis do seguinte tipo.
{
= (, )
= (, )
(4.14)
Esta substituio de variveis permite o estudo de elementos finitos com geometria irregular com as
mesmas funes de forma deduzidas para um elemento finito de geometria regular. Este elemento finito
de geometria normalizada corresponde a um elemento finito bidimensional quadrado cuja dimenso dos
lados vale dois.
A interpolao de coordenadas em duas dimenses baseia-se na seguinte aproximao para a geometria
do elemento finito de n ns.
= (, )
(4.15a)
=1
= (, )
(4.15b)
=1
(. ) = (, )
(4.16a)
=1
(, ) = (, )
(4.16b)
=1
=
1
+1
(4.17)
em que o determinante da matriz jacobiana. Para se calcular o integral (4.17) necessrio que todos
os termos da funo integranda dependam das variveis r e s. Caso os parmetros E e da matriz D e h
no sejam constantes, os seus valores podem ser interpolados com recurso s mesmas funes de forma
com que so interpoladas as coordenadas dos ns.
(, ) = 1 (, )1 + 2 (, )2 +. . . + (, )
(4.18)
(, ) = 1 (, )1 + 2 (, )2 +. . . + (, )
(4.19)
(, ) = 1 (, )1 + 2 (, )2 +. . . + (, )
(4.20)
Note-se que pode ser prefervel adotar uma discretizao que atenda a esta variao de geometria e
propriedades do material em vez de interpolar os seus valores.
A matriz jacobiana correspondente transformao definida em (4.14) definida por
50
= [
] .
(4.21)
A obteno dos termos da matriz jacobiana realizada atravs da multiplicao das coordenadas dos
ns do elemento finito real pelas derivadas das funes de forma do elemento finito normalizado. Na
forma matricial, a obteno da matriz jacobiana realizada com recurso expresso geral
] = [1
1
2
2
2
]
(4.22)
(4.23)
A matriz B tambm dependente das variveis r e s. De modo a ser possvel calcular o integral (4.17)
necessrio obter as derivadas das funes de forma que compem a matriz B em ordem a x e y mas
expressas em funo de r e s. Desta forma, recorrendo regra de derivao em cadeia das funes de
forma para um n genrico i, chega-se s expresses seguintes.
=
+
(4.24a)
=
+
(4.24b)
Estendendo aos n ns do elemento finito e colocando na forma matricial, a regra de derivao em cadeia
fica
1
1
1
2
2
=
] [
(4.25)
(4.26)
(4.27)
possvel garantir que a inversa da matriz jacobiana existe desde que os elementos finitos reais no
apresentem grandes distores. No entanto, esta correspondncia deixa de se verificar em situaes em
que dois dos lados de um elemento finito com lados retos compartilham um ngulo interno maior que
51
radianos [21]. Calculadas todas as derivadas das funes de forma procede-se sua distribuio na
matriz B de acordo com o formato apresentado no Captulo 3.
O vetor de foras nodais equivalentes de um elemento finito bidimensional com substituio de varivel,
sujeito a um carregamento por unidade de superfcie no plano Ors, obtido pelo seguinte integral.
+1
+1
=
1
(4.28)
Na situao em que o elemento finito, em estudo, est sujeito a carregamentos distribudos nos seus
bordos, a expresso para o clculo do vetor de foras nodais equivalentes reduz-se a um integral de
linha. Para determinar o valor das foras nodais equivalentes para um carregamento deste tipo,
necessrio relacionar o comprimento de um segmento infinitesimal definido no referencial
isoparamtrico com o correspondente referencial cartesiano. Isto feito de forma anloga ao apresentado
para os elementos finitos unidimensionais.
De modo a automatizar o clculo da matriz de rigidez elementar e do vetor de foras nodais equivalentes
conveniente realizar uma substituio de varivel do seguinte tipo.
= (, , )
{ = (, , )
= (, , )
(4.29)
, em
As coordenadas do elemento finito real com n ns no referencial Oxyz so armazenadas na matriz
que
52
1
2
=[
1
2
1
2
]
(4.30)
].
As funes de forma do elemento finito de geometria normalizada so deduzidas em funo de r, s e t
com as coordenadas armazenas na matriz .
No caso dos elementos finitos hexadricos de ordem superior ao apresentado na figura 4.3, so
necessrias funes de forma de ordem superior. Estes elementos finitos tm a vantagem de permitir
modelar geometrias curvas recorrendo a discretizaes com um menor nmero de elementos finitos, em
comparao com a utilizao de elementos finitos de baixa ordem. Contudo, dada a utilizao de um
maior nmero de ns e um maior grau das funes de forma, estes elementos finitos tornam-se mais
dispendiosos computacionalmente.
A interpolao de coordenadas em trs dimenses baseia-se na seguinte aproximao para a geometria
do elemento finito de n ns.
= (, , )
(4.32a)
=1
= (, , )
(4.32b)
=1
= (, , )
(4.32c)
=1
A matriz de rigidez de um elemento finito hexadrico com substituio de varivel obtida pelo integral
+1
=
1
+1
+1
(4.33)
em que o determinante da matriz jacobiana. Para se calcular o integral (4.33) necessrio que todos
os termos da funo integranda dependam das variveis r, s e t.
A matriz jacobiana correspondente transformao definida em (4.29) definida da seguinte forma.
(4.34)
A obteno dos termos da matriz jacobiana realizada atravs da multiplicao das coordenadas dos
ns do elemento finito real pelas derivadas das funes de forma do elemento finito normalizado. Na
forma matricial, a obteno da matriz jacobiana realizada com recurso expresso geral
53
= [1
2
]
2
2
2
(4.35)
(4.36)
De modo a ser possvel calcular o integral (4.33) necessrio obter as derivadas das funes de forma
que compem a matriz B em ordem a x, y e z mas expressas em funo de r, s e t. Assim, recorrendo
regra de derivao em cadeia das funes de forma para um n genrico i, chega-se s expresses
seguintes.
=
+
+
(4.37a)
=
+
+
(4.37b)
=
+
+
(4.37c)
Na forma forma matricial, a regra de derivao em cadeia para um elemento finito de n ns fica
1
1
1
2
2
=
] [
(4.38)
(4.39)
(4.40)
Calculadas todas as derivadas das funes de forma com recurso a (4.40) procede-se sua distribuio
na matriz B de acordo com a sua estrutura. Uma vez que todos os componentes da funo integranda se
encontram definidos em funo de r, s e t agora possvel proceder ao clculo da matriz de rigidez do
elemento finito utilizando (4.33).
O vetor de foras nodais equivalentes de um elemento finito hexadrico com substituio de varivel
sujeito a um carregamento de volume obtido pelo integral seguinte.
+1
=
1
54
+1
+1
(4.41)
5
INTEGRAO NUMRICA
A quadratura de Gauss-Legendre um dos mtodos mais expeditos para realizar a tarefa de integrao
numrica. Segundo este mtodo, de um modo geral, pode-se determinar o integral de uma funo
genrica atravs de
() = ( ) ( )
=1
(5.1)
=1
() =
+1
+
(
+
)
2
2
2
1
(5.2)
55
Atendendo a (5.1),
+
()
(
+
).
2
2
2
(5.3)
=1
() ( )
1
(5.4)
=1
wi
ri
2.0
0.0
1.0000000000
-0.5773502692
1.0000000000
0.5773502692
0.5555555556
-0.7745966692
0.8888888888
0.0000000000
0.5555555556
0.7745966692
0.3478548451
-0.8611363116
0.6521451549
-0.3399810436
0.6521451549
0.3399810436
0.3478548451
0.8611363116
0.2369268851
-0.9061798459
0.4786286705
-0.5384693101
0.5688888889
0.0000000000
0.4786286705
0.5384693101
0.2369268851
0.9061798459
56
+1
(, ) ( , )
1
(5.5)
=1 =1
wi
wj
ri
sj
2.0
2.0
0.0
0.0
1.0000000000
1.0000000000
-0.5773502692
-0.5773502692
1.0000000000
1.0000000000
0.5773502692
-0.5773502692
1.0000000000
1.0000000000
0.5773502692
0.5773502692
1.0000000000
1.0000000000
-0.5773502692
0.5773502692
0.5555555556
0.5555555556
-0.7745966692
-0.7745966692
0.8888888888
0.5555555556
0.0000000000
-0.7745966692
0.5555555556
0.5555555556
0.7745966692
-0.7745966692
0.5555555556
0.8888888888
0.7745966692
0.0000000000
0.5555555556
0.5555555556
0.7745966692
0.7745966692
0.8888888888
0.5555555556
0.0000000000
0.7745966692
0.5555555556
0.5555555556
-0.7745966692
0.7745966692
0.5555555556
0.8888888888
-0.7745966692
0.0000000000
0.8888888888
0.8888888888
0.0000000000
0.0000000000
57
Apesar de se procurar obter o valor exato da funo integranda, em algumas situaes conveniente
integrar as funes com um nmero de pontos inferior ao mnimo necessrio para se obter o valor exato
do integral. A escolha do nmero de pontos de integrao, tambm designados por pontos de Gauss,
influencia diretamente o custo computacional da anlise por elementos finitos. Em teoria, subir a ordem
de integrao conduz a resultados sucessivamente mais corretos. Da mesma forma que a utilizao de
poucos pontos de integrao, no limite apenas um, pode conduzir a resultados incorretos ou mesmo
tornar as matrizes de rigidez elementares singulares.
A integrao numrica designa-se completa quando se utiliza um nmero mnimo de pontos de modo a
obter o valor exato do integral. A integrao diz-se reduzida quando se considera um nmero de pontos
de integrao inferior ao mnimo necessrio para efetuar a integrao completa. A integrao reduzida
muitas vezes usada propositadamente para reduzir o excesso de rigidez relativamente soluo fsica
correta obtida quando se realiza integrao completa. Assim, a integrao reduzida uma das primeiras
tcnicas utilizadas para reduzir a rigidez dos elementos finitos.
Alternativamente ao uso da integrao reduzida, em algumas formulaes de elementos finitos,
habitual realizar uma integrao numrica seletiva. Em elementos finitos de laje formulados pela teoria
de Reissner-Mindlin o uso de integrao numrica seletiva corresponde a usar integrao completa para
integrar a parcela de flexo e integrao reduzida para integrar a parcela de corte.
semelhana do exposto nos pontos anteriores, os integrais em domnios tridimensionais podem ser
aproximados efetuando um somatrio de termos constitudos pelos valores da funo integranda num
certo nmero discreto de pontos predefinidos, multiplicados por pesos convenientes. Assim, para o caso
de elementos hexadricos obtm-se
+1
+1
+1
(, , ) ( , , )
1
(5.6)
=1 =1 =1
em que nr, ns e nt correspondem ao nmero de pontos de integrao a adotar ao longo das direes Or,
Os e Ot, respetivamente. Por outro lado, ri, sj e tk so as coordenadas no referencial natural do ponto de
amostragem (i, j, k). Finalmente, wi, wj e wk so os pesos a considerar em funo dos pontos de integrao
escolhidos.
O nmero de pontos de integrao a usar est associado ao grau mximo do polinmio a integrar, ou
seja, elementos finitos com ordens de integrao superiores exigem mais pontos de integrao. No
contexto das formulaes tridimensionais, a utilizao de tcnicas de integrao reduzida tem por
objetivo melhorar o desempenho dos elementos finitos, nomeadamente, atravs da reduo da rigidez.
Na tabela 5.3 so mostrados os pesos e as coordenadas dos pontos de integrao definidos para as duas
primeiras ordens de integrao de elementos finitos hexadricos.
58
w i = wj = w k
ri
sj
tk
2.0
0.0
0.0
0.0
1.0000000000
-0.5773502692
-0.5773502692
-0.5773502692
1.0000000000
0.5773502692
-0.5773502692
-0.5773502692
1.0000000000
0.5773502692
0.5773502692
-0.5773502692
1.0000000000
-0.5773502692
0.5773502692
-0.5773502692
1.0000000000
-0.5773502692
-0.5773502692
0.5773502692
1.0000000000
0.5773502692
-0.5773502692
0.5773502692
1.0000000000
0.5773502692
0.5773502692
0.5773502692
1.0000000000
-0.5773502692
0.5773502692
0.5773502692
59
Em suma, neste captulo foi apresentada a metodologia de integrao numrica mais utilizada no mbito
do Mtodo dos Elementos Finitos. Assim, justifica-se a importncia da quadratura de Gauss-Legendre
no mbito do Mtodo dos Elementos Finitos.
60
6
GERAO DE MALHAS DE
ELEMENTOS FINITOS
Os elementos finitos da grelha podem ser triangulares ou retangulares. A grelha sobreposta sobre o
objeto a modelar e os elementos da grelha que esto fora do objeto so removidos. Os elementos da
grelha que cruzam a fronteira do objeto so ajustados ou aparados para que se encaixem no objeto. A
principal dificuldade na aplicao desta tcnica consiste em ajustar os elementos da grelha fronteira
61
do objeto. A vantagem da sua aplicao que se obtm uma malha de elementos finitos bem discretizada
no interior do objeto. A figura 6.1 mostra a aplicao da tcnica de sobreposio de uma grelha.
A gerao de malhas por transformao de coordenadas o tipo mais simples de mapeamento e consiste
em usar uma transformao de coordenadas que transforma o domnio elementar no domnio real. A
desvantagem deste mtodo reside no facto de ser necessrio determinar a transformao de coordenadas
que faa a passagem do domnio elementar para o domnio real [10]. A figura 6.2 mostra a aplicao da
tcnica de transformao de coordenadas.
O mapeamento conforme toda a projeo cuja escala, em cada ponto, independente da direo
considerada. Em consequncia, os ngulos em torno desse ponto so conservados, bem como a forma
dos pequenos objetos. Na prtica, o mapeamento conforme consiste em associar os pontos dos domnios
elementar e real a nmeros complexos. Entre as desvantagens deste mtodo est o facto de que as
caractersticas da malha so definidas automaticamente dificultando a produo de uma malha adequada
ao domnio [10]. Este mtodo tambm exige que se determine a transformao de coordenadas que faa
o mapeamento do domnio elementar no domnio real.
62
Esta tcnica consiste em obter os valores das coordenadas dos pontos do domnio a partir de valores
especificados no contorno atravs do uso de funes de interpolao. Nesse processo o contorno do
domnio no especificado, ele aproximado por funes de interpolao que passam por pontos
especificados. Neste tipo de mapeamento ainda possvel controlar a densidade da malha de elementos
finitos. A figura 6.3 mostra a gerao de uma malha de elementos finitos atravs da aplicao desta
tcnica.
Uma triangulao consiste em encontrar segmentos de reta que conectam um conjunto de pontos
pertencentes ao domnio em estudo. Nenhum desses segmentos se pode cruzar com outro e cada ponto
vrtice de pelo menos um tringulo. A Triangulao de Delaunay um mtodo de decomposio do
domnio e assenta na determinao de um crculo cujo interior no contm nenhum outro ponto do
conjunto de pontos que formam o tringulo. A Triangulao de Delaunay maximiza o menor ngulo de
todos os tringulos na triangulao pelo que tende a evitar tringulos com ngulos internos muito
pequenos.
A quatree uma tcnica de decomposio do domnio que pode ser usada para implementar um
algoritmo de decomposio recursiva do espao. O processo consiste em dividir um domnio em
domnios de forma similar sendo repetido o nmero de vezes necessrio. Os algoritmos de
decomposio recursiva do espao trabalham com um nmero pequeno de formas. Normalmente, as
63
Refinamento h;
Refinamento p.
64
malha. A figura 6.5 mostra uma proposta de transio entre zonas com elementos finitos de dimenses
diferentes.
65
A escolha dos elementos a usar tem influncia na preciso dos resultados. H elementos que no so
capazes de modelar alguns modos de deformao ou distores. Elementos diferentes tm diferentes
sensibilidades para modelar distores. Deve-se procurar que a seleo dos elementos finitos esteja em
conformidade com o tipo de deformao esperada. A figura 6.7 mostra exemplos de elementos finitos
cuja geometria desproporcionada ou distorcida.
Quanto maior for a taxa de convergncia, melhor ser a qualidade da malha. Isto significa que a soluo
terica expectvel para o problema alcanada mais rapidamente. A melhor qualidade de uma malha
garante uma soluo mais precisa. Para melhorar a qualidade da malha necessrio refinar as zonas
onde sejam expectveis grandes gradientes de tenses. Relativamente ao tempo de clculo, as malhas
que necessitam de mais tempo para serem calculadas, em geral, fornecem melhores resultados que as
66
malhas que so rapidamente calculadas. Para uma malha altamente refinada, em que o nmero de
elementos finitos por unidade de rea mximo, o tempo de clculo relativamente grande.
A ponderao e o conhecimento real sobre o efetivo comportamento das peas e das estruturas constitui
um meio til para a modelao com elementos finitos. Por melhor que sejam as ferramentas de clculo,
a sensibilidade do utilizador fundamental para o processo de modelao com elementos finitos.
67
68
7
NOES SOBRE
DESENVOLVIMENTO DE
SOFTWARE
69
A apresentao dos critrios de avaliao de uma linguagem de programao prende-se com o objetivo
de fornecer os meios necessrios escolha da linguagem de programao mais adequada ao
desenvolvimento e posterior manuteno de um determinado programa informtico. Os critrios
frequentemente usados para avaliar uma linguagem so [19]:
Legibilidade;
Capacidade de escrita;
Confiabilidade;
Custo.
A legibilidade um dos critrios mais importantes para avaliar uma linguagem de programao,
nomeadamente, porque tem implicaes na facilidade com que os programas podem ser lidos e
entendidos. Uma vez que a facilidade de manuteno condicionada pela legibilidade dos programas,
esta tornou-se uma forma de avaliar a qualidade dos programas e das linguagens. Uma linguagem com
um grande nmero de componentes difcil de aprender e de ler em comparao com uma linguagem
mais pequena.
A capacidade de escrita uma medida de quo facilmente uma linguagem pode ser utilizada para criar
programas para um domnio de problema escolhido. A maioria das caractersticas da linguagem que
afeta a legibilidade tambm afeta a capacidade de escrita. Se uma linguagem tiver um grande nmero
de construes alguns programadores podem no estar familiarizados com todas elas.
A confiabilidade de uma linguagem significa que os programas desenvolvidos se comportam conforme
especificado. A verificao de tipos e a manipulao de excees so exemplos de mecanismos que
reforam a confiabilidade de uma linguagem de programao.
O custo final de uma linguagem de programao funo de muitas das suas caractersticas. Os custos
associados a uma linguagem de programao [19] so, genericamente, os seguintes:
De todos os fatores que contribuem para os custos de uma linguagem, destacam-se o tempo de escrita
do programa, a manuteno e a confiabilidade como sendo os mais importantes.
Evidentemente, existem inmeros critrios para avaliar as linguagens de programao. Critrios como
a portabilidade ou a facilidade com que os programas podem ser mudados de uma implementao para
70
As linguagens imperativas so orientadas a aes, onde a computao vista como uma sequncia de
instrues que manipulam valores de variveis. O fundamento da programao imperativa o conceito
de Mquina de Turing, que nada mais que uma abstrao matemtica que corresponde ao conjunto de
funes computveis. Os operandos das expresses so passados da memria para o processador e o
resultado da expresso passado de volta para a memria.
As linguagens funcionais fundamentam-se no paradigma de programao funcional que trata a
computao como uma avaliao de funes matemticas e que evita estados ou dados mutveis. Ela
enfatiza a aplicao de funes, em contraste com a programao imperativa, que enfatiza mudanas no
estado do programa. Uma funo, neste sentido, pode ou no receber parmetros e tem um simples valor
de retorno.
Uma linguagem de programao lgica um exemplo de linguagem baseada em regras. A programao
lgica um paradigma de programao que faz uso da lgica matemtica. O sentido da programao
lgica trazer o estilo da lgica matemtica programao de computadores. A abordagem ao
desenvolvimento radicalmente diferente do usado com os outros trs tipos de linguagens.
As linguagens orientadas a objetos fundamentam-se no paradigma da orientao a objetos em que cada
entidade do sistema corresponde, durante a execuo do programa, a um objeto, com atributos e aes
prprias que definem o modo de funcionamento desse programa. A maioria das linguagens de
programao orientadas a objetos usa o conceito de classe, para descrio de grupos de objetos
semelhantes. A programao orientada a objetos foi criada com o objetivo de aproximar o mundo real
ao mundo virtual.
A compilao corresponde traduo do cdigo fonte do programa para linguagem mquina. Uma vez
traduzido, o programa pode ser diretamente executado no computador. Este mtodo tem a vantagem de
uma execuo de programa muito rpida, assim que o processo de traduo for concludo. Alguns
compiladores permitem a otimizao dos programas, tornando-os menores e mais rpidos. O ficheiro
71
gerado pelo compilador designado de executvel e especfico para um determinado sistema operativo
e uma determinada arquitetura de processador.
7.2.3.2. Interpretao
Os programas podem ser diretamente interpretados por um outro programa sem recurso a nenhuma
traduo. O programa interpretador comporta-se como um simulador de uma mquina cujo ciclo de
funcionamento lida com as instrues do programa numa linguagem de alto nvel em vez de instrues
de mquina. Esta simulao conseguida com recurso a uma mquina virtual para a linguagem. A
interpretao tem a vantagem de permitir uma fcil implementao de muitas operaes de depurao
do cdigo fonte, pois, todas as mensagens de erro em tempo de execuo podem ser referidas a unidades
do cdigo. A interpretao apresenta algumas desvantagens relativamente compilao,
nomeadamente, a execuo mais lenta e o maior consumo de memria.
Um programa existe para fornecer valor aos seus utilizadores. Todas as tomadas de deciso devem ser
feitas com este princpio em mente. Assim, antes de fazer o que quer que seja deve-se avaliar se vai ser
acrescentado valor. Caso contrrio no dever ser feito.
O desenvolvimento de programas informticos deve orientar-se pela simplificao. A facilidade de um
sistema facilita a sua compreenso e manuteno. A simplificao um processo rduo, que o oposto
de rpido e desorganizado. Um programa melhor organizado menos propcio a erros.
Manter uma viso clara do que se pretende fundamental para manter o rumo de qualquer projeto. Sem
a definio clara do seu conceito, um sistema informtico pode vir a tornar-se um conjunto de projetos
72
incompatveis. Ter algum que garanta a viso do desenvolvimento fundamental para se alcanar os
objetivos de forma bem-sucedida.
Relativamente ao quarto princpio, raramente um programa fica apenas limitado ao domnio privado.
Atualmente muito fcil que qualquer aplicao tenha algum tipo de distribuio. Sempre que se projeta
um programa, deve-se ter em mente que um programa para ser utilizado por pessoas. Assim, um
programa deve ser desenvolvido de forma que permita a fcil manuteno, expanso e utilizao. Quanto
mais focado nas pessoas maior a possibilidade de se obter o sucesso.
Um programa que tenha um grande perodo de vida tem mais valor. Atualmente, as plataformas
informticas ficam rapidamente obsoletas pelo que frequente medir o tempo de vida dos programas
em meses e no em anos. Para se garantir um tempo de vida elevado deve-se fornecer flexibilidade para
que estes programas se possam adaptar s mudanas. Os programas que no possuem flexibilidade
suficiente rapidamente tm de ser substitudos por outros.
O sexto princpio salienta que o planeamento est na base de qualquer projeto. Um bom planeamento
permite a reutilizao do trabalho j desenvolvido, economizando tempo e esforo. Permitir a
reutilizao de todo o contedo j desenvolvido sem dvida difcil de alcanar. Planear com
antecedncia para a reutilizao reduz o custo e aumenta o valor de ambos os componentes reutilizveis
e dos programas em que so incorporados.
Colocar o pensamento antes da ao quase sempre permite obter melhores resultados. Ao se pensar na
resoluo de um problema est-se a aumentar as possibilidades de o resolver direito. Ao se pensar
tambm se est a reconhecer que no se sabe tudo. Deste modo, a pesquisa por novas solues permite
acrescentar valor ao programa.
A aplicao de todos estes princpios requer um pensamento constante. No se pode dar mais valor aos
princpios relativamente quilo que eles valem. O desenvolvimento requer uma ponderao sobre a
importncia de cada um destes princpios no projeto em causa.
Um processo um conjunto de atividades, aes e tarefas que so executadas para criar algum produto.
No contexto do desenvolvimento de software, um processo no uma prescrio rgida de como
construir programas de computador. Pelo contrrio, uma abordagem flexvel que permite que as
pessoas que fazem o trabalho possam escolher o conjunto de aes adequadas ao trabalho e s tarefas
[15]. A inteno sempre de entregar o programa em tempo til e com qualidade suficiente para
satisfazer aqueles que desencadearam a sua criao e aqueles que o vo utilizar.
A estrutura do processo genrico do desenvolvimento de software abrange as seguintes atividades [15]:
Comunicao;
Planeamento;
Modelao;
Construo;
Implantao.
73
realizar, os riscos que podem ocorrer, os recursos que so necessrios, os produtos a produzir e o perodo
de trabalho. Na fase de modelao, o programador faz uma criao de modelos para melhor entender os
requisitos de programa e do design pretendido. A atividade de construo combina a escrita de cdigo
e os testes que so necessrios para descobrir os erros existentes. Por fim, a implantao corresponde
entrega ao cliente do produto desenvolvido.
Estas cinco atividades genricas podem ser usadas durante o desenvolvimento de um qualquer programa,
independentemente da sua dimenso, complexidade ou especificidade. Na base de um qualquer projeto
est a gesto de projetos. Estas atividades constituem, de um modo genrico, as atividades a
pormenorizar no mbito do projeto de software.
Seja flexvel;
Foque o trabalho na qualidade;
Esteja pronto para se adaptar;
Construa uma equipa eficaz;
Estabelea mecanismos de comunicao e coordenao;
Administre a mudana;
Avalie o risco;
Crie produtos que agreguem valor para outros.
Ao nvel da prtica estabelecem-se um conjunto de valores e regras que servem como um guia para
anlise de um problema, formulao de uma soluo, implementao, teste da soluo e, finalmente,
implantao do programa. Assim, os princpios bsicos que guiam a prtica so:
Abstrair significa decompor um sistema complicado nas suas partes fundamentais e descrev-las numa
linguagem de programao de forma simples e precisa. A descrio das partes de um sistema implica
atribuir-lhes um nome e descrever as suas funcionalidades.
74
7.4.3.2. Arquitetura
A arquitetura de software faz referncia estrutura geral do programa e s formas como essa estrutura
fornece integridade ao programa. Na sua forma mais simples, a arquitetura a estrutura ou organizao
dos componentes do programa. Num sentido mais amplo, os componentes podem ser generalizados para
representar os principais elementos do sistema e as suas interaes. Dada a especificao destas
propriedades, a arquitetura pode ser representada usando um ou mais de um nmero de modelos
diferentes. Os modelos estruturais representam a arquitetura como uma coleo organizada de
componentes do programa.
7.4.3.3. Padres
Um padro de projeto descreve uma soluo geral reutilizvel para um problema recorrente no
desenvolvimento de software. No um cdigo final mas uma descrio ou modelo de como resolver o
problema de modo a ser implementado em diferentes situaes. Os padres so usados para representar,
registar e reutilizar elementos do projeto, bem como a experincia acumulada ao longo do
desenvolvimento.
Os padres, normalmente, definem as relaes e interaes entre as classes ou objetos, sem especificar
os detalhes das classes ou objetos envolvidos, ou seja, recorrem a um nvel de abstrao elevado. Os
padres complementam as abordagens correntes e constituem uma base de experincia reutilizvel para
a fase de desenvolvimento. Os padres fornecem um conjunto de vocabulrio comum para os
programadores comunicarem, permitindo um desenvolvimento mais harmonioso. A sua implementao
permite a reutilizao de blocos de cdigo ou a distribuio de bibliotecas sem a necessidade de conhecer
o seu funcionamento aprofundadamente. So a forma de reduzir a complexidade de um sistema.
Contrariamente aos padres, os anti-padres indicam precisamente o contrrio. O foco dos anti-padres
so os erros comuns dos programadores e as falhas que levam ao fracasso do desenvolvimento. O seu
conhecimento evita a tomada de decises que futuramente comprometam a evoluo e a manuteno
dos programas.
7.4.3.4. Modularidade
Os programas so compostos por diferentes componentes que devem interagir corretamente, fazendo
com que o sistema como um todo funcione de forma adequada. Para se manter estas interaes
75
necessrio que os diversos componentes estejam bem organizados. A modularidade refere-se a uma
estrutura de organizao na qual os diferentes componentes de um de programa so divididos em
unidades funcionais separadas. A estrutura imposta pela modularidade fomenta a reutilizao, isto , se
os mdulos forem escritos de uma forma abstrata para resolver problemas genricos, ento estes
mdulos podem ser reutilizados quando o mesmo problema surgir noutro contexto.
7.4.3.5. Encapsulamento
Deve-se projetar de modo que cada mdulo aborde um subconjunto especfico de requisitos e tenha uma
interface simples quando visto a partir de outras partes da estrutura do programa. Software com
modularidade eficaz, ou seja, mdulos independentes, mais fcil de desenvolver. Mdulos
independentes so tambm mais fceis de manter porque os efeitos secundrios causados pela conceo
ou modificao do cdigo esto limitados, logo, a propagao de erros reduzida e os mdulos so mais
facilmente reutilizveis.
7.4.3.7. Refinamento
O refinamento passo a passo uma estratgia de projeto top-down. Na prtica, comea-se com uma
declarao de uma funo que definida num alto nvel de abstrao, ou seja, a funo descrita
conceptualmente mas sem nenhuma informao sobre o seu funcionamento interno. Posteriormente, a
declarao original reescrita proporcionando mais e mais detalhes. A abstrao e o refinamento so
conceitos complementares. A abstrao permite a especificao de procedimentos e de dados
internamente suprimindo a necessidade de ter conhecimento dos detalhes de baixo nvel. O refinamento
ajuda a revelar detalhes de baixo nvel com a evoluo do projeto.
7.4.3.8. Refatorao
A refatorao uma tcnica de reorganizao que simplifica o projeto de um componente sem alterar a
sua funo ou comportamento. Quando o software reformulado, o projeto existente examinado
quanto redundncia, elementos no utilizados, algoritmos ineficientes ou desnecessrios, mal
76
construdos ou estruturas de dados inadequadas, ou qualquer outra falha corrigida para produzir um
projeto melhor. O uso desta tcnica aprimora a conceo de um software e evita a deteriorao durante
o ciclo de vida de um cdigo. Esta deteriorao geralmente causada por mudanas com objetivos de
curto prazo ou por alteraes realizadas sem a clara compreenso da conceo do sistema.
A maioria das linguagens de programao orientadas a objetos usa o conceito de classe para descrio
de grupos de objetos semelhantes. Uma classe o projeto do objeto. A classe representa o tipo de objeto
que construdo a partir dela. Estes objetos so compostos por atributos e aes. Uma classe formada,
essencialmente, por construtores de objetos dessa classe, variveis e mtodos. A criao de um objeto
dessa classe consiste na criao de cada uma das variveis do objeto, especificadas na classe. Os valores
armazenados nessas variveis determinam o estado do objeto, isto , os seus atributos. Os objetos podem
trocar mensagens entre si, sendo uma mensagem basicamente uma chamada a um mtodo especfico de
um objeto, que realiza uma determinada operao. A execuo de um mtodo do objeto pode modificar
o estado desse objeto e/ou retornar um resultado.
77
No desenvolvimento de software deve-se, desde o incio, definir o modo como se vai estabelecer a
comunicao entre o utilizador e o computador. A interface grfica no se pode comportar como um
elemento neutro mas de um modo que os utilizadores possam interagir com ela. A interface grfica deve
ser desenvolvida a pensar no utilizador e implementar metodologias que facilitem a utilizao do
programa. Uma interface deve cumprir com um conjunto de requisitos prprios que se distinguem dos
demais componentes constituintes de um programa. Estes requisitos centram-se na comunicabilidade,
acessibilidade, usabilidade e aplicabilidade.
No desenvolvimento de uma interface grfica deve-se procurar identificar padres com os quais os
futuros utilizadores estejam familiarizados. O uso de elementos ou representaes que no sejam do
conhecimento geral devem ser evitados. Interfaces pouco organizadas ou com excesso de informao
tornam-se confusas e pouco prticas. As interfaces devem ser limpas e claras. Todos os elementos que
no sejam essenciais devem estar ocultos e s devem ser mostrados nos momentos adequados. Como os
programas so desenvolvidos com o intuito de realizaram uma dada operao ou apresentarem
informaes, estas reas devem estar destacadas e sem elementos perturbadores.
O desenvolvimento de uma interface grfica uma tarefa criativa. No fcil definir critrios objetivos
para avaliar uma interface grfica. Contudo, as interfaces grficas mal construdas fazem com que os
utilizadores se deparem, por exemplo, com menus excessivamente complexos, terminologia
incompreensvel e caminhos de navegao caticos. Uma forma de trazer qualidade e eficcia a um
programa com aumento da utilizao efetiva, menor curva de aprendizagem e menor resistncia,
consiste em melhorar os processos de construo de interfaces grficas do utilizador.
78
8
IMPLEMENTAO
COMPUTACIONAL
79
na dcada de 90 na empresa Sun Microsystems. A linguagem Java compilada para um bytecode que
executado por uma mquina virtual denominada Java Virtual Machine.
Para um programa codificado em Java executar necessrio definir o primeiro mtodo a ser chamado
quando o programa for inicializado. Este mtodo precisa de ser pblico, esttico, sem retorno e receber
um vetor de strings como argumento. Cada projeto tem somente um mtodo main() cuja estrutura
apresentada no cdigo abaixo.
/**
* @param args so os argumentos da linha de comandos
*/
public static void main(String[] args) {}
Como o mtodo main() o primeiro a ser chamado, logo, a partir dele que todo o encadeamento lgico
se desencadeia. Assim, neste mtodo devem estar definidas as instrues que iniciem o funcionamento
do programa. Como os mtodos so os mecanismos que desencadeiam aes dentro de uma classe
necessrio definir o mtodo main() dentro de uma classe. O cdigo abaixo mostra a implementao do
mtodo main() dentro da classe FEMforStudents.
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/**
*
* @author Andr de Sousa
*/
public class FEMforStudents {
/**
* @param args so os argumentos da linha de comandos
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException |
UnsupportedLookAndFeelException ex) {
Logger.getLogger(UserInterface.class.getName()).log(Level.SEVERE, null, ex);
}
new UserInterface().setVisible(true);
}
}
O cdigo inserido dentro do mtodo main() executa duas tarefas distintas. A primeira consiste em
importar o tema da interface grfica de utilizador do sistema operativo para alguns dos componentes
grficos da interface grfica do programa. A segunda tarefa consiste em criar um objeto da classe
UserInterface e passar o parmetro de visibilidade. A classe UserInterface responsvel, entre muitas
tarefas, por criar a janela do programa.
O cdigo fonte Java deve ser colocado em arquivos com a extenso .java. O prximo passo compilar
o cdigo fonte para gerar um executvel que possa ser processado pela mquina virtual do Java. O
compilador padro da plataforma Java pode ser utilizado para compilar os ficheiros do projeto do
programa. O programa de desenvolvimento utilizado tambm permite realizar a compilao do projeto.
80
A programao do Mtodo dos Elementos Finitos consistiu na criao de um conjunto de classes que
fornecessem todas as propriedades e elementos necessrios a uma anlise por elementos finitos. Deste
modo, a implementao do mtodo consistiu, em geral, pela criao do pacote finiteelement e da classe
FiniteElement dentro do pacote calculations.
O pacote finiteelement constitudo por duas dezenas de classes das quais se destacam as classes
MatrixB, MatrixD, MatrixJ, MatrixK e VectorF. A classe FiniteElement permite criar qualquer tipo de
elemento finito necessitando somente de receber a informao que descreva o elemento finito a ser
construdo. Construdo o elemento finito, a classe disponibiliza vrios mtodos que permitem obter, por
exemplo, a matriz de rigidez do elemento finito e o vetor de foras nodais equivalentes. A importncia
da classe FiniteElement no se resume criao dos elementos finitos. Toda a informao associada a
cada elemento finito disponibilizada por esta classe. A implementao desta classe no projeto consiste
em criar uma lista de elementos finitos. Esta lista definida atravs de um objeto da classe ArrayList
que permite armazenar os elementos finitos criados.
As listas so um tipo de coleo que a linguagem de programao Java suporta e a criao do objeto
para armazenar os elementos finitos feita da seguinte forma.
ArrayList<FiniteElement> listOfFiniteElements = new ArrayList();
Este objeto que armazena os elementos finitos do modelo construdo pelo utilizador designado por
listOfFiniteElements. A classe FiniteElement composta por dezenas de variveis e mtodos na maioria
de mbito privado. Os mtodos pblicos so utilizados para definir atributos, desencadear aes internas
ou obter os elementos necessrios, por exemplo, construo do sistema de equaes globais.
Para se criar um objeto necessrio chamar o mtodo construtor desse objeto que se encontra definido
dentro da classe do objeto. O mtodo construtor sempre criado para uma classe, mesmo que no seja
explicitamente definido. Neste caso, o mtodo construtor um mtodo pblico com o nome da classe,
sem retorno e que no recebe parmetros.
/**
*
* @author Andr de Sousa
*/
public class FiniteElement {
/**
* Mtodo construtor da classe FiniteElement
*/
public FiniteElement(int ID, String shape, String type, String theory, int degreeOfFreedom,
double[][] coordinates) {
this.ID = ID;
this.shape = shape;
this.type = type;
this.theory = theory;
this.degreeOfFreedom = degreeOfFreedom;
this.shapeCoordinates = coordinates;
}
}
O mtodo construtor da classe FiniteElement recebe alguns parmetros que permitem que a partir do
momento da criao do elemento finito, as variveis que armazenam a informao relativa ao seu tipo,
81
geometria ou s suas coordenadas fiquem automaticamente definidas. Deste modo, todas as aes
desencadeadas posteriormente j tm em conta o tipo de elemento finito criado o que assegura que
aquando da chamada dos seus mtodos as aes desencadeadas tenham em conta as propriedades desse
elemento finito. De preferncia, estes atributos no devem estar acessveis publicamente de modo a
impedir eventuais alteraes realizadas externamente.
Os parmetros recebidos pelo mtodo construtor da classe FiniteElement no permitem definir por
completo o elemento finito de modo a se calcular, por exemplo, a matriz de rigidez elementar. Assim,
necessrio definir o nmero de ns do elemento finito, a seco e o material. Para o efeito, existem na
classe os mtodos apresentados abaixo.
/**
* Mtodo para atribuir o nmero de ns ao elemento finito
*/
public void setNumberOfNodes(int nodes) {
this.nodes = nodes;
this.nodesCoordinates = nodesCoordinates(shapeCoordinates, nodes);
}
/**
* Mtodo para atribuir a seco ao elemento finito
*/
public void setSection(double inertia, double area, double thickness) {
this.inertia = inertia;
this.area = area;
this.thickness = thickness;
}
/**
* Mtodo para atribuir o material ao elemento finito
*/
public void setMaterial(String material, double elasticity, double shear, double poisson) {
this.material = material;
this.elasticity = elasticity;
this.shear = shear;
this.poisson = poisson;
}
O mtodo que define o nmero de ns do elemento finito tambm atribui as coordenadas nodais pela
chamada do mtodo nodesCoordinates() que recebe como parmetros as coordenadas da forma
geomtrica do elemento finito e o nmero de ns. Os outros dois mtodos pblicos e sem retorno
limitam-se a atribuir o valor recebido s variveis da classe FiniteElement. A classe possui ainda outros
mtodos para atribuio de informaes de entre os quais se destaca o mtodo setLoads() para atribuio
das cargas aplicadas no elemento finito.
Os mtodos anteriormente apresentados e outros que a classe possui necessrios definio dos atributos
dos elementos finitos, no geral, limitam-se a atribuir s variveis das classes um determinado valor
recebido por parmetro pelo que no realizam clculos. Esta caracterstica comum a todo o projeto e
tem como objetivo separar a lgica de clculo da lgica de comunicao entre os diferentes objetos.
Deste modo garante-se uma maior estabilidade no funcionamento dos mtodos pblicos.
Aps a criao dos elementos finitos pode-se chamar os mtodos para obter, por exemplo, a matriz de
rigidez ou o vetor de foras nodais equivalentes. Estes mtodos, que abaixo se apresentam, esto
definidos como pblicos e no recebem parmetros. No geral, o funcionamento destes mtodos
82
assegurado por outros mtodos que esto definidos na classe como privados e calculam os elementos
que estes dois retornam.
/**
* Mtodo que retorna a matriz de rigidez elementar do elemento finito
*/
public double[][] getStiffnessMatrix() {
double[][] stiffnessMatrix;
if ("Gauss-Legendre".equals(quadrature) || "Gauss-Lobatto".equals(quadrature)) {
stiffnessMatrix = numericalIntegration();
} else {
MatrixK matrixK = new MatrixK(elasticity, shear, poisson, inertia, area, thickness, type);
stiffnessMatrix = matrixK.getStiffnessMatrix(L, a, b, c, nodes, theory);
}
return stiffnessMatrix;
}
/**
* Mtodo que retorna o vetor de foras nodais equivalentes do elemento finito
*/
public double[][] getLoadVector() {
return loadVector;
}
O mtodo getStiffnessMatrix() retorna a matriz de rigidez do elemento finito que pode ser calculada de
duas maneiras. A primeira possibilidade corresponde necessidade ou exigncia de se utilizar
integrao numrica para o clculo da matriz de rigidez. No caso geral, a matriz de rigidez do elemento
finito obtida atravs da criao de um objeto da classe MatrixK. Criado este objeto, apenas necessrio
chamar o mtodo getStiffnessMatrix() para obter a matriz de rigidez. No caso do vetor de foras nodais
equivalentes, este definido no momento de atribuio das cargas aplicadas no elemento finito. Se no
forem atribudas cargas, o mtodo retorna um vetor de zeros cuja dimenso depende do nmero de ns
e dos graus de liberdade por n do elemento finito.
A classe MatrixK permite obter a matriz de rigidez elementar para todos os tipos e teorias de elementos
finitos com geometria regular. Os elementos finitos distorcidos so calculados com recurso a
substituio de varivel e integrao numrica atravs da seleo de uma das duas quadraturas
disponveis. Para um elemento finito regular, o clculo da matriz de rigidez elementar passa somente
pela criao dentro da classe FiniteElement de um objeto da classe MatrixK. Assim, toda a lgica
necessria ao clculo da matriz de rigidez elementar fica escondida dentro da classe MatrixK. Esta
caracterstica evidencia-se em todas as classes do pacote finiteelement. Deste modo, as outras partes do
programa no necessitam do conhecimento do funcionamento destas classes. Esta caracterstica, alm
de simplificar a codificao, fomenta a reutilizao das classes, melhora a manuteno e a expanso do
cdigo e reduz a propagao de erros.
Para os elementos finitos com geometria regular, a matriz de rigidez elementar foi deduzida num formato
adimensional de modo a receber os parmetros necessrios ao seu clculo sem a necessidade de se
especificar qualquer tipo de unidades. O funcionamento da classe MatrixK consiste em fornecer a matriz
de rigidez para o tipo de elemento finito criado. Para isso, a estrutura organizacional da classe chama o
mtodo interno que calcula a matriz de rigidez requerida. De modo a exemplificar o que a classe MatrixK
executa internamente apresenta-se o seguinte mtodo esttico, definido dentro da classe MatrixK_1D,
que permite calcular a matriz de rigidez de um elemento finito unidimensional.
83
/**
* Mtodo para calcular a matriz de rigidez de um elemento finito
*/
public static double[][] matrixK_1D(double L, int nodes) {
double[][] matrixK;
if (nodes == 2) {
matrixK = new double[2][2];
matrixK[0][0] = 1 / L;
matrixK[0][1] = -1 / L;
matrixK[1][0] = -1 / L;
matrixK[1][1] = 1 / L;
} else {
matrixK = null;
}
return matrixK;
}
A matriz fornecida pelo mtodo anterior deve posteriormente ser multiplicada pelo mdulo de
elasticidade e pela rea da seco transversal do elemento finito antes de ser retornada pelo mtodo
getStiffnessMatrix() da classe MatrixK. A estrutura adotada para o clculo da matriz de rigidez do
elemento finito semelhante para os outros tipos de elementos finitos e elementos finitos do mesmo
tipo com diferente nmero de ns. A nica tarefa lgica que executada dentro da classe MatrixK
corresponde chamada do mtodo especfico para calcular a matriz de rigidez elementar para o elemento
finito requisitado. Essa informao obtida logo no momento da chamada do mtodo construtor da
classe e completada pelos parmetros do mtodo getStiffnessMatrix().
O clculo do vetor de foras nodais equivalentes tambm feito com recurso a uma estrutura anloga
apresentada para a matriz de rigidez elementar. Para o caso unidimensional, o vetor de foras nodais
equivalentes calculado pelo mtodo seguinte.
/**
* Mtodo para calcular o vetor de foras nodais equivalentes
*/
public static double[][] vectorF_1D(double L, int nodes) {
double[][] vectorF;
if (nodes == 2) {
vectorF = new double[2][1];
vectorF[0][0] = L / 2;
vectorF[1][0] = L / 2;
} else {
vectorF = null;
}
return vectorF;
}
O vetor fornecido pelo mtodo anterior deve posteriormente ser multiplicado pelo valor da carga
distribuda ao longo do elemento finito. Para a obteno do vetor de foras nodais equivalentes
necessrio criar dentro da classe FiniteElement um objeto da classe VectorF e, posteriormente, chamar
o mtodo getLoadVector().
Nas situaes em que a matriz de rigidez calculada com recurso a integrao numrica, a classe
FiniteElement possui um mtodo privado que desencadeia o seu clculo. Este mtodo, consoante o tipo
84
de elemento finito, chama o mtodo especfico para calcular a matriz de rigidez elementar. O mtodo
seguinte calcula a matriz de rigidez de um elemento finito bidimensional com substituio de varivel e
recorrendo a integrao numrica.
/**
* Mtodo para calcular a matriz de rigidez elementar
*/
private double[][] stiffnessMatrix_2D() {
double[][] globalStiffnessMatrix = new double[nodes * dof][nodes * dof];
double[] dimensions = {2.0, 2.0, 2.0, 2.0};
double[][] matrixD = matrixD_2D(elasticity, poisson);
double[][] weightsAndCoordinates = getWeightsAndCoordinates(2.0, 2.0, 2.0, 2.0);
//Ciclo para todos os pontos de integrao da matriz de rigidez
int n = 0;
while (n < points) {
double[][] matrixJ, inverseJ, derivedMatrix, derivedMatrixB, matrixB, matrixK;
double[] pointsCoordinates = weightsAndCoordinates[n];
//Clculo da matriz jacobiana e da sua inversa no ponto de integrao (r, s)
MatrixJ jacobianMatrix = new MatrixJ(type, nodesCoordinates, pointsCoordinates);
matrixJ = jacobianMatrix.getJacobianMatrix(nodes);
inverseJ = inverse(matrixJ);
//Clculo da matriz das derivadas das funes de forma
derivedMatrix = derivedMatrix(type, pointsCoordinates, dimensions, nodes);
derivedMatrixB = multiply(derivedMatrix, inverseJ);
matrixB = matrixB(type, derivedMatrixB, nodes);
double weightX = weightsAndCoordinates[n][0];
double weightY = weightsAndCoordinates[n][2];
double determinantJ = determinant(matrixJ);
//Clculo de uma matriz de rigidez avaliada no ponto de integrao
matrixK = multiply(multiply(transpose(matrixB), matrixD), matrixB);
matrixK = multiply((weightX * weightY) * determinantJ, matrixK);
//Clculo da matriz de rigidez do elemento finito
globalStiffnessMatrix = sum(globalStiffnessMatrix, matrixK);
n++;
}
globalStiffnessMatrix = multiply(thickness, globalStiffnessMatrix);
return globalStiffnessMatrix;
}
85
somadas matriz de rigidez elementar inicialmente nula. No final do ciclo e aps a multiplicao da
matriz obtida pela espessura chega-se a matriz de rigidez elementar do elemento finito.
Como j anteriormente referido, o mtodo stiffnessMatrix_2D() necessita de vrios parmetros e
mtodos para o seu funcionamento. Alguns desses parmetros so, por exemplo, a matriz de elasticidade
e a matriz jacobiana. A matriz de elasticidade importada da classe MatrixD que contm vrios mtodos
que retornam a matriz de elasticidade para cada tipo de elemento finito.
/**
* Mtodo que retorna a matriz de elasticidade para um estado plano de tenso
*/
public static double[][] matrixD_2D(double E, double v) {
double a = E / (1.0 - (v * v));
double b = (E * v) / (1.0 - (v * v));
double c = E / (2.0 * (1.0 + v));
return new double[][] {{a, b, 0.0}, {b, a, 0.0}, {0.0, 0.0, c}};
}
Os pesos e as coordenadas dos pontos de integrao variam consoante a quadratura, o nmero de pontos
utilizados e o nmero de dimenses. Para um elemento finito bidimensional quadriltero, os pesos e as
coordenadas pela quadratura de Gauss-Legendre so obtidas pelo seguinte mtodo esttico.
/**
* Mtodo que retorna uma matriz com os pesos e respetivas coordenadas
*/
public static double[][] weightsCoordinates_2D(double a, double b, int points) {
double[][] matrixWC;
double weightX = a / 2.0;
double weightY = b / 2.0;
double pointX = a / 2.0;
double pointY = b / 2.0;
if (points == 1) {
matrixWC = new double[1][4];
matrixWC[0][0] = weightX * 2.0;
matrixWC[0][1] = pointX * 0.0;
matrixWC[0][2] = weightY * 2.0;
matrixWC[0][3] = pointY * 0.0;
} else {
matrixWC = null;
}
return matrixWC;
}
86
derivadas das funes de forma do elemento finito avaliadas num dado ponto de integrao necessria
para o clculo dos termos da matriz de deformao.
/**
* Mtodo que retorna as derivadas das funes de forma
*/
public static double[][] derivedMatrix_2D(double r, double s, double a, double b, int nodes) {
double[][]derivedMatrix;
if (nodes == 4) {
derivedMatrix = new double[4][2];
derivedMatrix[0][0] = -1.0 / (2.0 * a) + s / (a * b);
derivedMatrix[0][1] = -1.0 / (2.0 * b) + r / (a * b);
derivedMatrix[1][0] = 1.0 / (2.0 * a) - s / (a * b);
derivedMatrix[1][1] = -1.0 / (2.0 * b) - r / (a * b);
derivedMatrix[2][0] = 1.0 / (2.0 * a) + s / (a * b);
derivedMatrix[2][1] = 1.0 / (2.0 * b) + r / (a * b);
derivedMatrix[3][0] = -1.0 / (2.0 * a) - s / (a * b);
derivedMatrix[3][1] = 1.0 / (2.0 * b) - r / (a * b);
} else {
derivedMatrix = null;
}
return derivedMatrix;
}
Para obter os termos da matriz de deformao usada no produto matricial do clculo da matriz de rigidez
elementar avaliada em cada um dos pontos selecionados necessrio multiplicar a matriz fornecida pelo
mtodo esttico derivedMatrix_2D() com a inversa da matriz jacobiana. Como apresentado no mtodo
stiffnessMatrix_2D(), a matriz de rigidez avaliada em cada um dos pontos selecionados obtida pelo
produto matricial entre as matrizes de deformao e a matriz de elasticidade. Aps a multiplicao pelo
determinante da matriz jacobiana e pelos pesos de integrao, esta matriz de rigidez avaliada nos pontos
de integrao somada matriz de rigidez definida no incio do mtodo que aps o fim do ciclo e
multiplicada pela espessura corresponde matriz de rigidez elementar do elemento finito.
A classe FiniteElement contm as instrues para construir cada elemento finito. Assim, necessrio
que, num dado momento e local, os elementos finitos sejam construdos. Para esse efeito foi criada uma
classe designada por Processor.
Esta classe responsvel por construir todos os elementos finitos necessrios para caracterizao da
malha de elementos finitos, fazer a assemblagem das suas contribuies no sistema global de equaes
e resolver esse mesmo sistema. Este modelo organizacional permite que sempre que se pretenda analisar
uma nova estrutura seja apenas necessrio criar um novo objeto da classe Processor. Deste modo,
resolvido o sistema de equaes, basta apenas obter a lista de elementos finitos construda pelos mtodos
desta classe para se ter acesso a todos os resultados ao nvel de cada elemento finito. Esta classe tambm
disponibiliza para apresentao na interface grfica do utilizador o sistema global de equaes.
Para a construo dos elementos finitos, a classe Processor tem de receber as informaes relativas ao
tipo de problema em anlise, geometria e ao material dos elementos finitos. Necessita tambm de
receber as cargas aplicadas na estrutura, isto , nos elementos finitos e nos ns da malha de elementos
finitos, e os apoios estruturais. De modo a assegurar a integridade da classe, o mtodo construtor recebe
87
dois parmetros necessrios definio do tipo de problema para a construo dos elementos finitos e
resoluo do sistema global de equaes.
/**
*
* @author Andr de Sousa
*/
public class Processor {
public ArrayList<FiniteElement> listOfFiniteElements;
/**
* Mtodo construtor da classe Processor
*/
public Processor(String type, String theory) {
this.type = type;
this.theory = theory;
listOfFiniteElements = new ArrayList();
}
}
Para receber todos os atributos necessrios ao clculo da estrutura, a classe Processor possui mtodos
especficos para receber estas informaes. Alguns destes mtodos so apresentados abaixo e consistem
na atribuio dos valores recebidos por parmetro s variveis definidas na classe.
/**
* Mtodo para atribuir as figuras geomtricas desenhadas
*/
public void setDrawnFigures(ArrayList<DrawLine> arrayListLines, ArrayList<DrawPolygon>
arrayListPolygons) {
this.arrayListLines = arrayListLines;
this.arrayListPolygons = arrayListPolygons;
}
/**
* Mtodo para atribuir os apoios estruturais
*/
public void setDrawnSupports(ArrayList<DrawSupports> arrayListSupports) {
this.arrayListSupports = arrayListSupports;
}
/**
* Mtodo para atribuir as diferentes cargas estruturais
*/
public void setDrawnLoads(ArrayList<DrawLoads> arrayListLoads) {
this.arrayListLoads = arrayListLoads;
}
Importa referir que a ordem para a criao de um objeto da classe Processor parte do utilizador que
pressiona um boto na interface grfica do programa que aciona o clculo da estrutura. Assim, na lgica
desse boto esto somente as instrues para criar um novo objeto desta classe sempre que seja
pressionado. Esta implementao permite libertar as reas de tratamento dos eventos que ocorrem na
interface grfica do programa da parte lgica usada na anlise estrutural pelo Mtodo dos Elementos
Finitos. Logo, os mtodos criados para o tratamento desses eventos esto apenas focados no
desencadeamento das operaes e no na sua realizao.
88
A primeira tarefa especificada na classe Processor aps receber toda a informao necessria para o seu
funcionamento interno consiste em construir a lista de elementos finitos. A informao necessria para
construir os elementos finitos j foi evidenciada aquando da apresentao da classe FiniteElement. Para
atribuir as cargas aplicadas em cada elemento finito, a classe possui um mtodo que ao percorrer a lista
das cargas estruturais faz a atribuio ao respetivo elemento finito. Note-se que para realizar esta
operao necessrio conhecer as coordenadas dos elementos finitos e dos locais na malha onde as
cargas estruturais esto aplicadas.
Para construir o sistema de equaes globais da estrutura necessrio obter de cada elemento finito as
suas contribuies e distribu-las no sistema de equaes globais de acordo com a informao da matriz
de assemblagem individual. Esta operao realizada dentro do mtodo assembly() que apresentado
abaixo.
/**
* Este mtodo realiza a operao de assemblagem
*/
private void assembly() {
for (FiniteElement finiteElement : listOfFiniteElements) {
double[][] vectorF = finiteElement.getLoadVector();
double[][] matrixK = finiteElement.getStiffnessMatrix();
int[][] assemblyMatrix = finiteElement.getAssemblyMatrix();
int length = assemblyMatrix.length;
for (int i = 0; i < length; i++) {
int column = assemblyMatrix[i][1] - 1;
//Prenchimento da matriz de rigidez global
for (int j = 0; j < length; j++) {
int line = assemblyMatrix[j][1] - 1;
stiffnessMatrix[line][column] = stiffnessMatrix[line][column] + matrixK[j][i];
}
//Preenchimento do vetor de solicitao global
int line = assemblyMatrix[i][1] - 1;
loadVector[line][0] = loadVector[line][0] + vectorF[i][0];
}
}
}
Salienta-se o facto da matriz de assemblagem ter sido previamente construda a partir da relao
existente entre os ns dos elementos finitos e os ns da malha de elementos finitos. Construdo o sistema
de equaes globais e introduzidas as condies de fronteira esto reunidas as condies para resolver
o sistema de equaes globais. Do mesmo modo que foram atribudas as cargas aplicadas sobre os
elementos finitos e consideradas as cargas concentradas aplicadas nos ns da malha de elementos finitos,
para considerar os apoios estruturais necessrio comparar as coordenadas dos ns com as coordenadas
dos apoios estruturais. Esta operao permite saber em que ns da malha de elementos finitos esto
aplicados os apoios da estrutura.
Para realizar todas as operaes matriciais necessrias implementao computacional do Mtodo dos
Elementos Finitos foi criado um pacote com um conjunto de classes para disponibilizar os mtodos
necessrios realizao destas operaes algbricas. Este pacote foi designado por matrices e contm
as classes Determinant, Inverse, Multiply, Subtract, Sum e Transpose. Para exemplificar o tipo de
89
mtodos que estas classes disponibilizam, o mtodo sum() da classe Sum realiza a operao de soma de
duas matrizes recebidas por parmetro.
/**
* Mtodo para realizar a operao de soma de duas matrizes
*/
public static double[][] sum(double[][] matrixA, double[][] matrixB) {
double[][] sumMatrix;
int linesA = matrixA.length;
int columnsA = matrixA[0].length;
int linesB = matrixB.length;
int columnsB = matrixB[0].length;
if (linesA == linesB && columnsA == columnsB) {
sumMatrix = new double[linesA][columnsA];
for (int i = 0; i < linesA; i++) {
for (int j = 0; j < columnsA; j++) {
sumMatrix[i][j] = matrixA[i][j] + matrixB[i][j];
}
}
} else {
sumMatrix = null;
}
return sumMatrix;
}
Aps a resoluo do sistema de equaes so atribudos aos ns dos elementos finitos o valor do seu
deslocamento de acordo com a relao que estes possuem com os ns da malha de elementos finitos.
Resolvido o sistema de equaes e atribudos os valores dos deslocamentos nodais aos ns dos
elementos finitos est-se em condies de obter todos os resultados de uma anlise por elementos finitos
ao nvel de cada elemento finito.
As tenses nos elementos finitos podem ser obtidas atravs da relao entre tenses e deformaes. O
seguinte mtodo, pertencente classe FiniteElement, permite obter o valor das tenses nodais do
elemento finito. Este mtodo para retornar o valor das tenses nodais necessita de criar um objeto da
classe NodalResults.
/**
* Mtodo qua retorna a lista de tenses nodais do elemento finito
*/
public ArrayList<double[][]> getNodalStresses() {
NodalResults nodalResults = new NodalResults(type, theory, shape, nodes);
nodalResults.setMaterial(elasticity, shear, poisson);
nodalResults.setSection(inertia, area, thickness);
ArrayList<double[][]> nodalStresses = nodalResults.getNodalStresses(L, a, b, c,
displacementVector);
return nodalStresses;
}
90
Como demostrado no Captulo 3, para se conhecer as tenses num dado ponto do elemento finito
necessrio avaliar a matriz de deformao nesse ponto. Normalmente, os pontos que fornecem melhores
resultados coincidem com os utilizados na quadratura de Gauss-Legendre. Para se obter a matriz de
deformao, a classe NodalResults necessita de criar um objeto da classe MatrixB. O mtodo
getMatrixB() exemplifica o modo como este fornece a matriz correta para o tipo de elemento finito
considerado.
/**
* Mtodo para obter a matriz B de um elemento finito
*/
public double[][] getMatrixB(double x, double y, double z, int nodes, String theory) {
double[][] matrixB;
switch (type) {
case "1D":
matrixB = matrixB_1D(x, L, nodes);
break;
case "2D":
matrixB = matrixB_2D(x, y, a, b, nodes);
break;
case "3D":
matrixB = matrixB_3D(x, y, z, a, b, c, nodes);
break;
case "Beams":
matrixB = matrixB_Beams(x, L, nodes, theory);
break;
case "Slabs":
matrixB = matrixB_Slabs(x, y, a, b, nodes, theory);
break;
default:
matrixB = null;
break;
}
return matrixB;
}
As matrizes de deformao para cada tipo de elemento finito esto programas com recurso a mtodos
que requerem os pontos onde devem ser avaliadas, as dimenses e o nmero de ns do elemento finito
considerado. Deste modo, os mtodos podem fornecer as matrizes de deformao para qualquer tipo de
elemento finito.
A partir do valor dos deslocamentos nodais, da matriz de deformao e da matriz de elasticidade, as
tenses nos pontos usados na quadratura de Gauss-Legendre num elemento finito tridimensional so
calculadas atravs do mtodo listOfStresses_3D(). Este mtodo requer as dimenses do elemento finito
e o vetor de deslocamentos nodais. A partir dos atributos da classe definidos aquando da criao do
objeto da classe NodalResults, o mtodo avalia a matriz de deformao nos pontos selecionados da
quadratura de Gauss-Legendre onde devem ser calculadas as tenses. Obtidas todas as matrizes
necessrias ao clculo das tenses, o mtodo realiza o produto matricial entre estas matrizes e adiciona
o resultado a uma varivel da classe ArrayList.
O clculo dos esforos internos nos elementos finitos outro dos resultados requeridos numa anlise
por elementos finitos. A estrutura dos mtodos para calcular os esforos internos bastante semelhante
dos mtodos usados para calcular as tenses nos elementos finitos. O mtodo listOfForces_Beams()
91
retorna uma lista com o valor do momento fletor atuante em vigas formuladas pela teoria de EulerBernoulli calculado nos pontos selecionados da quadratura de Gauss-Legendre.
/**
* Mtodo para calcular as tenses no caso tridimensional
*/
private ArrayList<double[][]> listOfStresses_3D(double a, double b, double c, double[][]
displacementVector) {
ArrayList<double[][]> listOfStresses = new ArrayList();
double[] dimensions = {0.0, a, b, c};
double[][] matrixD = matrixD_3D(elasticity, poisson);
MatrixB matrix = new MatrixB(type, 0.0, a, b , c);
GaussLegendre gaussLegendre = new GaussLegendre(type, theory, points, dimensions);
double[][] weightsCoordinates = gaussLegendre.getWeightsCoordinates();
//Ciclo para todos os pontos no elemento finito
int n = 0;
while (n < points) {
double[] pointsCoordinates = weightsCoordinates[n];
double pointX = pointsCoordinates[1];
double pointY = pointsCoordinates[3];
double pointZ = pointsCoordinates[5];
double[][] matrixB = matrix.getMatrixB(pointX, pointY, pointZ, nodes, theory);
double[][] stresses = multiply(multiply(matrixD, matrixB), displacementVector);
listOfStresses.add(stresses);
n++;
}
return listOfStresses;
}
Atendendo ao facto de as vigas formuladas pela teoria Timoshenko e as lajes formuladas pela teoria de
Reissner-Mindlin considerarem o efeito da deformabilidade por esforo transverso, os mtodos
implementados que retornam o valor das foras num dado ponto do elemento finito tambm calculam o
valor do esforo transverso nesse ponto.
A implementao de todas as formulaes de elementos finitos abordadas nesta dissertao seguiu os
passos anteriormente apresentados. Assim, a programao de uma dada formulao de elementos finitos
ou modelo estrutural consiste na devida implementao da informao disponibilizada.
Pretende-se com esta apresentao e exposio de alguns mtodos evidenciar o modo como o Mtodo
do Elementos Finitos foi implementado na prtica. Existem outros mtodos e classes que no foram
evidenciados. As funcionalidades existentes e o modo como so programas conduzem necessidade de
criar classes e mtodos especficos. A informao apresentada s evidencia a fase de clculo da
estrutura. Note-se ainda que a implementao anteriormente apresentada se referiu apenas a alguns dos
clculos necessrios a uma anlise por elementos finitos.
Existem diferentes possibilidades de codificao de cada uma das tarefas necessrias a uma anlise por
elementos finitos. Toda a estrutura organizacional sobre o modo como foi implementada a anlise por
elementos finitos consiste numa proposta do autor. Outros modelos organizacionais podem
92
evidentemente ser explorados. O que importa salientar que todas as abordagens tm as suas vantagens
e desvantagens.
da responsabilidade do programador decidir quais as abordagens que deve seguir de modo a obter a
melhor implementao possvel do Mtodo dos Elementos Finitos.
/**
* Mtodo para calcular os esforos em vigas
*/
public ArrayList<double[][]> listOfForces_Beams(double L, double[][] displacementVector) {
ArrayList<double[][]> nodalForces = new ArrayList();
double[] dimensions = {L, 0.0, 0.0, 0.0};
MatrixB matrix = new MatrixB(type, L, 0.0, 0.0, 0.0);
GaussLegendre gaussLegendre = new GaussLegendre(type, theory, points, dimensions);
double[][]weightsCoordinates = gaussLegendre.getWeightsCoordinates();
//Ciclo para todos os pontos no elemento finito
int n = 0;
while (n < points) {
double[][] matrixB, forces, M;
double[] pointsCoordinates = weightsCoordinates[n];
double point = pointsCoordinates[1];
matrixB = matrix.getMatrixB(point, 0.0, 0.0, nodes, theory);
M = multiply(multiply(-elasticity * inertia, matrixB), displacementVector);
nodalForces.add(M);
n++;
}
return nodalForces;
}
Sendo o foco dos programas os utilizadores, deve-se procurar que os programas disponibilizem um meio
que facilite a comunicao entre o utilizador e o computador. At este momento apenas foram descritas
as tarefas de clculo referentes ao Mtodo dos Elementos Finitos.
Para armazenar todas as classes que se relacionam com a interface do utilizador foram criados os pacotes
frontend e backend. O pacote frontend contm todas as classes associadas criao dos elementos
grficos da interface grfica do utilizador enquanto o pacote backend contm as classes para a criao
de objetos associados ao Mtodo dos Elementos Finitos que so usados na interface grfica. Apenas
para exemplificar, o pacote frontend contm classes como a UserInterface, JPanelWelcome e
ReactionsSupportTable enquanto o pacote backend contm classes como a DrawingPanel, ResultsPane
e OpenSave.
Atendendo aos requisitos da modelao com elementos finitos e da apresentao grfica dos resultados,
no desenvolvimento da interface grfica do utilizador houve a necessidade do desenvolvimento de
ferramentas para desenho e funcionalidades para apresentao dos resultados. Das ferramentas de
desenho construdas destacam-se as relativas ao desenho dos elementos finitos, as ferramentas para
93
anular ou repetir a introduo de objetos, ferramentas para selecionar, mover, cortar, copiar e colar, entre
outras. Para visualizao dos resultados era indispensvel a visualizao da deformada da malha de
elementos finitos. Sendo o programa direcionado para o ensino do Mtodo dos Elementos Finitos era
tambm indispensvel que o programa permitisse a visualizao de elementos como a matriz de rigidez
elementar ou o vetor de foras nodais equivalentes de cada elemento finito. Outras funcionalidades como
a visualizao dos mapas de tenses ou as tenses e direes principais para os problemas
bidimensionais tambm foram desenvolvidas.
Para a construo da janela foi criada a classe UserInterface que permite criar a janela com a interface
grfica do programa desenvolvido. Apenas para exemplificar a criao desta janela, o cdigo abaixo foi
extrado da classe UserInterface e mostra a codificao que permite criar a janela que contm a interface
grfica do programa.
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
/**
*
* @author Andr de Sousa
*/
public class UserInterface extends JFrame {
/**
* Mtodo construtor da classe UserInterface
*/
public UserInterface() {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screen.width / 2) - (900 / 2), (screen.height / 2) - (600 / 2), 0, 0);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("FEM for Students");
setSize(900, 600);
}
}
Para visualizar a janela criado um objeto desta classe dentro do mtodo main() implementado na classe
FEMforStudents. A construo de todos os elementos grficos que compem a interface do utilizador
so chamados dentro do mtodo construtor da classe. Qualquer interface grfica composta por painis,
botes, rtulos, campos de texto, tabelas, entre outros elementos grficos. A utilizao do NetBeans
como ferramenta de desenvolvimento permitiu criar muitos destes elementos que compem a interface
grfica do programa de uma forma simples e gil.
No devendo ser a interface grfica um elemento esttico necessrio definir os meios que permitam
receber os eventos que ocorrem sobre ela. Alguns destes eventos so, por exemplo, eventos de click do
rato ou aes de pressionar as teclas do teclado do computador. De modo a poder capturar estes eventos
necessrio implementar interfaces ouvintes que capturem estas aes. A implementao destas
interfaces exige a criao nas classes de um conjunto de mtodos que recebem os eventos ocorridos na
interface grfica do utilizador. Assim, apenas necessrio definir toda a lgica associada a um dado
evento ocorrido dentro do mtodo que o recebe. Deste modo, todas as aes desencadeadas no programa
partem de dentro dos mtodos que recebem os diferentes eventos ocorridos na interface grfica. Como
facilmente se perceciona, o programador deve apenas associar a cada um dos eventos que est a capturar
a respetiva funo como, por exemplo, o clculo da estrutura.
94
As interfaces grficas do utilizador so orientadas a eventos. Consoante o tipo de evento ocorrido num
determinado objeto deve-se procurar implementar o mtodo adequado. Os componentes da interface
grfica do utilizador geram diferentes eventos e para diferentes eventos existem diferentes mtodos para
95
os receber. Assim, toda a estrutura lgica associada a uma determinada ao definida no interior desses
mtodos.
A construo da interface grfica do utilizador consiste em posicionar no interior da janela do programa
diferentes componentes visuais e em capturar o devido evento para desencadear a execuo de uma dada
tarefa. A informao aqui disponibilizada pretende mostrar que a construo de um programa no mais
que a execuo sequencial de um conjunto elementar de tarefas.
Dos vrios elementos grficos que foram construdos destaca-se o painel de desenho que definido pela
classe DrawingPanel. Esta classe possui um diversificado conjunto de mtodos que aquando da
ocorrncia dos respetivos eventos permitem executar todas as tarefas necessrias ao desenho da malha
de elementos finitos e de todos os outros elementos requeridos na modelao do problema.
No cdigo abaixo apresentado um excerto da classe DrawingPanel, com o seu mtodo construtor, que
estende da classe JPanel herdando todos os seus atributos e aes.
import javax.swing.JPanel;
/**
*
* @author Andr de Sousa
*/
public class DrawingPanel extends JPanel {
/**
* Mtodo construtor da classe DrawingPanel
*/
public DrawingPanel() {
setBackground(new java.awt.Color(255, 255, 255));
setMaximumSize(new java.awt.Dimension(2500, 2500));
setMinimumSize(new java.awt.Dimension(500, 500));
setPreferredSize(new java.awt.Dimension(2500, 2500));
}
}
Para desenhar as figuras no painel necessrio reescrever o mtodo paintComponent() que recebe como
parmetro um objeto do tipo Graphics. Este mtodo permite desenhar as figuras definidas pelo utilizador
sempre que for invocado o mtodo repaint() que ordenada o redesenho do contedo do painel.
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D shape = (Graphics2D) g.create();
}
Numa anlise por elementos finitos necessrio construir um modelo estrutural. Todos os elementos
que compem o modelo estrutural so desenhados no painel de desenho do programa construdo a partir
da classe DrawingPanel. Como referido anteriormente, esta classe contm as instrues necessrias para
desenhar todos os elementos requeridos na modelao do problema.
Para desenhar os elementos finitos foram criadas diversas classes que so utilizadas dentro da classe
DrawingPanel e que permitem desenhar diversas figuras geomtricas a partir de um conjunto de
96
coordenadas. As coordenadas referidas so recebidas pelos mtodos criados para o efeito que, a partir
delas, criam uma nova figura geomtrica. Apresentam-se, de seguida, alguns destes mtodos de modo a
exemplificar o seu funcionamento.
/**
* Mtodo para criar e mandar desenhar uma linha definitiva
*/
private void drawNewLine(int x1, int y1, int x2, int y2) {
arrayListLines.add(new DrawLine(x1, y1, x2, y2, "Line"));
repaint();
}
/**
* Mtodo para criar e mandar desenhar um retngulo definitivo
*/
private void drawNewRectangle(int[] xPoints, int[] yPoints) {
arrayListPolygons.add(new DrawPolygon(xPoints, yPoints, 4, "Rectangle"));
repaint();
}
Os mtodos anteriormente apresentados criam uma nova figura geomtrica a partir das coordenadas
recebidas e adicionam-na a uma varivel que a armazena. Para criar estas figuras geomtricas que
representam os elementos finitos foram criadas classes com mtodos para as construir e desenhar.
Algumas destas classes so, por exemplo, a classe DrawLine e a classe DrawPolygon. Para exemplificar,
apresenta-se parte da classe DrawPolygon com o seu mtodo construtor que permite construir qualquer
figura geomtrica do tipo polgono.
import java.awt.Polygon;
import java.io.Serializable;
/**
*
* @author Andr de Sousa
*/
public class DrawPolygon implements Serializable {
public String shape;
public Polygon polygon;
public boolean selected;
/**
* Mtodo construtor da classe DrawPolygon
*/
public DrawPolygon(int[] xPoints, int[] yPoints, int nPoints, String name) {
polygon = new Polygon(xPoints, yPoints, nPoints);
selected = false;
shape = name;
}
}
Alm das classes associadas ao desenho dos elementos finitos foram criadas classes, por exemplo, para
desenhar os apoios estruturais e as cargas que podem ser aplicadas aos elementos finitos e aos ns da
malha de elementos finitos. Cada uma destas classes possui mtodos que desenham cada um destes
elementos visuais.
De modo a permitir a manipulao dos objetos desenhados no painel de desenho, as classes desses
objetos tm definidos mtodos que possibilitam uma fcil interao com eles. Alguns destes mtodos,
97
por exemplo, permitem selecionar o objeto ou obter as suas coordenadas. Estas aes permitem que o
utilizador possa selecionar os elementos desenhados e realizar operaes como mover, cortar, copiar ou
colar. Se o programa no disponibilizasse estas operaes, a sua qualidade ficaria substancialmente
afetada.
O mtodo mousePressedSelect(), pertencente classe DrawingPanel, mostra como feita a mudana de
estado de um polgono. Para realizar esta operao necessrio saber se o polgono contm as
coordenadas do ponto onde ocorreu o click do boto do rato. A classe DrawPolygon disponibiliza o
mtodo contains() que faz esta verificao e retorna verdadeiro ou falso. Deste modo, se a resposta for
afirmativa, o estado do polgono muda para selecionado.
/**
* Mtodo para selecionar os objetos desenhados
*/
private void mousePressedSelect(int xPoint, int yPoint, boolean ctrlDown) {
Point point = new Point(xPoint, yPoint);
for (DrawPolygon polygon : arrayListPolygons) {
if (polygon.contains(point)) {
polygon.select(true);
} else if (!ctrlDown) {
polygon.select(false);
}
}
repaint();
}
Para remover da lista de objetos todos os objetos selecionados, o mtodo mousePressedCut() da classe
DrawingPanel percorre a lista de objetos da classe DrawPolygon e elimina aqueles que esto
selecionados.
/**
* Mtodo para eliminar os objetos selecionados
*/
private void mousePressedCut() {
int i = 0;
int j = arrayListPolygons.size();
while (i < j) {
DrawPolygon polygon = arrayListPolygons.get(i);
if (polygon.selected) {
arrayListPolygons.remove(i);
j--;
i--;
}
i++;
}
repaint();
}
98
O conhecimento da posio dos objetos das informaes mais valiosas, pois, a generalidade das
operaes descritas necessitam do seu conhecimento. Por exemplo, somente com o conhecimento das
coordenadas dos objetos desenhados possvel selecion-los ou mov-los. Muita da simplicidade das
operaes descritas advm da forma como foram criados estes mtodos.
/**
* Este mtodo aplica uma translao ao polgono
*/
public void movePolygon(int deltaX, int deltaY) {
polygon.translate(deltaX, deltaY);
}
/**
* Este mtodo retorna uma matriz com as coordenadas do polgono
*/
public int[][] getCoordinates() {
int[] xPoints = polygon.xpoints;
int[] yPoints = polygon.ypoints;
int nPoints = polygon.npoints;
int[][] coordinates = new int[nPoints][2];
for (int i = 0; i < nPoints; i++) {
coordinates[i][0] = xPoints[i];
coordinates[i][1] = yPoints[i];
}
return coordinates;
}
Como anteriormente referido, o programa, alm dos elementos finitos, tambm tem de desenhar as
cargas e os apoios estruturais. No mtodo seguinte, pertencente classe DrawLoads, apresentada a
parte referente ao desenho de uma carga concentrada vertical descendente. Para executar esta operao,
o mtodo necessita de conhecer as coordenadas do ponto de origem de onde deve comear a desenhar a
representao grfica da carga. Essa informao fornecida no momento da construo do objeto e fica
armazenada na varivel pointA.
/**
* Mtodo para desenhar uma carga concentrada
*/
private void drawConcentratedLoad(Graphics2D load) {
int x = pointA.x;
int y = pointA.y;
Line2D drawLineA, drawLineB, drawLineC;
//Carga concentrada vertical descendente
if ("Vertical Positive".equals(this.verticalSign)) {
drawLineA = new Line2D.Double(x, y, x, y - 25);
drawLineB = new Line2D.Double(x, y, x - 5, y - 5);
drawLineC = new Line2D.Double(x, y, x + 5, y - 5);
load.draw(drawLineA);
load.draw(drawLineB);
load.draw(drawLineC);
}
}
99
Uma das dificuldades enfrentadas para desenhar os diferentes elementos com o devido rigor tcnico
consiste em fornecer ao utilizador a possibilidade de desenhar os elementos com as corretas dimenses
e exatamente no stio pretendido. Atendendo ao exposto, houve a necessidade do desenvolvimento de
funcionalidades para auxiliar o utilizador na etapa de modelao com elementos finitos. Estas
funcionalidades executam tarefas elementares como mover a posio das coordenadas do rato, por
exemplo, para o vrtice mais prximo de um polgono quando o ponteiro do rato se encontra nas
proximidades desse vrtice. Sem estas funcionalidades o utilizador dificilmente conseguiria desenhar
no stio certo o que havia planeado.
Uma funcionalidade importante no momento da modelao da estrutura a apresentao grfica das
dimenses dos elementos finitos. No momento em que o utilizador est a desenhar os elementos finitos,
a apresentao desta informao permite que o utilizador possa controlar a suas dimenses.
A funcionalidade da grelha de pontos e o snap so ferramentas muito teis na etapa de modelao da
estrutura. Apesar da sua grande importncia, porventura, so das funcionalidades mais simples de se
construir. A grelha de pontos consiste em desenhar um ponto numa localizao pr-estabelecida. Como
a linguagem Java no disponibiliza nenhum mtodo para desenhar pontos necessrio recorrer ao
mtodo para desenhar linhas. Assim, para se obter um ponto atribui-se as mesmas coordenadas para o
ponto inicial e final da linha. O snap consiste em alterar as coordenadas do ponteiro do rato para um
ponto existente na rea de desenho. Quando o snap se encontra associado grelha de pontos, o resultado
consiste em alterar as coordenadas do ponteiro do rato para o ponto da grelha mais prximo.
Durante o processo de modelao, o utilizador necessita de poder definir as propriedades dos elementos
finitos ou das cargas, mudar os apoios ou refinar a malha de elementos finitos. Para exemplificar, referese a funcionalidade de refinamento da malha de elementos finitos. O mtodo meshRefinementLines()
permite refinar uma malha de elementos finitos unidimensionais. Para executar esta tarefa ele recebe a
linha que ser dividida em duas novas linhas.
/**
* Mtodo de refinamento que retorna uma lista de linhas
*/
public static ArrayList<DrawLine> meshRefinementLines(DrawLine line) {
ArrayList<DrawLine> listOfLines = new ArrayList();
int[][] coordinates = line.getCoordinates();
int x1 = coordinates[0][0];
int y1 = coordinates[0][1];
int x3 = coordinates[1][0];
int y3 = coordinates[1][1];
Point2D.Double point = midPoint(x1, y1, x3, y3);
int x2 = (int) (Math.round(point.x));
int y2 = (int) (Math.round(point.y));
listOfLines.add(new DrawLine(x1, y1, x2, y2, line.shape, line.selected));
listOfLines.add(new DrawLine(x2, y2, x3, y3, line.shape, line.selected));
return listOfLines;
}
Quando uma malha refinada, a tarefa interna que executada corresponde criao de uma nova
malha de elementos finitos a partir da informao da malha inicial. Se existirem cargas distribudas
aplicadas nos elementos finitos da malha inicial necessrio que estas cargas fiquem sujeitas ao mesmo
100
padro de refinamento. Caso contrrio, as cargas que inicialmente estavam referenciadas a determinados
elementos finitos deixam de o estar, pois, nessas posies, esses elementos finitos j no l esto porque
foram substitudos por novos elementos com geometria distinta.
Para que todas estas tarefas sejam executadas necessrio construir na interface grfica elementos que
permitam ao utilizador escolher a tarefa que pretende realizar, criar mtodos para receber esses eventos
e mtodos para executar essas ordens. Todas estas tarefas so implementadas em nveis diferentes que
exigem que os diferentes objetos possuam mtodos especficos para a comunicao entre eles.
O mtodo printMatrix() alm de imprimir o contedo de uma matriz quadrada ainda adiciona a
numerao s linhas e colunas da tabela.
101
A apresentao de todos os elementos usados no clculo e os resultados obtidos foi um dos principais
focos do programa. A apresentao grfica dos resultados foi desenvolvida com a construo de classes
que permitem a visualizao, por exemplo, da deformada, dos mapas de tenses ou das tenses e
direes principais. Estas funcionalidades so muito teis ao permitir, por exemplo, visualizar a forma
da deformada da estrutura ou a distribuio de tenses nas peas. Para os elementos do tipo barra est
disponvel a visualizao dos diagramas de esforos.
Para visualizao dos resultados de forma grfica, semelhana do realizado para desenhar os vrios
elementos, foi construda uma classe designada por ResultsPane que, a partir da informao obtida de
cada elemento finito, representa os diferentes resultados. Aps a criao do objeto desta classe apenas
necessrio chamar o mtodo relativo ao tipo de resultado que se pretende visualizar. Esta classe cria
objetos de muitas das classes que j foram referidas aquando da apresentao da classe DrawingPanel.
O desenho da deformada da estrutura consiste em somar posio dos ns da estrutura indeformada o
valor do deslocamento nodal obtido do clculo segundo cada direo ortogonal. Contudo, como o valor
do deslocamento normalmente pequeno, necessrio adotar um fator de escala que permita visualizar
convenientemente a deformada da estrutura. Esse fator fica ao critrio do programador que o deve definir
consoante a dimenso que pretende obter para a deformada da estrutura. O mtodo seguinte exemplifica
o modo como so definidas as posies dos ns da deformada da estrutura para o caso das lajes.
/**
* Mtodo para definir a posio dos ns da estrutura deformada
*/
private void nodes_deformedStructure(String type, String theory, int[][] nodesCoordinates,
double[][] displacements) {
int[][] coordinates = new int[nodesCoordinates.length][2];
switch (type) {
case "Slabs":
int[][] perspectiveSlabs = createPerspective(nodesCoordinates);
for (int i = 0; i < nodesCoordinates.length; i++) {
coordinates[i][0] = perspectiveSlabs[i][0];
coordinates[i][1] = perspectiveSlabs[i][1]
+ (int) Math.round(displacements[i * 3][0] * deformedFactor);
}
break;
}
for (int[] nodeCoordinates : coordinates) {
listNodesDeformed.add(new DrawNode(nodeCoordinates[0], nodeCoordinates[1],
defaultColor));
}
}
Uma ferramenta bastante til para o utilizador visualizar a deformada da estrutura consiste na
possibilidade de ajuste da sua dimenso. Este ajuste da dimenso da deformada conseguido atravs da
adio interface grfica de um slider. Assim, a dimenso da deformada ajustada em conformidade a
partir do valor de posicionamento fornecido por este componente visual.
Para desenhar as linhas de isovalores e os mapas de tenses foi criada a classe IsolinesAndMaps. O
desenho das linhas de isovalores e dos mapas de tenses realizado atravs da analogia com a
representao de curvas de nvel. Basicamente, para desenhar estas duas representaes grficas
comea-se por idealizar uma malha de tringulos definidos a partir das coordenadas dos ns dos
elementos finitos. Definida a escala de cores, para cada tringulo, unem-se os pontos de igual tenso
102
correspondentes diviso efetuada na escala de cores. No caso dos mapas de tenso, estes pontos so
unidos de modo a formar um polgono cujo interior pintado com a cor atribuda no momento da sua
construo.
103
104
9
APRESENTAO DO PROGRAMA
FEM FOR STUDENTS
105
106
Loads;
Analysis;
Results.
O separador Draw contm as ferramentas necessrias ao desenho dos diferentes elementos finitos
disponveis no programa. Possui algumas funcionalidades de produtividade, nomeadamente, seleo dos
elementos finitos, mover, cortar, copiar e colar. Permite tambm a insero de pontos de referncia
atravs de coordenadas introduzidas pelo teclado para auxiliar a construo da malha de elementos
finitos.
O separador View contm ferramentas de visualizao, nomeadamente, disponibiliza a possibilidade de
mover o painel, fazer zoom, mostrar uma malha de pontos, e outras funcionalidades que facilitam o
desenho dos elementos finitos.
O separador Geometry contm as funcionalidades para definir o nmero de ns dos elementos finitos,
as restantes propriedades das seces dos elementos finitos, as propriedades do material, refinamento
das malhas de elementos finitos e adio dos apoios estruturais. Algumas destas funcionalidades abrem
um painel lateral onde aparecem os elementos necessrios realizao das respetivas operaes.
O separador Loads contm as ferramentas para atribuio dos carregamentos ao modelo estrutural
construdo. Os botes deste separador abrem um painel lateral onde possvel definir as propriedades
da carga que se pretende adicionar ao modelo. Consoante o modelo estrutural possvel adicionar
carregamentos como cargas concentradas, momentos fletores, cargas lineares distribudas, cargas axiais
distribuas e/ou carregamentos de superfcie.
Relativamente ao separador Analysis, este disponibiliza, por exemplo, para os elementos finitos de viga
e de laje a seleo da teoria de formulao. Possibilita ainda escolher se a anlise vai ser analtica ou
numrica e o boto para efetuar o clculo da estrutura. Do ponto de vista de uma anlise numrica, o
programa permite usar a quadratura de Gauss-Legendre ou a quadratura de Gauss-Lobatto para realizar
a integrao numrica.
O separador Results, e ltimo, contm os botes para escolher o tipo de resultado obtido da anlise
estrutural a visualizar. Consoante o modelo selecionado possvel ver, por exemplo, o sistema de
equaes globais, todos os resultados ao nvel de cada elemento finito, a deformada da estrutura, os
diagramas de esforos, os mapas de tenses e/ou as tenses e direes principais.
107
cortar, copiar ou colar. Destaca-se que para mover um objeto ou copi-lo necessrio, em primeiro lugar
selecion-lo. S depois possvel mov-lo ou copi-lo.
Para selecionar um dos objetos desenhados necessrio, em primeiro lugar, escolher a ferramenta select
do separador Draw. Depois, basta clicar no interior do objeto ou, no caso de uma linha, nas suas
proximidades. Para selecionar vrios objetos necessrio manter pressionada a tecla control ou usar o
retngulo de seleo. Para cancelar o desenho de um objeto pode-se pressionar a tecla escape.
Desenhada a malha de elementos finitos, a etapa seguinte da modelao consiste em definir todas as
propriedades dos elementos finitos e em colocar os apoios estruturais. No separador Geometry, mostrado
na figura 9.4, so disponibilizadas as ferramentas necessrias para realizar estas tarefas.
No primeiro grupo encontram-se as funes para atribuio do nmero de ns aos elementos finitos. No
segundo grupo encontram-se as funes para a definio das restantes dimenses dos elementos finitos
e atribuio do material. Todas estas funcionalidades esto associadas a painis laterais. A ferramenta
seguinte permite o refinamento automtico da malha de elementos finitos. O ltimo grupo de
funcionalidades corresponde aos botes para selecionar o tipo de apoio estrutural a adicionar ao modelo.
Como referido, algumas das ferramentas do painel Geometry abrem painis laterais. Para definir o
nmero de ns dos elementos finitos existem os painis laterais Bars, Triangles e Quadrilaterals. Para
definir as restantes dimenses dos elementos finitos existe o painel lateral Sections. Este painel,
consoante o tipo de elemento finito, permite especificar a espessura, a rea, a inrcia e/ou a constante
de toro. Estas propriedades podem ser especificadas individualmente para cada um dos elementos
finitos da malha. Para isso, o utilizador deve previamente criar a seco e posteriormente selecionar o
respetivo elemento finito. Selecionado o elemento finito, o utilizador deve pressionar o boto direito do
rato e escolher a opo Finit Element que abre uma nova janela onde so detalhadas as caractersticas
do elemento finito.
108
Quanto s propriedades do material dos elementos finitos, o painel Materials permite ao utilizador
especificar o valor para os mdulos de elasticidade e de distoro e o valor do coeficiente de Poisson.
A figura 9.5 mostra o contedo painel Materials que permite especificar os valores das propriedades do
material selecionado. Relativamente ao refinamento da malha, o painel lateral Mesh permite definir o
nvel de refinamento a aplicar malha de elementos finitos.
Caixa de combinao
Mdulo de Elasticidade
Mdulo de Distoro
Coeficiente de Poisson
Botes para editar e guardar.
Para adicionar os apoios estruturais ao modelo necessrio, em primeiro lugar, selecionar no separador
Geometry o tipo de apoio estrutural. Depois, deve-se clicar sobre o n da malha de elementos finitos em
que se pretende aplicar o apoio estrutural. Note-se que os botes relativos aos apoios estruturais ficam
habilitados consoante o modelo estrutural selecionado.
O passo seguinte na etapa de modelao consiste em colocar as cargas no modelo. Na figura 9.6
mostrado o contedo do separador Loads. Neste separador, consoante o tipo de modelo estrutural, ficam
habilitados diferentes tipos de carregamentos para adicionar ao modelo. Consoante o tipo de modelo,
possvel adicionar cargas concentradas, momentos fletores, cargas lineares distribudas, cargas axiais
distribudas e/ou carregamentos de superfcie.
A figura 9.7 mostra o contedo do painel lateral Uniformly Distributed Loads que permite criar uma
carga linear uniformemente distribuda. O programa s permite a adio de cargas ao modelo aps a sua
109
criao no painel lateral. Para criar uma carga necessrio selecionar a opo New na caixa de
combinao. Criada a carga, necessrio preencher os campos de texto com o seu valor e no final
carregar no boto para guardar. Posteriormente, apenas necessrio clicar com o boto do rato nos locais
onde se pretende adicionar a carga. Note-se que para adicionar cargas concentradas apenas necessrio
definir um nico n. J as cargas distribudas, exceo do carregamento de superfcie, exigem que se
selecione dois ns do elemento finito.
Caixa de combinao
Componente segundo x da carga.
Componente segundo y da carga.
Botes para editar, guardar e
eliminar.
Posteriormente, sempre possvel editar o valor da carga ou remov-la do modelo. Para remover uma
carga do modelo necessrio selecionar a ferramenta para remover as cargas disponvel no separador
Loads e, em seguida, clicar com o rato sobre o n ou um dos ns em que a carga est aplicada. tambm
possvel visualizar a lista com todos os carregamentos estruturais aplicados ao modelo.
110
Bernoulli e a teoria de Timoshenko. No caso das lajes pode escolher entre a teoria de Kirchhoff e a teoria
de Reissner-Mindlin. De modo a poder escolher a teoria aplicvel ou definir os dados necessrios para
realizar a anlise numrica, o programa quando solicitado abre painis laterais onde estas opes so
disponibilizadas. tambm nesta etapa que, quando aplicvel, o utilizador deve escolher entre realizar
uma anlise em estado plano de tenso ou deformao.
Relativamente possibilidade de calcular os elementos finitos com recurso a integrao numrica, esto
disponveis duas quadraturas. Assim, o utilizador pode escolher entre a quadratura de Gauss-Legendre
e a quadratura de Gauss-Lobatto. Independentemente da quadratura escolhida necessrio definir o
nmero de pontos de integrao para cada tipo de elemento finito do modelo. A figura 9.9 mostra o
contedo do painel lateral Numerical Analysis para selecionar o tipo de quadratura e o nmero de pontos
usados para avaliar as funes.
Seleo da quadratura
Caixas de combinao
A principal diferena entre escolher uma anlise analtica ou numrica est no facto de o utilizador no
ter qualquer poder de controlo sobre o modo como so calculados os elementos finitos sempre que
selecione a opo de anlise analtica.
Construdo o modelo e definidos todos os elementos necessrios para o calcular, o utilizador deve clicar
no boto Calculate do separador Analysis para efetuar o clculo.
111
No ltimo grupo esto concentradas as funcionalidades para apresentao grfica dos resultados. Para
todos os modelos possvel visualizar a deformada da estrutura. A figura 9.11 mostra o contedo do
painel lateral Displacements. Como se pode observar pela imagem do painel lateral Displacements, o
utilizador pode controlar a dimenso do desenho da deformada da estrutura, visualizar os ns da malha
de elementos finitos e a sua numerao.
Visualizar ns da malha.
Visualizar numerao dos ns.
Visualizar ns da malha
deformada.
Alm disto, para os modelos de barras possvel visualizar os diagramas de esforos e para os modelos
bidimensionais as linhas de isovalores, os mapas de tenses e as tenses e direes principais.
Relativamente visualizao das linhas de isovalores e dos mapas de tenses, o utilizador pode escolher
qual a tenso que pretende ver representada.
112
113
114
10
CONCLUSO
115
116
BIBLIOGRAFIA
[1] Arnold, K., Gosling, J., Holmes, D. A linguagem de programao Java. Artmed Editora S.A., Porto
Alegre, 2006.
[2] Azevedo, A. Mtodo dos Elementos Finitos. Faculdade de Engenharia da Universidade do Porto,
Porto, 2003.
[3] Barros, R. Introduo ao Mtodo dos Elementos Finitos. Apontamentos da disciplina de Teoria das
Estruturas 2, Faculdade de Engenharia da Universidade do Porto, Porto, 2006.
[4] Branco, C. Mecnica dos Materiais. Fundao Calouste Gulbenkian, Lisboa, 2011.
[5] Castro, L. Elementos Finitos para a Anlise Elstica de Lajes. Apontamentos da disciplina de
Anlise de Estruturas II, Instituto Superior Tcnico, Lisboa, 2007.
[6] Cook, R., Malkus, D., Plesha, M. Concepts and Applications of Finite Element Analysis. John Wiley
& Sons., Madison, 1989.
[7] Delgado, R. Mtodo dos Elementos Finitos. Texto de apoio s aulas de Mtodo dos Elementos
Finitos, Faculdade de Engenharia da Universidade do Porto, Porto, 1990.
[8] Eck, D. Introduction to Programming Using Java. Department of Mathematics and Computer
Science, Hobart and William Smith Colleges, Estados Unidos da Amrica, 2011.
[9] Ferreira, A. Problemas de Elementos Finitos em MATLAB. Fundao Calouste Gulbenkian, Lisboa,
2010.
[10] Gonalves, M. Gerao de Malhas Bidimensionais de Elementos Finitos Baseada em
Mapeamentos Transfinitos. Dissertao de Mestrado, Universidade Federal de Minas Gerais, 2004.
[11] Kassimali, A. Matrix Analysis of Structures. Cengage Learning, Carbondale, 2012.
[12] Moreira, R. Sistema Grfico Interativo para Ensino de Anlise Estrutural Atravs do Mtodo dos
Elementos Finitos. Dissertao de Mestrado, Universidade Federal de Minas Gerais, 2006.
[13] Oate, E. Structural Analysis with the Finite Element Method. Linear Statics. Volume 1. Basis and
Solids. Springer, Barcelona, 2009.
[14] Oate, E. Structural Analysis with the Finite Element Method. Linear Statics. Volume 2. Beams,
Plates and Shells. Springer, Barcelona, 2013.
[15] Pressman, R. Software Engineering. A Practitioners Approach. McGraw-Hill, Estados Unidos da
Amrica, 2010.
[16] Rade, M. Finite Element Analysis. Editura Printech, Bucareste, 2006.
[17] Saliba, S. Implementao Computacional e Anlise Crtica de Elementos Finitos de Placas.
Dissertao de Mestrado, Universidade Federal de Minas Gerais, 2007.
[18] Sanches, P. Elementos finitos triangulares compatveis na anlise estrutural de lajes finas.
Dissertao de Mestrado, Instituto Superior Tcnico, 2011.
[19] Sebesta, R. Concepts of programming languages. Pearson, Colorado, 2012.
[20] Soriano, H. Mtodo de Elementos Finitos em Anlise de Estruturas. Editora da Universidade de
So Paulo, So Paulo, 2003.
117
[21] Teixeira-Dias, F., Pinho-da-Cruz, J., Valente, R., Sousa, R. Mtodo dos Elementos Finitos.
Tcnicas de Simulao Numrica em Engenharia. ETEP, Aveiro, 2010.
[22] Vlissides, J., Helm, R., Johnson, R., Gamma, E. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Estados Unidos da Amrica, 1994.
[23] Zienkiewicz, O.C., Taylor, R.L., Zhu, J.Z. The Finite Element Method: Its Basis and Fundamentals.
Butterworth-Heinemann, Reino Unido, 2013.
[24] http://www.netbeans.org/. Consultado em 01/10/2014.
118
ANEXOS
119
120
O projeto do programa FEM for Students encontra-se organizado por pacotes em que cada pacote
contm um conjunto de classes que definem o nome do pacote. A tabela A.1 mostra os pacotes do projeto
e o nmero de classes de cada pacote.
Tabela A.1 Pacotes e nmero de classes em cada pacote.
Pacotes do projeto
Nmero de classes
backend
20
calculations
finiteelement
27
frontend
15
gausslegendre
gausslobatto
images
matrices
shapefunctions
variablesubstitution
16
A classe que contm o mtodo main() designada por FEMforStudents e no se encontra dentro de
nenhum pacote.
Nas tabelas seguintes apresentam-se as classes de cada pacote e o nmero de linhas de cada uma. Cada
uma das tabelas apresenta somente as classes pblicas contidas no respetivo pacote.
Tabela A.2 Descrio das classes do pacote backend.
Classes
Nmero de linhas
Command
272
DiagramsForBars
833
DrawEllipse
162
DrawLine
256
DrawLoads
902
DrawNode
136
DrawPolygon
276
DrawRectangle
105
121
DrawSupports
405
DrawingMethods
1366
DrawingPanel
2894
Geometry
136
IsolinesAndMaps
903
LoadTable
261
Loads
172
OpenSave
300
PrincipalStresses
142
ResultsPane
1248
ResultsTables
708
VerticesCoordinates
329
Classes
Nmero de linhas
AnalyticGeometry
500
FiniteElement
1193
FormatResults
885
NodalResults
828
NodesCoordinates
214
Processor
1453
122
Classes
Nmero de linhas
MatrixB
178
MatrixB_1D
59
MatrixB_2D
152
MatrixB_3D
107
MatrixB_Beams
187
MatrixB_Frames
53
MatrixB_Grids
53
MatrixB_Slabs
513
MatrixD
158
MatrixJ
235
MatrixK
348
MatrixK_1D
77
MatrixK_2D
938
MatrixK_3D
805
MatrixK_Beams
498
MatrixK_Frames
82
MatrixK_Grids
82
MatrixK_Slabs
3731
MatrixT
67
VectorF
341
VectorF_1D
52
VectorF_2D
267
VectorF_3D
100
VectorF_Beams
111
VectorF_Frames
47
VectorF_Grids
45
VectorF_Slabs
224
Classes
Nmero de linhas
IndividualProperties
170
JLateralPanelAnalysis
689
JLateralPanelGeometry
1508
JLateralPanelLoads
1446
JLateralPanelResults
1001
JPanelBottom
100
JPanelHelp
150
JPanelWelcome
585
LegendsForPanels
654
MatrixTableResults
66
123
NodalForcesTable
96
NodalStressesTable
464
ReactionsSupportTable
94
UserInterface
8842
VectorTableResults
88
Classes
Nmero de linhas
GaussLegendre
141
WeightsCoordinates_1D
77
WeightsCoordinates_2D
282
WeightsCoordinates_3D
114
WeightsCoordinates_Beams
139
WeightsCoordinates_Frames
77
WeightsCoordinates_Grids
77
WeightsCoordinates_Slabs
311
Classes
Nmero de linhas
GaussLobatto
141
WeightsCoordinates_1D
77
WeightsCoordinates_2D
282
WeightsCoordinates_3D
114
WeightsCoordinates_Beams
139
WeightsCoordinates_Frames
77
WeightsCoordinates_Grids
77
WeightsCoordinates_Slabs
309
124
Classes
Nmero de linhas
Determinant
104
Inverse
120
Multiply
220
Subtract
117
Sum
117
Transpose
102
Classes
Nmero de linhas
MatrixNv
122
MatrixNv_1D
59
MatrixNv_2D
84
MatrixNv_3D
59
MatrixNv_Beams
124
MatrixNv_Frames
71
MatrixNv_Grids
71
MatrixNv_Slabs
208
Classes
Nmero de linhas
DerivedMatrix
81
DerivedMatrix_1D
63
DerivedMatrix_2D
167
DerivedMatrix_3D
107
DerivedMatrix_Beams
186
DerivedMatrix_Frames
39
DerivedMatrix_Grids
39
DerivedMatrix_Slabs
155
MatrixB
89
MatrixB_1D
54
MatrixB_2D
149
MatrixB_3D
103
MatrixB_Beams
155
MatrixB_Frames
38
125
126
MatrixB_Grids
38
MatrixB_Slabs
153
127
128
129
130
131