| | | | |

5.2 Método de Elementos Finitos

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

Consideramos o seguinte problema linear de valor de contorno (PVC)

u′′=f(x),a<x<b, (5.33a)
u(a)=0, (5.33b)
u(b)=0. (5.33c)

onde a incógnita é u=u(x) com dada fonte f=f(x).

A solução pelo Método de Elementos Finitos (FEM) de (5.2a)-(5.2c) surge da aproximação do problema em um espaço de dimensão finita de funções. São três passos fundamentais: 1. escrever a formulação fraca do problema2222endnote: 22Por convenção, (5.2a)-(5.2c) é chamado de formulação forte do problema., 2. escrever a formulação de elementos finitos e 3. resolver o problema de elementos finitos.

1. Formulação Fraca

Para obter a formulação fraca do PVC (5.73)-(5.33c), multiplicamos (5.73) por uma arbitrária função teste v=v(x)

u′′v=fv (5.34)

e integramos no domínio axb, i.e.

abu′′v𝑑x=abfv𝑑x. (5.35)

Então, aplicando integração por partes no primeiro termo do lado esquerdo, obtemos

abuv𝑑x[uv]x=ab=abfv𝑑x. (5.36)

Vamos denotar o produto interno em L2([a,b])2323endnote: 23uL2([a,b])ab|u|2𝑑x<. por

(u,v)2:=abuv𝑑x (5.37)

e nos contornos

u,v:=u(b)v(b)u(a)v(a). (5.38)

Com isso, definimos a formulação fraca como o seguinte problema: encontrar uV:=H01([a,b])2424endnote: 24H01([a,b]):={u=u(x);u,uL2([a,b]),u(a)=u(b)=0}. tal que

a(u,v)=l(v),vV, (5.39)

onde a forma bilinear é

a(u,v):=(u,v)2 (5.40)

e a forma linear é

l(v):=(f,v)2. (5.41)

2. Formulação de Elementos Finitos

A formulação de elementos finitos do problema (5.73)-(5.33c) é obtida a partir de (5.39) pela substituição do espaço de funções V por um espaço de dimensão finita Vh. A ideia é que VhV, bem como a solução de elementos finitos uhuV quando h0.

Para construir o espaço de elementos finitos Vh, vamos considerar elementos do tipo

P1(I):= {v=v(x);v(x)=c0+c1x, (5.42)
xI,c0,c1},

onde I é um intervalo fechado.

Sobre o domínio, assumimos uma malha uniforme

M([a,b]):={x1,x2,,xn+1} (5.43)

com h=(ba)/n, xi=a+(i1)h, i=1,2,,n+1. Nesta, definimos o espaço de funções

Vh,0 :={v=v(x);vC0[a,b],v(a)=v(b)=0, (5.44)
v|[xi,xi+1]P1([xi,xi+1]),i=1,2,,n}.

Pode-se mostrar que Vh=span{ϕi}i=1n1, com base nodal

ϕj(xi)={1,i=j,0,ij (5.45)

para i,j=2,,n e ϕ1(a)=0=ϕn(b). Podemos verificar que

ϕi(x)={(xxi1)/h,x[xi1,xi],(xi+1x)/h,x[xi,xi+1],0,noutros casos (5.46)

Com isso, definimos a formulação de elementos finitos sendo o seguinte problema: encontrar uhVh,0 tal que

a(uh,vh)=l(vh),vhVh. (5.47)

Tendo em vista que Vh=span{ϕi}i=1n+1, este é equivalente a

a(uh,ϕj)=l(ϕj),1jn1. (5.48)

3. Resolução do Problema de Elementos Finitos

O problema de elementos finitos (5.48) consiste em um sistema linear A𝒖=𝒃. De fato, a solução uhVh,0 pode ser escrita como a seguinte combinação linear

uh=j=1n1ujϕj. (5.49)

Logo, temos que

a(uh,ϕi) =(j=1n1ujϕj,ϕi)2, (5.50a)
=j=1n1uj(ϕj,ϕi)2, (5.50b)
=A𝒖, (5.50c)

onde a matriz dos coeficientes é A=[ai,j:=(ϕj,ϕi)]i,j=1n1 e o vetor das incógnitas é 𝒖=(uj)j=1n1. Doutro lado, temos

l(ϕi)=(f,ϕi)2, (5.51)

o que nos fornece o vetor dos termos constantes 𝒃=(bi:=(f,ϕi)2)i=1n1.

O cálculo dos elementos de A fornece

ai,i =(ϕi,ϕi)2 (5.52a)
=ab(ϕi)2𝑑x (5.52b)
=xi1xi+1(ϕi)2𝑑x (5.52c)
=xi1xi[(xxi1h)]2𝑑x (5.52d)
+xixi+1[(xi+1xh)]2𝑑x (5.52e)
=2h,i=1,2,,n1, (5.52f)
ai,i+1 =(ϕi+1,ϕi)2 (5.53a)
=abϕi+1ϕi𝑑x (5.53b)
=xixi+1(xi+1xh)(xxi+1h)𝑑x (5.53c)
=1h,i=1,2,,n2, (5.53d)
ai1,i =(ϕi1,ϕi)2 (5.54a)
=abϕi1ϕi𝑑x (5.54b)
=xi1xi(xixh)(xxih)𝑑x (5.54c)
=1h,i=2,,n1, (5.54d)

observando que, noutros casos, ai,j=0.

Um cálculo aproximado dos elementos de 𝒃 fornece2525endnote: 25Por simplicidade, usando a regra do ponto médio para aproximar as integrais.

bi =(f,ϕi)2 (5.55a)
=abf(x)ϕi(x)𝑑x (5.55b)
=xi1xif(x)(xxi1)h𝑑x (5.55c)
+xixi+1f(x)(xi+1x)h𝑑x (5.55d)
h2f(xi1/2)+h2f(xi+1/2). (5.55e)
Exemplo 5.2.1.

Consideramos o seguinte PVC

u′′=π2sen(πx), 0<x<1, (5.56)
u(0)=0, (5.57)
u(1)=0. (5.58)

A solução analítica deste problema é u(x)=sen(πx).

Refer to caption
Figura 5.2: Resultado referente ao Exemplo 5.2.1.

Resolvendo este sistema com h=101 obtemos a solução numérica apresentada na Figura 5.2.

Código 17: pvc_mef.py
1import numpy as np
2
3# malha
4n = 10
5h = 1./n
6xx = np.linspace(0., 1., n+1)
7
8# fonte
9def f(x):
10    return np.pi**2*np.sin(np.pi*x)
11
12# prob discreto
13A = np.zeros((n-1, n-1))
14b = np.empty(n-1)
15
16# c.c. x = 0.
17A[0,0] = 2./h
18A[0,1] = -1./h
19b[0] = h/2 * (f(xx[1]-0.5*h) + f(xx[1]+0.5*h))
20
21# pts internos
22for i in range(1,n-2):
23    A[i,i-1] = -1./h
24    A[i,i] = 2./h
25    A[i,i+1] = -1./h
26    b[i] = h/2 * (f(xx[i+1]-0.5*h) + f(xx[i+1]+0.5*h))
27
28# c.c. x = 1.
29A[n-2,n-3] = -1./h
30A[n-2,n-2] = 2./h
31b[n-2] = h/2 * (f(xx[n-1]-0.5*h) + f(xx[n-1]+0.5*h))
32
33# resol
34u = npla.solve(A, b)
35## c.c. (dirichlet)
36u = np.concatenate(([0.],u,[0.]))

5.2.1 Exercícios

E. 5.2.1.

Considere o PVC

u′′=π2cos(πx), 0<x<1, (5.59)
u(0)=1, (5.60)
u(1)=1. (5.61)

A solução analítica deste problema é u(x)=cos(πx). Use o MEF para computar aproximações numéricas 𝒖~h com tamanhos de malha h=101,102,103,104 e verifique o erro absoluto εabs:=𝒖~h𝒖.

E. 5.2.2.

Considere o PVC

u′′=2,1<x<1, (5.62)
u(1)=0, (5.63)
u(1)=0. (5.64)

A solução analítica deste problema é u(x)=1x2. Use o MEF com n=20 subintervalos na malha e verifique o erro absoluto εabs:=𝒖~h𝒖. Por que o erro está próximo precisão de máquina? Justifique sua resposta.

E. 5.2.3.

Considere o seguinte PVC

u′′+u=f(x),1<x<1, (5.65a)
u(1)=0, (5.65b)
u(1)=0, (5.65c)

onde

f(x)={1,x00,x>0 (5.66)

Use uma aproximação adequada pelo MEF para obter o valor aproximado de u(0) com precisão de 2 dígitos significativos.

Resposta.

7,2e1

E. 5.2.4.

Considere o PVC

u′′=π2cos(πx), 0<x<1, (5.67)
u(0)=1, (5.68)
u(1)=0. (5.69)

A solução analítica deste problema é u(x)=cos(πx). Aplique o MEF para computar uma aproximação numérica com erro absoluto de no máximo 103 na norma L2.


Envie seu comentário

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!