12
Programao de Elementos Finitos com
MATLAB
O
Captulo 12 inclui uma introduo geral s funes do MATLAB, tpicos selecionados em lgebra linear com
MATLAB e uma coleo de programas de elementos nitos para: trelias (Captulo 2), problemas unidimen-
sionais gerais (Captulo 5), conduo de calor em duas dimenses (Captulo 8) e elasticidade em duas dimenses
(Captulo 9). Este Captulo est publicado somente no formato eletrnico por diversas razes:
1. a estrutura de dados do programa de elementos nitos ser atualizada periodicamente para reetir as tecnologias
emergentes em elementos nitos e as mudanas de sintaxe no MATLAB;
2. para permitir que instrutores de curso utilizem o seu prprio MATLAB ou outros programas de elementos
nitos;
3. para criar um frum onde estudantes e instrutores possam trocar idias e propor alternativas de estruturas de dados
de programas de elementos nitos. O frum (em ingls) est instalado no endereo: http://1coursefem.blogspot.
com/
12.1 Usando o MATLAB para o MEF
1
12.1.1 As Janelas do MATLAB
Sobre a abertura do MATLAB voc deve ver trs janelas: a janela da rea de trabalho, a janela de comando e a janela
do histrico como mostrado na Figura 12.1. Caso voc no veja essas trs janelas, ou veja mais do que trs janelas,
voc pode modicar o leiaute clicando na seguinte seleo do menu: View desktop layout default.
12.1.2 A Janela de Comando
Se voc clicar na janela de comando um cursor ir aparecer para voc datilografar e entrar com vrios comandos. O
cursor est indicado por dois smbolos maior do que ().
1
Material opcional (pode ser omitido em sala de aula). Recomendado como leitura independente.
012fish.indd 1 07.05.09 11:28:02
2 CAPTULO DOZE
12.1.3 Expresses de Entrada
Aps clicar na janela de comando, voc pode entrar nos comandos que deseja que o MATLAB execute. Tente entrar
da seguinte forma: 84. Voc ver que o MATLAB retornar: resposta 12.
12.1.4 Criando Variveis
To logo os comandos do entrada no MATLAB, as variveis so criadas. O formato geral para a entrada de vari-
veis : varivel expresso. Por exemplo, entre com y 1 na janela de comando. O MATLAB retorna com:
y 1. Uma varivel y foi criada e o valor de 1 foi atribudo a ela. Esta varivel pode ser usada em vez do
nmero 1 em futuras operaes matemticas. Por exemplo, quando digitamos y*y na rea de comando, obtemos:
resposta 1. O MATLAB sensvel a letras maisculas e minsculas, de forma que y 1, e Y 5 criaro duas
variveis independentes.
12.1.5 Funes
O MATLAB possui muitas funes matemticas-padro, tais como o seno (sen(x)) e o cosseno (cos(x)) etc. Tambm
possui pacotes de programas computacionais, chamados de caixa de ferramentas, com funes especiais para tpicos
especcos.
12.1.6 Obtendo Ajuda e Determinando Funes
A capacidade para determinar e implantar funes e ferramentas do MATLAB a habilidade mais importante que o
principiante necessita desenvolver. O MATLAB contm muitas funes que podem ser teis alm daquelas descritas
a seguir.
Existem duas formas diferentes para obter ajuda:
Clique no pequeno cone que representa uma pergunta no topo da tela. Isto abrir a janela de ajuda que possui
diversas teclas teis para achar a informao.
Digite help na linha de comando: o MATLAB retornar com uma lista de tpicos para os quais ele possui
funes. Na base da lista, ele diz como obter mais informaes sobre um tpico. Como exemplo, se voc digitar
help sqrt o MATLAB retornar com uma lista de funes disponveis para a raiz quadrada.
Figura 12.1 As janelas do Matlab.
012fish.indd 2 07.05.09 11:28:02
Programao de Elementos Finitos com MATLAB 3
12.1.7 lgebra Matricial com MATLAB
O MATLAB um sistema computacional interativo para clculos numricos e grcos. Como o nome sugere, o
MATLAB especialmente projetado para clculos matriciais. Alm disso, ele possui uma variedade de capacidades
grca e de visualizao, e pode ser estendido por meio de programas computacionais escritos em sua prpria
linguagem de programao. Aqui, introduzimos somente alguns procedimentos bsicos, de forma que voc possa
realizar operaes matriciais essenciais e a programao bsica necessria para a compreenso e o desenvolvimento
do programa de elementos nitos.
12.1.8 Denio de Matrizes
Uma matriz um arranjo de nmeros ou variveis m n arranjados em m linhas e n colunas. Tal matriz dita ter
dimenso m n, conforme mostrado a seguir
As letras em negrito denotaro matrizes ou vetores. Os elementos de uma matriz a so denotados por a
ij
, onde i o
nmero da linha e j o nmero da coluna. Observe que tanto na descrio da dimenso da matriz quanto nos subs-
critos que identicam o nmero da linha e da coluna, o nmero da linha colocado primeiramente.
Um exemplo de uma matriz 33 :
Essa matriz a um exemplo de uma matriz quadrada, visto que o nmero de linhas igual ao de colunas.
Os seguintes comandos mostram como entrar com matrizes no MATLAB ( o comando MATLAB; ele pode
ser diferente em computadores diferentes ou em verses diferentes do MATLAB.)
Observe que as linhas de uma matriz so separadas por ponto e vrgula, enquanto as entradas sobre uma linha so
separadas por espaos (ou vrgulas). A ordem da matriz a pode ser determinada a partir de
A transposta de qualquer matriz obtida pelo intercmbio de linhas e colunas. Ento, por exemplo, a transposta de
a
No MATLAB, a transposta de uma matriz denotada por uma apstrofe ().
Se a
T
a, a matriz a simtrica.
Uma matriz chamada de matriz coluna ou um vetor se n = 1, como por exemplo
012fish.indd 3 07.05.09 11:28:03
4 CAPTULO DOZE
No MATLAB, matrizes com subscritos nicos so consideradas matrizes linhas ou vetores linha.
Portanto, um vetor coluna em MATLAB denido por
Observe a transposta usada para denir b como uma matriz coluna. As componentes do vetor b so b
1
, b
2
e b
3
. A
transposta de b um vetor linha
ou no MATLAB
Uma matriz chamada de uma matriz diagonal se somente as componentes da diagonal so diferentes de zero,
isto , a
ij
0, i
1
j. Por exemplo, a matriz a seguir uma matriz diagonal:
Uma matriz diagonal em MATLAB construda primeiramente pela denio de um vetor linha b [1 5 6], e
em seguida colocando esse vetor linha sobre a diagonal
Uma matriz diagonal em que todas as componentes na diagonal so iguais a um chamada de uma identidade ou
matriz unitria e denotada por I. Por exemplo, a matriz identidade 2 2 dada por
A expresso em MATLAB para uma matriz unitria de ordem n
eye(n)
Portanto, a expresso em MATLAB I eye(2) fornece essa matriz.
Uma matriz na qual todos os componentes so zero chamada de uma matriz zero e indicada por 0. No MATLAB,
B zeros (m, n) cria m n matrizes B de zeros. Uma matriz aleatria m n pode ser criada por rand m,n). No mtodo
dos elementos nitos, as matrizes so frequentemente esparsas, isto , elas contm muitos zeros. O MATLAB possui
a habilidade para estocar e manipular matrizes esparsas, com aumento crescente de sua utilidade para problemas
reais. O comando parse (m,n) estoca uma matriz zero m n em um formato esparso, no qual somente as entradas
diferentes de zero e seus locais so ordenados.
As entradas diferentes de zero podem ento ser colocadas uma a uma ou usando um loop.
012fish.indd 4 07.05.09 11:28:04
Programao de Elementos Finitos com MATLAB 5
Observe que o visor em qualquer declarao em MATLAB pode ser suprimido ao nalizar uma linha por ponto e
vrgula.
A inversa de uma matriz quadrada denida por
se a matriz a no for singular. A expresso em MATLAB para a inversa inv(a). Equaes algbricas lineares podem
tambm ser resolvidas pela utilizao do operador de barra oblqua invertidas, o que evita clculos da inversa, sendo,
portanto, mais rpido.
A matriz a no singular se o seu determinante, indicado por det (a), no igual a zero. Um determinante de
uma matriz 22 denido por
A expresso em MATLAB para o determinante
det(a)
Por exemplo,
12.1.9 Operao com Matrizes
Adio e Subtrao
Um exemplo de matriz adio em MATLAB dado a seguir:
012fish.indd 5 07.05.09 11:28:05
6 CAPTULO DOZE
Multiplicao
1. Multiplicao de uma matriz por um escalar
2. Produto escalar de dois vetores coluna
No MATLAB, o produto escalar, como denido por essa equao, dado tanto por a * b
c
como por dot(a,b).
O comprimento de um vetor a indicado por |a| e dado por
O comprimento de um vetor tambm chamado de sua norma.
3. Produto de duas matrizes
O produto de duas matrizes a (m k) e b (k n) denido como
Alternativamente podemos escrever essa equao como
012fish.indd 6 07.05.09 11:28:05
Programao de Elementos Finitos com MATLAB 7
Observe que a entrada i,j de c o produto escalar da linha i de a com a coluna j de b.
O produto c de duas matrizes a e b denido somente se o nmero de colunas em a igual ao nmero de linhas em b.
Em outras palavras, se a uma matriz (m k), ento b deve ser uma matriz (k n), onde k arbitrrio. O produto c
ter ento o mesmo nmero de linhas que a e o mesmo nmero de colunas que b, isto , ser uma matriz (m n).
Um fato importante a lembrar que a multiplicao de matrizes no comutativa, isto , ab
1
ba exceto em circuns-
tncias no usuais.
A expresso em MATLAB para a multiplicao de matrizes
c a * b.
Considere as mesmas matrizes a e c como antes. Um exemplo de multiplicao de matrizes com MATLAB
4. Outras operaes com matrizes
a) A transposta do produto: (ab)
T
b
T
a
T
b) O produto com a matriz identidade: aI a
c) O produto com a matriz zero: a0 0
12.1.10 Soluo do Sistema de Equaes Lineares
Considere o seguinte sistema de n equaes com n incgnitas, d
k
, k 1,2,L, n
Podemos reescrever esse sistema de equaes na notao matricial como se segue
em que
a soluo simblica desse sistema de equaes pode ser achada multiplicando-se ambos os lados pela inversa de K,
que leva a
A expresso em MATLAB para a soluo do sistema de equaes
ou
012fish.indd 7 07.05.09 11:28:06
8 CAPTULO DOZE
Um exemplo de soluo do sistema de equaes com o MATLAB dado a seguir
Como mencionado anteriormente, o operador de barra oblqua invertida proporciona uma forma rpida para resolver
equaes e deve sempre ser usado para sistemas grandes. A razo para isto que o operador de barra oblqua invertida
usa a eliminao para resolver com apenas um segundo membro, enquanto a determinao da inversa de uma matriz
n x n envolve a soluo do sistema usando n segundos membros. Portanto, o operador de barra oblqua invertida deve
sempre ser usado para resolver grandes sistemas de equaes.
12.1.11 Cadeias em MATLAB
As variveis em MATLAB tambm podem ser denidas como variveis do tipo cadeia de caracteres. Um caractere
de cadeia um texto acompanhado por notas nicas. Por exemplo:
tambm possvel criar uma srie de cadeias pela criao de uma matriz na qual cada linha seja uma cadeia separada.
Igualmente com todas as matrizes-padro, a linha precisa ser do mesmo comprimento. Assim
As cadeias so utilizadas para denir nomes de arquivos, ttulos de grcos e formatos de dados. Funes especiais
para manipulao de cadeias esto disponveis no MATLAB, de forma a permitir que voc trabalhe com cadeias.
Nos programas computacionais fornecidos neste livro fazemos uso de cadeias para comparar funes. Por exemplo,
a funo strcmpi compara duas cadeias
012fish.indd 8 07.05.09 11:28:07
Programao de Elementos Finitos com MATLAB 9
Uma declarao verdadeira resulta em 1 e uma falsa em 0. Para obter uma lista de todas as funes especiais para
manipulao de cadeias em MATLAB, digite
Outra funo usada nos programas computacionais fprintf. Essa funo permite ao usurio imprimir na tela (ou
para um arquivo) cadeias e informao numrica em forma de tabela. Por exemplo
O primeiro argumento para a funo chama o MATLAB para imprimir a mensagem na tela. O segundo argumento
uma cadeia, onde %d dene um caractere decimal com o valor de 10 e o \n dene uma nova linha. Para ter uma
descrio completa digite
12.1.12 Programando com MATLAB
O MATLAB muito conveniente para escrever programas simples em elementos nitos. Ele fornece a construo-
padro, tal como laos e condicionais; tais construes podem ser utilizadas interativamente para reduzir o tdio de
tarefas repetitivas, ou coletadas em programas estocados no m-les (nada mais do que um texto com extenso
.m).
12.1.12.1 Condicional e Laos
O MATLAB possui um padro condicional if-else.
A forma geral Um exemplo
t 0,76;
if expression1 if t 0,75
statements1 s 0;
elseif expression2 elseif t 0,25
statements2 s 1;
... else
... s 1-2*(t-0,25);
... end
else s
statements s
end 0
O MATLAB fornece dois tipos de loops, um loop for (comparvel a um loop do em Fortran ou a um
loop for em C) e um loop while. Um loop for repete a instruo no loop enquanto o ndice do loop toma
os valores em um dado vetor linha; o loop while se repete enquanto a expresso dada for verdadeira (dife-
rente de zero)
A forma geral Exemplos
for i1:1:3
disp(i^2)
for index start:increment:end
stataments end
end 1
4
9
x1;
while 11x1
while expression x x/2;
statements end
end x
x
1,1102e-16
012fish.indd 9 07.05.09 11:28:08
10 CAPTULO DOZE
12.1.12.2 Funes
As funes permitem ao usurio criar novos comandos no MATLAB. Uma funo denida em um m-le que
comea com uma linha da seguinte forma
O restante do m-le consiste em comandos normais do MATLAB que calculam os valores das sadas e realizam
outras aes desejadas. A seguir, apresentamos um exemplo simples de uma funo que calcula a funo quadrtica
f(x) = x
2
3x 1. Os seguintes comandos devem ser estocados no arquivo fcn.m (o nome da funo no MATLAB
o nome do m-le, sem a extenso)
12.1.13 Grcos Bsicos
O MATLAB uma excelente ferramenta para visualizar e traar grcos de resultados. Para traar um grco, o
usurio especica o vetor da coordenada x assim como o vetor da coordenada y, usando a seguinte sintaxe
Esses comandos geraro
Figura 12.2 Sada tpica do grco da funo (x, y).
Diversos tipos de linhas, smbolos grcos e cores podem ser obtidos com o grco (x, y, s) em que s uma cadeia
de caracteres que consiste em elementos de qualquer combinao das 3 seguintes colunas
b azul . ponto - slido
g verde o crculo : pontilhado
r vermelho x marca de x -. trao e ponto
c azul-esverdeado + mais -- tracejada
m carmesim * estrela (nenhuma) sem linha
y amarelo s quadrado
k preto d diamante
Para adicionar um ttulo, uma legenda para x e y, o usurio deve usar as seguintes funes MATLAB. Observe
que os argumentos para as funes so cadeias
012fish.indd 10 07.05.09 11:28:08
Programao de Elementos Finitos com MATLAB 11
No programa computacional para elementos nitos MATLAB fornecido no livro, usamos tambm dois grcos espe-
cializados. O primeiro grco a funo patch. Tal funo usada para visualizar polgonos em 2D com cores. As
cores so interpoladas a partir de ns do polgono para criar uma superfcie colorida. O exemplo seguinte gera um
quadrado preenchido. As cores ao longo do eixo x so as mesmas, enquanto as cores ao longo do eixo y so interpo-
ladas entre os valores [0, 1].
Usaremos a funo patch para visualizar temperaturas, tenses e outras variveis obtidas nas solues dos elementos
nitos. Outra funo para grco especializado a quiver. Essa funo usada para visualizar gradientes de funes
como um grco de setas. O exemplo seguinte demonstra o uso da funo quiver para traar os gradientes para a
funo y x
2
O comando hold on usado para guardar o grco atual e todas as propriedades dos eixos, de forma que os comandos
grcos subseqentes sero executados sobre o grco existente.
Usando a funo text, o usurio pode adicionar a um grco uma mensagem de texto. Por exemplo
O primeiro e o segundo argumentos denem a posio do texto sobre o grco, enquanto a cadeia fornece o texto.
Figura 12.3 Sada tpica da funo patch (x, y, c).
Figura 12.4 Sada tpica da funo quiver (x, y, cx, cy).
012fish.indd 11 07.05.09 11:28:09
12 CAPTULO DOZE
12.1.14 Observaes
a) Na prtica o nmero n de equaes pode ser muito grande. Atualmente, os PC podem resolver milhares de
equaes em uma questo de minutos, se as equaes forem esparsas (como elas esto em uma anlise pelo
MEF voc ler sobre isso mais tarde), porm, algumas vezes, milhes de equaes so necessrias, como
para um porta-avies ou um modelo completo para um avio; nesses casos, computadores em paralelo so
necessrios.
b) Solues tcnicas ecientes que tiram vantagem da esparsidade e de outras propriedades vantajosas das equaes
do MEF so essenciais para o tratamento, mesmo em sistemas moderadamente grandes. A discusso de como
resolver ecientemente grandes sistemas no ser considerada neste curso.
c) Neste curso, iremos ver que
A matriz correspondente ao sistema de equaes que aparece do MEF (denotada como K) no singular
(frequentemente chamada de regular), isto , K
1
existe se as condies de contorno corretas so prescritas
e os elementos nitos so formulados adequadamente. Alm disso, para bons modelos, a matriz normalmente
bem condicionada, isto , ela no muito sensvel a erros de arredondamento.
K simtrica, isto , K
T
K.
K denida positiva, isto , x
T
Kx 0 x (signicando para qualquer valor de x). Alternativamente,
K dita para ser denida positiva, se todos os autovalores forem estritamente positivos. O problema do
autovalor consiste em achar os autovalores y diferentes de zero e os autovalores correspondentes l que
satisfaam a
A expresso em MATLAB para o problema dos autovalores
12.2 Programao em Elementos Finitos com MATLAB para Trelias
No Captulo 2, a estrutura bsica do mtodo dos elementos nitos para estruturas de trelias foi ilustrada. Nesta seo,
apresentamos um programa de elementos nitos simples que utiliza a linguagem de programao MATLAB. Visto
que o MATLAB manipula matrizes e vetores com relativa facilidade, o leitor pode enfocar as idias fundamentais
em vez dos detalhes do algoritmo.
O programa computacional escrito para seguir de perto a formulao dada neste captulo. De forma a entender
melhor como o programa funciona, a Figura 2.8 e o Problema Exemplo 2.2 no Captulo 2 foram includos como
exemplos resolvidos pelo programa. Avanar pelo programa com este guia e os problemas exemplos um mtodo
efetivo para compreender o programa.
As principais rotinas no programa computacional de elementos nitos so
1. Pr-processamento que inclui dados de entrada e montagem adequada dos arranjos, vetores e matrizes.
2. Clculos das matrizes de rigidez dos elementos e vetores fora.
3. Montagem direta das matrizes e vetores.
4. Partio e soluo.
5. Ps-processamento para variveis secundrias.
A explanao para vrias rotinas em MATLAB (estocadas em *.m les) descrita por meio de comentrios dentro
de cada sub-rotina.
12.2.1 Notaes e Denies
12.2.1.1 Fornecido pelo Usurio
012fish.indd 12 07.05.09 11:28:09
Programao de Elementos Finitos com MATLAB 13
12.2.1.2 Calculado ou Deduzido pelo Programa
nsd: nmero de dimenses espaciais (1 para problema 1D)
ndof: nmero de graus de liberdade por n
nnp: nmero de pontos nodais
nel: nmero de elementos
nen: nmero de ns do elemento (2 nesse caso)
nd: nmero de deslocamentos (conhecidos) prescritos
CArea: rea da seo transversal
rea CArea (nmero do elemento)
E: Mdulo de Young
Young E (nmero de elemento)
leng: comprimento do elemento
Length leng (nmero de elemento)
phi: ngulo do eixo x
c
para o eixo x para cada elemento especicado em graus. Lembre-se x
c
sempre do n local 1 para 2
phi phi (nmero de elemento)
IEN: matriz informao de conectividade
nmero do n global IEN (nmero do n local, nmero do elemento)
d_bar: vetor de deslocamento prescrito d
na Eq.
Erro! Fonte de referncia no encontrada.
f_hat: vetor fora dado f
ID