Академический Документы
Профессиональный Документы
Культура Документы
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
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.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.
3
domnio. A segunda tarefa consiste em construir linhas de malha, superfcies e volumes.
Esta seccao descreve brevemente a organizacao geral dessas duas etapas.
Alguns sites que fornecem geradores de malhas podem ser encontrados com os
links disponibilizados em [1].
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.
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.
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.
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).
7
Captulo 2
Quadraturas, montagem e
armazenamento
2.1 Quadraturas
Vamos considerar um problema discreto generico da forma:
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
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
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.
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
Algumas estimativas para o erro desse problema podem ser vistas em [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 .
bn b
dtheta dhatK(k, n, l) = (l ), 1 k d, 1 n nsh , 1 l lq .
b
xk
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
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.
13
Captulo 3
Algebra Linear
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].
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:
u(x) = f (x) x
(4.1)
u(x) = 0 x ,
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)
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:
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
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
b1 (x, y) = 1 hx + hy ;
b2 (x, y) = hx ; (4.9)
b3 (x, y) = hx ;
bi TK1m ,
i,K m = 1 (N + 1)2 4N. (4.10)
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
MU = F (4.13)
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
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
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
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