Ajude a manter o site livre, gratuito e sem propagandas. Colabore!
Em revisão
Nesta seção, discutimos sobre a aplicação do método de elementos finitos para o seguinte problema de valor de contorno: encontrar tal que
(1.59) | ||||
(1.60) |
onde é uma função dada.
Em revisão
A derivação de um método de elementos finitos inicia-se da formulação fraca do problema em um espaço de funções apropriado. No caso do problema (1.59)-(1.60), tomamos o espaço
(1.61) |
Ou seja, se , então , , bem como satisfaz as condições de contorno do problema.
A formulação fraca é, então, obtida multiplicando-se a equação (1.59) por uma função teste (arbitrária) e integrando-se por partes, i.e.
(1.62) | ||||
(1.63) |
Donde, das condições de contorno, temos
(1.65) |
Em revisão
Uma formulação de elementos finitos é um aproximação do problema fraco (1.66) em um espaço de dimensão finita. Aqui, vamos usar o espaço das funções lineares por partes em que satisfazem as condições de contorno, i.e.
(1.69) |
Então, substituindo o espaço pelo subespaço em (1.66), obtemos o seguinte problema de elementos finitos: encontrar tal que
(1.70) |
A formulação de elementos finitos não é única, podendo-se trabalhar com outros espaços de funções. No caso em que o espaço da solução é igual ao espaço das funções testes, a abordagem é chamada de método de Galerkin44endnote: 4Boris Grigoryevich Galerkin, matemático e engenheiro soviético. Fonte: Wikipédia..
Observemos que o problema (1.70) é equivalente a: encontrar tal que
(1.71) |
onde , , são as funções base de . Então, como , temos
(1.72) |
onde , , são incógnitas a determinar. I.e., ao computarmos , , temos obtido a solução do problema de elementos finitos 1.70.
Agora, da forma bilinear (1.67), temos
(1.73) | ||||
(1.74) |
Daí, o problema (1.70) é equivalente a resolvermos o seguinte sistema de equações lineares
(1.75) |
onde é a matriz de rigidez com
(1.76) |
é o vetor das incógnitas e é o vetor de carregamento com
(1.77) |
Consideramos o problema (1.59)-(1.60) com e , i.e.
(1.78) | ||||
(1.79) |
Neste caso, a solução analítica pode ser facilmente obtida por integração.
Agora, vamos computar uma aproximação de elementos finitos no espaço das funções lineares por partes construído numa malha uniforme de células no intervalo . Para tanto, consideramos o problema fraco: encontrar tal que
(1.80) |
onde
(1.81) |
Então, a formulação de elementos finitos associada, lê-se: encontrar tal que
(1.82) |
A Figura LABEL:fig:ex_modelo apresenta o esboço dos gráficos da solução analítica e da sua aproximação de elementos finitos .
Em revisão
Existem dois tipos de estimativas do erro . Estimativas a priori, são aquelas em que o erro é dado em relação da solução , enquanto que nas estimativas a posteriori o erro é expresso em relação a solução de elementos finitos .
Escrevendo para qualquer e usando a ortogonalidade de Galerkin (Teorema 1.2.1), temos
(1.86) | ||||
(1.87) | ||||
(1.88) | ||||
(1.89) | ||||
(1.90) |
∎
A Figura 1.6 apresenta o esboço da evolução do erro da solução de elementos finitos do problema (1.78)-(1.79) para malhas uniformes com células.
Com o FEniCS, a computação do problema de elementos finitos pode ser feita com o seguinte código:
from __future__ import print_function, division from fenics import * import numpy as np import matplotlib.pyplot as plt def boundary(x,on_boundary): return on_boundary def solver(n): # malha mesh = IntervalMesh(n,0,1) # espaco V = FunctionSpace(mesh, ’P’, 1) bc = DirichletBC(V,Constant(0.0),boundary) #MEF problem u = TrialFunction(V) v = TestFunction(V) f = Constant(1.0) a = u.dx(0)*v.dx(0)*dx L = f*v*dx #computa a sol u = Function(V) solve(a == L, u, bc) return u, mesh #sol analitica ua = Expression(’-x[0]*x[0]/2+x[0]/2’, degree=2) lerrors=[] for n in [2,4,8,16,32,64,128]: u, mesh = solver(n) e = errornorm(u,ua,norm_type=’H10’,mesh=mesh) lerrors.append(e) plt.plot([2,4,8,16,32,64,128],lerrors) plt.xscale(’log’,basex=2) #plt.yscale(’log’,base=2) plt.xlabel(r"$n$") plt.ylabel(r"$|\!|(u-u_h)’|\!|_{L^2(I)}$") plt.xlim((2,128)) plt.xticks([2,4,8,16,32,64,128],[2,4,8,16,32,64,128]) plt.grid(’on’) plt.show()
Em revisão
Aqui, vamos obter uma estimativa a posteriori para o erro da solução de elementos finitos do problema (1.59)-(1.60).
A solução de elementos finitos satisfaz
(1.94) |
onde é chamado de elemento residual e é dado por
(1.95) |
Tomando e usando a ortogonalidade de Galerkin (Teorema 1.2.1) temos
(1.96) |
Então, aplicando integração por partes
(1.97) |
Daí, observando que nos extremos dos intervalos e que , temos
(1.98) |
Agora, usando as desigualdades de Cauchy-Schwarz e a estimativa padrão de interpolação (1.26), obtemos
(1.99) | ||||
(1.100) | ||||
(1.101) | ||||
(1.102) |
donde segue o resultado desejado. ∎
No caso da solução de elementos finitos no espaço das funções lineares por partes, temos . Logo, o elemento residual se resume em .
Em revisão
Obtenha uma aproximação por elementos finitos lineares por partes da solução de
(1.103) | |||
(1.104) |
Código FENiCS.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!