Вы находитесь на странице: 1из 24

UNIVERSIDADE FEDERAL DE SANTA CATARINA - UFSC

PROGRAMA DE POS GRADUACAO EM MATEMATICA PURA E APLICADA

DISCIPLINA: Analise Numerica II


PROFESSOR: Paulo Rafael Bosing
ALUNO: Felipe Wisniewski

IMPLEMENTACAO DE METODOS DE ELEMENTOS FINITOS

Florianopolis, julho de 2015

1
Sumario

1 Malha 3
1.1 Estrutura dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Conectividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Geradores de malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Um algoritmo para gerar malhas em duas dimensoes . . . . . . . . 4
1.2.2 Triangulacao de Delaunay . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 O algoritmo de Bowyer-Watson . . . . . . . . . . . . . . . . . . . . 5
1.2.4 Triangulacao em domnios bidimensionais . . . . . . . . . . . . . . . 5

2 Quadraturas, montagem e armazenamento 8


2.1 Quadraturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Lista de matrizes e algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Transformacoes geometricas . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Jacobianos e nos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Funcoes de forma local . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.4 Funcoes de forma global . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.5 Derivadas das funcoes de forma globais . . . . . . . . . . . . . . . . 12
2.3 Montagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Armazenamento de matrizes esparcas . . . . . . . . . . . . . . . . . . . . . 13

3 Algebra Linear 14
3.1 Condicionamento da matriz A . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Metodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Exemplo de Implementacao 16
4.1 Problema variacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Construcao da malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Escolha do subespaco Vh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.4 Discretizacao do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Calculo das Integrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.6 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2
Captulo 1

Malha

1.1 Estrutura dos dados


Para os pacotes computacionais como o Matlab e outros, uma malha nada mais e
do que um conjunto de pontos, chamados nos, sobre o domnio. Existem algumas maneiras
essenciais de arquivar esses pontos que descreveremos aqui. Imagine que os nos da malha
estejam numerados de 1 ate N . Uma maneira elementar de armazenar esses nos pode ser
feita por meio de uma matriz N de ordem N d, com d sendo a dimensao do espaco de
aproximacao.

1.1.1 Conectividade
Em muitos casos e preciso armazenar os nos da malha com alguma informacao
anexada sobre a localizacao dos mesmos no domnio.
Vamos supor que cada elemento K da malha, gerado a partir de uma trans-
formacao Tk : K b K, com K b sendo um elemento de referencia, receba uma indexacao
que coloca-o numa ordem que vai de 1 ao numero total de elementos da malha que vamos
chamar de Nel . Vamos supor tambem que, para cada elemento K, os nos desse elemento
estejam numerados de 1 a ngeo . Dessa maneira, e possvel armazenar todos os nos da
malha numa matriz N de ordem ngeo Nel . Note que pode haver repeticao dos nos ar-
mazenados, mas isso se faz nescessario para agregar informacoes de localizacao do no que
esta relacionada as coordenadas da entrada da matriz onde ele esta posicionado.
Nos casos onde ha condicoes de fronteira a serem consideradas, e preciso separar
os nos que estao na fronteira do domnio dos demais. Para isso, precisamos considerar os
elementos que tem faces em comum com a fronteira. Vamos numerar entao todas essas
faces que pertencem a fronteira de 1 ate Nf e supor que todas tem o mesmo numero de
nos ngeo . Assim, podemos armazenar esses nos numa matriz N de ordem ngeo Nf .
De maneira muito precida, e possvel armazenar os nos levando em consideracao
paricoes do domnio e particoes da fronteira, desde que haja uma enumaracao nestas
particoes.

1.2 Geradores de malhas


O ato de gerar malhas envolve basicamente dois tipos de tarefas. A primeira
tarefa e a de representar geometricamente a fronteira do domnio usando tecnicas de
mapeamento, isto e, parametrizando os caminhos ou superfcies contidos da fronteira do

3
domnio. A segunda tarefa consiste em construir linhas de malha, superfcies e volumes.
Esta seccao descreve brevemente a organizacao geral dessas duas etapas.

1.2.1 Um algoritmo para gerar malhas em duas dimensoes


No caso simples de duas dimensoes, destacamos os principais passos da geracao
de malha para um domnio a seguir:

1. Encontre os vertices do conjunto unidimensional e particione = E


S
e=1 e
de modo que cada caminho elementar e tem como extremidades dois vertices
(possivelmente os mesmos) e E denota o total de caminhos.

2. Conecte os vertices consecutivos por caminhos parametrizados e : [0, 1] e .

3. Divida osS caminhos em pequenos segmentos: para 1 e E, particione o intervalo


I1 SI1
[0, 1] em i=1 [xe,i , xe,i+1 ]. Assim, e = i=1 ([xe,i , xe,i+1 ]). Desta forma temos
= E
S SI1
e=1 i=1 ([xe,i , xe,i+1 ]) .

4. Finalmente, estenta a malha para o interior do domnio (uma maneira de reali-


zar essa segunda parte e utilizar o algoritmo de Bowyer-Watson descrito posterior-
mente).

Alguns sites que fornecem geradores de malhas podem ser encontrados com os
links disponibilizados em [1].

1.2.2 Triangulacao de Delaunay


Algumas classes de malhas sao bastante utilizadas por possurem boas proprie-
dades. Um exemplo e a classe de malhas que satisfazem a seguinte definicao:

Definicao 1.1 (Triangulacao de Dalaunay) uma triangulacao T e dita ser de Delau-


nay se, para cada elemento K em T , o interior da esfera circinscrita nao contem vertice
algum da triangulacao.

Existem algumas condicoes suficientes para que uma determinada triangulacao


seja de Delaunay. Uma das mais importantes em termos de implementacao esta enunciada
a seguir.

Lema 1.2 Se todos os simplex de uma triangulacao T contem o centro da respectica


esfera circunscrita, essa triangulacao e Delaunay.

A fim de enunciar uma propriedade importante das triangulacoes de Delaunay,


vamos definir uma relacao de ordem entre malhas. Mas antes, vejamos uma definicao
formal de triangulacao.

Definicao 1.3 Seja P um conjunto de pontos (vertices) em R2 . Chamamos de trian-


gulacao de P, qualquer conjunto T de d-simplex tal que

(i) O conjunto de vertices de T e P.

(ii) Os interiores dos simplex nao se interseptam entre si.

(iii) A uniao de todos os simplex e o envoltorio convexo de P.

4
(iv) Cada d-simplex intersepta P somente em seus vertices.
O conjunto de todas triangulacoes de um determinado domnio e denotado por
TP . Para cada T TP , denote por (T ) = (1 (T ), ..., 3Nel (T )) a lista de todos os
angulos da triangulacao arranjados em ordem decrescente. Similarmente, denote por
r(T ) = (r1 (T ), ..., rNel (T )) a lista dos raios de todos os crculos circunscritos nessa trian-
gulacao, arranjados em ordem decrescente. A partir disso, definimos a seguinte relacao
de ordem:
Definicao 1.4 Sejam T1 , T2 TP . Entao,(T1 ) < (T2 ) se, e somente se, uma das duas
condicoes sao satisfeitas: ou existe um ndice j, 1 < j 3Nel , tal que i (T1 ) = i (T2 ) para
i j 1 e j (T1 ) < j (T2 ), ou entao 1 (T1 ) < 1 (T2 ). A ordenacao total r(T1 ) < r(T2 )
em TP e definida similarmente.
Essa definicao nos permite enunciar o seguinte resultado:
Proposicao 1.5 Sobre todas as triangulacoes possveis em TP , a triangulacao de Delau-
nay maximiza (T ) e minimiza r(T )
Em outros termos, uma triangulacao Delaunay possui grande regularidade em seus ele-
mentos em comparacao com as demais. Por esse motivo, nosso objetivo de agora em
diante se restringe a construir malhas de Delauney, ou pelo menos proximas disso.

1.2.3 O algoritmo de Bowyer-Watson


Vamos partir do pressuposto que ha um conjunto de pontos Pi e sobre eles ja esta
construda uma triangulacao de Delaunay Ti . Seja Pi+1 um ponto do envoltorio convexo
de Pi mas que nao pertence ao conjunto de pontos inicial. Para inserir esse novo ponto a
malha pode-se proceder da seguinte maneira.
1. Encontre todos os simpplex ja existentes, cujos crculos circunscritos contem o novo
ponto. Denote por CPi+1 a uniao dos simplex em questao.

2. Delete de Ti os simplex que estao em CPi+1 .

3. Defina BP i+1 o conjunto de simplex construidos ligando o novo ponto aos vertices
da fronteira de CPi+1 .

4. Adicione BP i+1 em Ti .
A parte importnte com relacao ao processo descrito ate aqui e que temos o seguinte
resultado:
Teorema 1.6 A triangulacao Ti+1 = Ti \ mathcalCPi+1 BP i+1 e de Delaunay.

1.2.4 Triangulacao em domnios bidimensionais


Seja um domnio poligonal em R2 . O objetivo agora e mostrar como construir
uma triangulacao de Delaunay em . A tectica procede em tres etapas descritas a seguir:
1a etapa Formar uma triangulacao inicial em um caixacontendo o domnio e deduzir a partir
da uma malha para a fronteira. Para fazer isso, considere PI0 o conjunto dos vertices
da fronteira (como descritos na subsecao 1.2.1). Para poder aplicar o algoritmo de
Bowyer-Watson e preciso de uma triangulacao inicial. Para isso, crie uma caixaque

5
contem o domnio e trace as diagonais dessa caixa para formar uma triangulacao
inicial. A partir da, utilize o algoritmo de Bowyer-Watson para adicionar todos os
pontos da fronteira de . Agora, resta reconstruir a a fronteira, para isso encontre
as arestas da fronteira que ficaram escondidos e, para cada um deles, faca o seguinte
procedimento: Encontre o poligono formado por todos os simplex que contem parte
da aresta e retriangule essa regiao de modo que esse segmento seja uma aresta da
malha. As figura 1.1 e 1.2 proporcionam uma visualizacao geometrica dessa primeira
parte. A triangulacao resultante podera nao ser de Delaunay. Dessa forma, sera
preciso adicionar mais pontos como descreve as proximas etapas.

Figura 1.1: Exemplo da primeira etapa do processo de triangulacao em duas dimensoes


Fonte: Ern [1].

Figura 1.2: Exemplo de reconstrucao da fronteira


Fonte: Ern [1].

2a etapa Para adicionar mais pontos a malha, e preciso definir uma funcao controle H(X),
a criterio do usuario. Essa funcao controle consiste em atribuir valores a pontos
quaisquer x . O valor da fucao H aplicada em um elemento x significa que, se
um simplex tiver seu crculo circunscrito centrado naquele ponto, o crculo deve ter
raio menor ou igual a H(x).
3a etapa A ultima etapa do processo e adicionar mais pontos a malha. Esse processo devera
ser repetido ate a malha estar de acordo com a funcao de controle definida. Para
essa ultima parte podem ser seguidos os seguintes procedimentos:
(a) Separe os triangulos da malha em internoe externos. Os externos de-
vem ser excludos. Separe agora os triangulos internos em aceitose recusa-

6
dosaplicando a funcao controle H. Por fim, separe os triangulos recusados em
ativose inativos. Os ativos sao triangulos recusados que tem alguma face em
comum com algum triangulo aceito.
(b) Ordene os triangulos ativos com relacao ao tamanho do raio do crculo circuns-
crito.
(c) Escolha o triangulo cujo circulo circunscrito tem o maior raio e adicione um
novo ponto X no segmento que liga o centro do crculo circinscrito com o ponto
medio de alguma face P Q que o trianglo tem em comum com um triangulo
aceito, posicionado de maneira que o triangulo P XQ esteja de acordo com a
funcao controle (ver figura 1.3).

Figura 1.3: Exemplo de adicao de um ponto na malha


Fonte: Ern [1].

(d) Reconstrua a triangulacao acrescentando o ponto X com o algoritmo de Bowyer-


Watson.
(e) Repita a etapa 1.
(f) Se o numero de triangulos recusados ativos for zero, pare. Caso contrario,
recomece a partir da etapa 2.

7
Captulo 2

Quadraturas, montagem e
armazenamento

2.1 Quadraturas
Vamos considerar um problema discreto generico da forma:

Encontre u Wh tal que


ah (u, v) = f (v), v Vh , (2.1)
de modo que Wh e Vh sao espacos de de dimencao finita com bases construdas sobre uma
malha Th sobre um domnio em Rd , ah e uma forma bilinear definida em Wh Vh , e fh
e um funcional linear definido em Vh . Em geral, ah e fh sao da forma
Z Z Z
ah (u, v) = Ah (x, u, v)dx, fh (v) = Fh (x, v)dx + Gh (x, v)dx, (2.2)
N

com Ah , Fh e Gh sendo operadores e N uma parte da fronteira de .


A partir desta formulacao do problema, e possvel aproximar escrever as funcoes
u e v como combinacoes lineares da base e, a partir da, transformar o problema (2.2) em
um sistema linear da forma Ax = b. Para gerar as entradas que compoe a matriz A e o
vetor b desse sitema sao nescessarias integracoes sobre e N . Nosso objetivo agora e
encontrar maneiras de calcular essas integrais.
Antes de mais nada, vamos relembrar do princpio de quadratura para integrais.

Definicao 2.1 Seja K um subconjunto nao-vazio, Lipschitz, compacto e conexo de Rd .


Seja lq 1 um inteiro. Uma quadratura em K com lq pontos consiste em:
(i) Um conjunto de lq numeros reais {1 , ..., lq } chamados nos da quadratura.
(ii) Um conjunto de lq pontos {1 , ..., lq } em K chamados pontos de Gauss ou nos da
quadratura.
O maior numero inteiro k tal que
Z lq
X
p Pk , p(x)dx = l p(l ), (2.3)
K l=1

e chamado de ordem de quadratura e denotado por kq

8
Em [1] podem ser encontrados alguns exemplos de quadraturas.
R
Com base na ideia de quadratura, vamos agora considerar (x) dx com uma
funcao suave. Utilizando a decomposicao
Z X Z
(x) ddx = (x) dx,
KTh K

R
o calculo de (x) dx se reduz a calcular as integrais sobre cada elemento da malha.
Seja K um elemento arbitrario em Th . Uma vez que a transformacao TK , de K
b em K, e
1
um C -difeomorfismo, a mudanca de variavel x = TK (bx) resulta em
Z Z
(x) dx = (TK (b
x))det(JK (bx)) db
x,
K K
b

com JK (b x) sendo o Jacobiano de TK em x b. Assim, o problema se reduz a calcular as


integrais sobre o elemento de referencia K. Usando uma quadratura com lq nos Gaussianos
b
b ditos {b1 , ..., blq ;
em K, blq }, temos
b1 , ...,
Z lq
X
(x) dx =
bl det(JK (bl ))(TK ()).
b
K l=1

Seja kq a ordem dessa quadratura. Definindo l,K =


bl det(JK (bl )) e lK = TK (),
b obtem-
se
Z lq
X X
(x) dx lK (lK ),
KTh l=1

isto e, {b1 , ..., blq ; blq } e uma quadratura em K. A precisao dessa quadratura e
b1 , ...,
garantida gracas a algumas estimativas de erro demonstradas em [1].
Voltando agora ao problema iscreto (2.2), podemos escrever
lq
X X
ah (u, v) ahQ (u, v) = lK Ah (lK , u(lK ), v(lK )), (2.4)
KTh l=1

e tambem
Z lq
X X
Fh (x, v) dx lK Fh (lK , v(lK )), (2.5)
KTh l=1

e a integral relacionada a condicao de fronteira


lq
Z X X
g(x)v(x) dx lF Gh (lF , v(lF )), (2.6)
N F Nh l=1

de modo que Nh representa o conjunto de faces que pertencem a fronteira, lq o numero


de nos da quadratura gaussiana sobre e lF os pesos. Finalmente, utilizando (2.5) e
(2.6) podemos escrever

lq
lq
X X X X
fhQ (v) = lK Fh (lK , v(lK )) + lF Gh (lF , v(lF )). (2.7)
KTh l=1 F Nh l=1

9
Fazendo uso de (2.4) e (2.5) temos a reformulacao aproximada do problema (2.2) a seguir.

Encontre u Wh tal que

ahQ (u, v) = fhQ (v), v Vh . (2.8)

A primeira coisa que podemos nos questionar, e se o sistema linear gerado por (2.8)
possui sempre solucao e se ela e calculavel. A resposta e: nem sempre. Tudo depende da
nao singularidade e condicionamento da matriz de rigidez gerada atraves do calculo das
integras por meio de quadratura. Mais detalhes sobre isso serao discutidos posteriormente.
O teorema a seguir traz um resultado importante sobre o problema (2.8).

Teorema 2.2 Seja {T }h>0 uma famlia de malhas afim de forma regular e seja Vh V
um espaco de dimencao finita cuja base esta construda sobre Th e o elemento de referencia
{K, b Assuma que P1 Pb e que existe l 1 tal que:
b Pb, }.

(i) Pb Pl .
b e de ordem 2l 2.
(ii) A quadratura em K

Entao o problema (2.8) e bem posto.

Algumas estimativas para o erro desse problema podem ser vistas em [1].

2.2 Lista de matrizes e algoritmo


Nesta secao, abordamos aspectos praticos associados a implementacao de formulas
de quadratura. Em particular, podemos enumerar uma lista lista de matrizes necessarios
para calcular a matriz de rigidez e o vetor do lado direito associados com (2.8). Em toda
esta secao, assumimos Wh = Vh por uma questao de simplicidade.

2.2.1 Transformacoes geometricas


Relembremos da matriz que N que armazena os nos da malha. Vamos supor
que ela seja inserida em um pacote computacional com o nome coord. Alem disso,
lembremos da matriz N definida anteriormente, que armazena os nos da malha de acordo
com seu posicionamento que cada elemento, vamos supor que essa matriz receba o nome
de geo cnty no pacote computacional. Seja TK a aplicacao de K b em K. Seja tambem
{K, Pgeo , } o elemento geometrico de referencia pelo qual a malha e construda. Seja
b b b
ngeo o numero de graus de liberdade em b geo } e {b
g1 , ..., gbngeo } os nos geometricos de K.
b
Denotemos por {b1 , ..., bngeo } as funcoes de forma no elemento de referencia K. b Sendo
Nel o numero de elementos na malha, a k-esima coordenada cartesiana de TK (bl ), com
1 m Nel , 1 k d, e dada por
  ngeo
X
TK m (bl ) = coord(k, geo cnty(n, m))psi(n, l)
k
n=1

com
psi(n, l) = bn (bl ), 1 n ngeo , 1 l lq .

10
2.2.2 Jacobianos e nos
x) Rd,d a matriz jacobiana da transformacao TK,m num ponto
Seja entao JK m (b
x b Assim, a entrada (k1 , k2 ) de JK (bl ) em bl , 1 k1 , k2 d e dada por
b em K.
ngeo
X
x))k1 ,k2 =
(JK m (b coord(k1 , geo cnty(n, m))dpsi dhatK(k2 , n, l)
n=1

utilizando uma matriz de entradas triplas dpsi dhatK(1 : d, 1 : ngeo , 1 : lq ) tal que

bn b
dpsi dhatK(k, n, l) = (l ), 1 k d, 1 n ngeo , 1 l lq .
bxk
m b
Uma vez, nas quadraturas, o determinante de JK (l ) esta sempre multiplicado pelo peso

bl , e aconselhavel armazenar este produto todo de uma vez numa matriz de entradas
duplas de pesos:
 
m b
weight K(l, m) = bl det (JK (l ) , 1 l lq , 1 m Nel .

2.2.3 Funcoes de forma local


Seja {K,b Pb, }
b o elemento finito de referencia. Seja nsh o numero de graus de
liberdade de b e seja {b1 , ..., bn } as funcoes de forma lacal em K.
b Uma vez que os valores
sh
das funcoes de forma local nos nos de Gauss sao necessarios nas formulas de quadratura,
e aconselhavel calcular todos esses valores e armazena-los na matriz

theta(n, l) = bn (bl ), 1 n nsh , 1 l lq .

Do mesmo modo, e geralmente vantajoso armazenar os valores das derivadas de primeira


ordem das funcoes de forma locai na matriz

bn b
dtheta dhatK(k, n, l) = (l ), 1 k d, 1 n nsh , 1 l lq .
b
xk

2.2.4 Funcoes de forma global


Por questao de simplicidade, assuma que a aplicacao linear bigetiva K utilizada
para gerar o espaco de aproximacao Vh e tal que K (v) = v TK . Essa afirmacao e valida,
por exemplo, se o elemento finito de referencia e um elemento finito de Lagrange.
Seja N = dim(Vh ). As funcoes de forma globais sao numeradas de 1 a N , ditas
{1 , ..., N }. A fim de implementar a relacao entre as funcoes de forma locais e globais,
definimos uma matriz de conectividade com entradas duplas de ordem nsh Nel ,

pde cnty(1 : nsh , 1 : Nel ).

Essa matriz de conectividade e tal que, para 1 n nsh e 1 m Nel ,

x Km , pde cnty (x) = bn TK1m (x).

Isto e, bn TK1m (x) e a restricao de Km da pde cnty(n, m)-esima funcao de forma global.

11
2.2.5 Derivadas das funcoes de forma globais
Seja Km um elemento na malha e seja i uma funcao de forma global cujo suporte
tem interseccao nao vazia com Km . Seja 1 n nsh tal que i =pde cnty(n, m), isto e,
i |Km = = bn TK1m (x). Utilizando a regra da cadeia temos entao
d
bn TK1m
 i1 
n X bn b h
(lKm ) = (lKm ) = (l ) JKm (l )
b .
xk1 xk1 k =1
b
xk2 k1 ,k2
2

Por questoes praticas, vamos considerar o caso em que TK e afim. Desta forma, a matriz
jacobiana JKm e sua inversa sao constantes sobre o elemento, ou seja, nao dependem dos
nos da quadratura de Gauss. Nesse caso, pode-se armazenar a inversa da matriz jacobiana
como
inv jac(k1 , k2 , m) = [JKm ]1 k1 ,k2 ,


n
e como precisamos tambem das quantidades x k
(lKm ), as seguinte operacoes devem ser
1
realizadas:
n
(lKm ) = sumdk2 =1 dtheta dhatK(k2 , n, l)inv jac K(k2 , k1 , m).
xk1

O caso em que TK m nao e a fim e estudado em [1].

2.3 Montagem
Utilizando as variaveis computacionais descritas ate o momento, e possvel cal-
cular as entradas da matriz de rigidez A da seguinte maneira:

Algoritmo 2.1 .
A=0
Para m = 1 ate Nel
Para l = 1 ate lq
Para ni = 1 ate nsh ; i =pde cnty(ni, m)
Para nj = 1 ate nsh ; i =pde cnty(ni, m)
A(i, j) = A(i, j)+weight K(l, m)*Ah (lkm , j (lkm ), i (lkm ))
end
end
end
end

O calculo dos valores Ah (lkm , j (lkm ), i (lkm )) no algoritmo 2.1 vao depender do tipo de
problema escolhido. No captulo 4 e estudado um exemplo especfico onde esses calculos
sao realizados.
O algoritmo a seguir descreve uma maneira de encontrar o vetor que representa
o lado direito do problema (4.4).

Algoritmo 2.2 .
b=0
Para m = 1 ate Nel

12
Para l = 1 ate lq
Para ni = 1 ate nsh ; i =pde cnty(ni, m)
b(i) = b(i)+weight K(l, m)*Fh (lkm , i (lkm ))
end
end.

2.4 Armazenamento de matrizes esparsas


Em geral, matrizes geradas por elementos finitos aplicados em equacoes diferen-
ciais parciais sao bastante esparsas, ou seja, o numero de entradas nulas relativamente
grande em comparacao ao total de entradas da matriz. Isso se deve ao fato das funcoes
de base terem suporte compacto sobre elementos da malha que contem o no com base
no qual a funcao de forma esta definida. Assim, dadas duas funcoes de forma i e j
da base de Vh , as chances de os suportes dessas duas funcoes serem disjuntos e grande.
Como a forma bilinear ah (i , j ) sempre e definida por uma integral envolvendo essas
duas funcoes, sao grandes as chances de ocorrer ah (i , j ) = 0
Essa observacao motiva a busca de um meio de armazenar essa matriz sem ter
que quardar as entradas nulas, reduzindo a memoria utilizada pelo pacote computacional.
Uma das tecnicas de armazenamento mais utilizadas para matrizes esparsas e e um for-
mato de linhas esparsas comprimidas (resp., Colunas), geralmente referida como formato
CSR (resp., CSC). Mais detalhes sobre esses metodos podem ser vistos em [1].

13
Captulo 3

Algebra Linear

Como vimos, utilizando aproximacoes com elementos finitos, o problema variaci-


onal discreto (4.4) se resume a um sistema linear da forma Ax = b. Por esse motivo, vale
a pena estudar em que condicoes esse tipo de sistema e resoluvel e como podemos fazer
para resolve-lo. A primeira observacao a se fazer e se a matriz A e nao-singular. Isso
e quase sempre garantido pelo fato das entradas da diagonal de A serem, em geral, nao
nulas, e tambem pelo fato das entradas serem geradas por calculos computacionais que
envolvem muitas casas decimais. Sendo assim, pela densidade do conjunto de matrizes
nao singulares de ordem n n no conjunto de todas as matrizes de ordem n n, podemos
dizer que a possibilidade de A ser singular e bem pequena. Supondo entao que A e nao-
singular e preciso saber se a matriz e bem comportada no sentido de oferecer estabilidade
aos metodos de solucao do sistema linear. A secao a seguir tem mais detalhes sobre esse
assunto.

3.1 Condicionamento da matriz A


Definicao 3.1 (Numero de Condicao) Seja A uma matriz inversvel de ordem. Seu
numero de condicao e definido por

(A) = kAk2 kA1 k2 , (3.1)

de modo que k k2 representa a norma euclidiana matricial.

O numero de condicao de uma matriz A esta relacionado ao quao proxima essa matriz
esta de ser singular, ou seja, quanto maior for o numero de condicao, mais proxima de ser
singular e a matriz. Essa afirmacao pode ser comprovada com o seguinte resultado:
Proposicao 3.2 Seja x a solucao do sistema Ax = b e x + x a solucao do sistema
perturbado A(x + x) = b + b. Assuma que b 6= 0. Entao,
kxk2 kbk2
(A) . (3.2)
kxk2 kbk2
Existe tambem uma versao semelhante para perturbacoes na matriz A.
Proposicao 3.3 Sexa x a solucao do sistema linear Ax = b e x+x a solucao do sistema
perturbado (A + A)(x + x) = b. Assuma que b 6= 0. Entao,
kxk2 kAk2
(A) .
kx + xk2 kAk2

14
Na pratica, essas duas ultimas proposicoes no dizem que a propagacao de um erro de
aproximacao gerado por um pacote computacional ao resolver o sistema linear Ax = b e
proporcional ao numero de condicao da matriz.
No caso da matriz de rigidez A associada ao problema (4.4), sob condicoes ade-
quadas, a limitacao uniforme do numero de condicao (A) com respeito a h e garantido
quando empregada uma famlia de malhas {Th }h>0 quase uniforme e a forma bilinear ah
e uniformemente limitada com respeito a h. Para mais detalhes, ver [1].

3.2 Metodos Iterativos


Uma vez conhecido o sistema linear associado ao problema (4.4), e preciso bolar
estrategias para resolvelo. Em livros classicos de Algebra Linear Computacional, e possi-
vel encontrar varios metodos de se resolver sistemas lineares classificados entre metodos
diretos e iterativos. Em geral, para matrizes de grande porte, os metodos mais indicados
sao os iterativos por questao de economia de calculos. Para o caso de matrizes simetricas,
utiliza-se, em geral, o metodo de Gradientes Congugados [1]. Nos demais casos, e possvel
utilizar metodos como SOR (successive over relaxation) [2].

15
Captulo 4

Exemplo de Implementacao

A fim de fornecer uma visualizacao pratica de como utilizar a teoria vista ate
o momento, apresenta-se a seguir um passo a passode como implementar o calculo da
solucao aproximada do seguinte problema:

Considerando = [0, 1] [0, 1] e f L2 (), encontre u : R tal que:

u(x) = f (x) x
(4.1)
u(x) = 0 x ,

4.1 Problema variacional


Considerando um espaco vetorial V = H01 (), podemos reformular o problema
(4.1) de forma fracamultiplicando ambos os lados da primeira igualdade por uma funcao
qualquer v V e integrando por partes sobre , obtendo assim o seguinte problema:

Encontre u V tal que:


R
a(u, v) =
f (x)v(x) v V,
(4.2)
u(x) = 0 x ,
de modo que a forma bilinear ae dada por
Z
a(u, v) = u(x) v(x) dx u, v V. (4.3)

O problema (4.2) e bem posto pois a forma bilinear ae contnua e coerciva, logo valem
as hipoteses do Lema de Lax-Milgram. Mais detalhes dessa demonstracao podem ser
encontrados em [1].
Se considerarmos um subespaco vetorial de dimensao finita Vh V , damos ori-
gem a seguinte variacao do problema (4.2):
Encontre u Vh tal que:
R
ah (u, v) = f (x)v(x) v Vh ,
(4.4)
u(x) = 0 x ,

16
de modo que a forma bilinear ah e dada por
Z
ah (u, v) = u(x) v(x) dx u, v Vh . (4.5)

4.2 Construcao da malha


Em problemas mais elaborados, existem ferramentas computacionais especficas
para a geracao de malhas. Por esse motivo, vamos considerar aqui uma malha bem
simplificada para o nosso problema. Dado que = [0, 1][0, 1], vamos considerar a malha
que cobre como uma triangulacao formada por 2-simplex, todos de mesmo tamanho.
Para isso, vamos considerar uma particao x0 , x1 , ..., xN do intervalo [0, 1] sobre o eixo x de
modo que cada subintervalo definito a partir dessa particao e da forma [xi , xi+1 ] = [ Ni , i+1
N
]
com i = 0, 1, ..., N . Da forma analoga, particionamos o intervalo [0, 1] sobre o eixo y de
modo que cada subintervalo e da forma [yj , yj+1 ] = [ Nj , j+1
N
]. Com isto, podemos escolher
os pontos da malha como sendo
ni,j = (xi , xj ), i, j = 0, 1, ..., N. (4.6)
Sabemos que o envoltorio convexo de uma famlia de pontos (a, b, c) em R2 define um
2 simplex. Assim, a partir dos nos definidos em (4.6), podemos considerar o conjunto
de 2-simplex definidos sobre o seguinte conjunto de famlias de pontos:
{(ni,j , ni+1,j , ni,j+1 )} {(ni,j , ni1,j , ni,j1 )},
desconsiderando as famulias que contem pontos da forma ni+1,j , ni,j+1 , ni+1,j , ni,j+1 , que
nao pertencem a . A figura 4.1 apresenta a malha construda com 2 simplex conside-
rando N = 5

Figura 4.1: malha gerada a partir de N = 5


Fonte: Autor.

A priori, vamos estabelecer uma ordenacao no conjunto de nos da malha, supondo


que esteja definida uma aplicacao
: (1, 2..., N + 1) (1, 2, ..., N + 1) (1, 2, ..., (N + 1)2 )
(4.7)
(i, j) 7 (i, j) = m

17
de modo que a posicao de um determinado no ni,j nessa ordenacao seja determinada por
m = (i, j).
Vamos considerar um elemento de referencia K b definido pela famlia de pon-
1
tos {(0, 0), (h, 0), (0, h)} com h = N . A partir desse elemento, vamos procurar trans-
formacoes TKm que gerem todos os elementos da malha. Repare que a malha e composta
por triangulos iguais e podemos dividir esses elementos em dois conjuntos E1 e E2 de
modo que os elementos do conjunto E2 possuem uma posicao rotacionada de 180o com
relacao aos elementos. Para entender melhor, a figura 4.2 mostra a posicao relativa dos
elementos de cada conjunto:

Figura 4.2: Posicionamento dos elementos na malha


Fonte: Autor.

Essa separacao sugere uma organizacao na numeracao dos elementos da malha.


Vamos enumerar entao os elementos de E1 por ndices pares e E2 por ndices mpares,
obtendo uma indexacao que vai de 1 a 2N 2 .
Vamos armazenar os nos da malha numa matriz geo cnty de ordem 3 2N 2 , a
indexaxao de 1 a 2N 2 representa o ndice do elementos da malha e a numeracao que vai de
1 a 3 representa o ndice do vertice do elemento. Vamos super que, para cada elemento,
o ndice 1 corresponda ao vertice de angulo 90o e a ordem prossiga no sentido antiorario
como mostra a figura 4.3.

Figura 4.3: Ordenacao dos vertices em cada elemento


Fonte: Autor.

Agora utilizando os conceitos de transformacao de rotacao e translacao, vamos


definir as transformacoes afim, TK m : Kb K m , para 1 m 2N 2 como

(x, y) + geo cnty(1, m), se m e par
TK m (x, y) :=
(x, y) + geo cnty(1, m), se m e mpar.

Essas transformacoes permitem gerar todos os elementos da malha. Perceba que as matri-
zes jacobianas JTK m das transformacoes TKm sao matrizes com entradas constates. Vamos

18
supor que cada determinante seja armazenado comm uma entrada

det JTK(m) (4.8)

de um vetor det JTK de ordem 2N 2 (numero de elementos da malha).

4.3 Escolha do subespaco Vh


Para o problema (4.4) vamos escolher o espaco Vh dado por

Vh = {v|v C 0 ( H01 (), v|K P1 (K), K Th }

de modo que P1 (K) representa o espaco de polinomios de grau menor ou igual a um,
definidos no elemento K.
Vamos definir uma base de polinomios de lagrange para esse subespaco Vh . Para
isso, note que, como estamos considerando polinomios de ordem menor ou igual a um,
os nos de Lagrange serao exatamente os nos da malha definidos em (4.6). Sendo assim,
podemos denotar por B = {m }, m (1, 2, ..., (N +1)2 ), o conjunto formado pelas funcoes
da base de Lagrange de V h de modo que n (nm ) = n,m para m, n (1, 2, ..., (N + 1)2 ).
Note que cada funcao m tem como suporte a uniao dos triangulos que tem nm como
vertice (ver Figura 4.4).
Para poder dizer quem sao as funcoes de forma global, vamos definir inicialmente
as funcoes de forma no elemento K b fazendo uso das coordenadas baricentricas. Coma
sabemos, no caso especial em que o grau do interpolante e 1, as funcoes de forma sobre
Kb sao definidas por b1 = 1 , b2 = 2 e b3 = 3 com 1 , 2 e 3 sendo as coordentadas
baricentricas em K b definidas por

((x, y) ai ) ni
i (x, y) = 1 , i = 1, 2, 3,
(aj ai ) ni

com a1 , a2 e a3 sendo os vertices do triangulo de referencia ordenados de maneira analoga


aos elementos da malha. Sendo assim, as funcoes de forma, nesse caso, sao dadas por:

b1 (x, y) = 1 hx + hy ;
b2 (x, y) = hx ; (4.9)
b3 (x, y) = hx ;

A partir da. podemos definir as funcoes de forma globas por

bi TK1m ,
i,K m = 1 (N + 1)2 4N. (4.10)

O numero (N + 1)2 4N e total de nos na malha diminudos os 4N nos pertencentes a


fronteira. Isso se deve ao fato da formulacao do problema exigir que as funcoes se anulem
na fronteira. Por questao de simplicidade de notacao, vamos escrever, de agora em diante,
Nglob = (N + 1)2 4N
Desta forma, qualquer funcao vh Vh pode ser escrita como
Nglob
X
vh (x) = l (vh )l (x), x (4.11)
l=1

De modo l sao tais que l (vh ) = vh (nl ).

19
4.4 Discretizacao do problema
Observe que, fazendo uso do espaco de aproximacao Vh podemos escrever
Nglob
X
v(x) l (v)l (x), x , v H01 ().
l=1

Desta forma, utilizando a bilinearidade de a e a linearidade do produto interno (, )L2 () ,


temos que a igualdade (4.4) pode ser reescrito como

Nglob Nglob Nglob
X X X
ah u(nl )l , v(np )p = g, v(np )p
l=1 p=1 p=1
L2 ()
Nglob Nglob Nglob
X X X
u(nl ) v(np )ah (l , p ) = v(np ) (g, p )L2 () .
l=1 p=1 p=1

Portanto, podemos redefinir a formulacao variacional discreta do problema como sendo:


Encontre u Vh tal que
Nglob
X
u(nl )ah (l , p ) = (g, p )L2 () , p (1, 2, ..., (Nglob ). (4.12)
l=1

Definindo agora uma matriz M= {Ml,p } tal que Ml,p = ah (l , p ) para l, p =


1, ..., Nglob e vetores U = {ul } e F = {fp } de modo que, ul = u(nl ) fp = (g, p ), o
problema (4.12) pode ser representado pelo sistema linear:

MU = F (4.13)

4.5 Calculo das Integrais


Nosso objetivo agora e calcular
Z
ah (l , p ) = l p 1 l, p Nglob . (4.14)

Note que, integrando em cada elemento K m e fazendo uso de (4.10), temos que
Z X Z
l (x, y)p (x, y) dxdy = l (x, y)p (x, y) dxdy
K m supp(l ,p ) Km

X Z
= bi TK1m (x, y)bj TK1m (x, y) dxdy,
K m supp(l ,p ) Km

de modo que a relacao de l e p com i e j e estabelecida pela transformacao TKm aplicada


aos vertices dos triangulos. Fazendo entao uma mudanca de variaveis, temos que
Z Z
1 1
i TK m (x, y)j TK m (x, y) dxdy =
b b bi (x, y)bj (x, y)det(JTK m ) dxdy
K m supp(l ,p ) K
b
(4.15)

20
Perceba que os determinantes que aparecem na matriz ja foram construdos
R em
2
(4.8) e representados por det JTK(m), 1 m 2N . Assim, resta calcular Kb i (x, y)bj (x, y).
b
Vamos definir |K| como sendo a area de cada triangulo da malha. No caso da
2
nossa malha, todos os triangulos possuem mesma area h2 . Fazendo uso de (4.9) obtemos
Z Z    
1 1 1 1 2
b1 (x, y)b1 (x, y) = , , = 2 |K| = 2
h h h h h
ZK ZK 
b b
  
1 1 1 1
b2 (x, y)b2 (x, y) = ,0 , 0 = 2 |K| =
h h h 2
ZK ZK 
b b
  
1 1 1 1
b3 (x, y)b3 (x, y) = 0, 0, = 2 |K| =
h h h 2
ZK ZK 
b b
  
1 1 1 1 1
b1 (x, y)b2 (x, y) = , , = 2 |K| =
h h h h 2
ZK ZK 
b b
  
1 1 1 1 1
b1 (x, y)b3 (x, y) = , 0, = 2 |K| =
h h h h 2
ZK ZK 
b b
  
1 1
b1 (x, y)b2 (x, y) = , 0 0, =0
Kb K
b h h

Deste modo, e possvel armazenar esses resultados em uma matriz int ref em que
Z
int ref(i, j) = bi (x, y)bj (x, y), 1 i, j 3. (4.16)
K
b

E interessante observar que, gracas as tranformacoes construdas para gerar todos os


elementos da malha a partir de um elemento de referencia, os calculos ficam muito mais
simplificados pois somente as funcoes de base do elemento de referenca precisarao ser
integradas. R
Perceba que podemos separar as intgrais do tipo l p em tres conjuntos
essenciais. O primeiro compoe os elementos que estao na diagonal da matriz de rigidez A
associada ao problema e sao dados por
Z
ah (l , l ) = l l .

O segundo conjunto e formado pelas integrais


Z
ah (l , p ) = l p ,

nos casos em que ha intersecao entre os suportes de l e p . Essas integrais sao, em geral,
nao nulas. O ultimo conjunto e formado pelas integrais envolvendo funcoes de base cujos
suportes sao disjuntos. Nesse caso, temos a certeza que os valores resultantes serao nulos.
A figura 4.4 ilustra o caso onde a intersecao entre os suportes de duas funcoes de base.
Essa intersecao esta destacada cor cinza escuro.

21
Figura 4.4: Area em comum entre os suportes de i e j .
Fonte: Autor.

Essas informacoes sao relevantes para se saber qual sera a estrutura de espar-
sidade da matriz de rigidez formada. Dependendo do resultado dessa analise, pode ser
interessante realizar uma reordenacao nos nos de maneira que a matriz M seja de banda
proximaa uma matriz diagonal. Isso pode facilitar, tanto o armazenamento da matriz
como a resolucao do sistema posteriormete.

4.6 Algoritmo
Para finalizar a parte da montagem do sistema linear, vamos utilizar as in-
formacoes construdas ate o momento para motar os algoritmos. O primeiro se refere
a construcao da matriz de rigidez M .

Algoritmo 4.1 ,
A = 0;
Para l = 1 ate Nglob ;
Para p = 1 ate Nglob ;
M (l, p) = M (l, p)+int(l, p);
end.
end

Em que os valores Z
int(l, p) := l p

sao calculados por X
int(l, p) = int ref(i, j)*det JTK(m),
K m

lembrando que int ref(i, j) e det JTK(m) sao definidos por (4.16) e (4.8). Neste caso,
K m esta representando os elementos que pertencem a intersecao das funcoes de forma
globais que estao sendo integradas.
Para calcular o vetor F que representa o lado direito do problema (4.13), pode
ser realizado o seguinte procedimento:

22
Algoritmo 4.2 ,
F = 0;
Para p = 1 ate Nglob ;
F (p) = F (p) + prod(p);
end,
R
em que prod(p) = qp .
Ao final do processo, e preciso resolver o sistema linear M U = F . Isso pode ser
feito utilizando o metodo SOR ou outro escolhido a criterio do usuario. O vetor solucao
U ainda nao e exatamente a solucao do nosso problema. Na verdade, as entradas desse
vetor sao apenas as constantes da combinacao linear da solucao discreta do problema, ou
seja, e preciso reconstruir a funcao u Vh fazendo
Nglob
X
u(x) = U (l)l (x, y). (4.17)
l=1

Finalmente, a funcao descrita em (4.17) e a solucao do problema discreto (4.4).

23
Referencias Bibliograficas

[1] ERN, A.; GUERMOND, J. L. Theory and Practice of Finite Elements. New York:
Springer, 2004.

[2] GOLUB, G. H.; VAN LOAN, C. F. Matrix computations (3rd ed.). Baltimore, MD,
USA: Johns Hopkins University Press, 1996.

24

Вам также может понравиться