| | | | |

2.3 Projeção

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

Em revisão

A projeção L2 no espaço Vh de uma dada uma função uL2(Ω) é denotada por PhuVh e definida por

Ω(uPhu)v𝑑x=0,vVh. (2.21)

Analogamente a projeção em uma dimensão (consulte Subseção 1.1.2), a projeção é dada por

Phu=j=0np1ξjφj, (2.22)

com 𝝃=(ξj)j=0np1 satisfazendo o sistema linear

M𝝃=𝒃, (2.23)

onde M=[mi,j]i,j=0np1 é a matriz de massa com

mi,j=Ωφiφj𝑑x (2.24)

e 𝒃=(b1,b2,,bnp1) é o vetor de carga com

bi=Ωuφi𝑑x. (2.25)

Também, vale o resultado análogo da melhor aproximação (consulte Teorema 1.1.1), i.e.

uPhuL2(Ω)uvL2(Ω),vVh. (2.26)

E, portanto, também temos a estimativa análoga para o erro de projeção (condulte Teorema 1.1.2)

uPhuL2(Ω)2CK𝒦hK4D2uL2(K)2. (2.27)

Tomando o tamanho global da malha, temos

fPhfL2(Ω)Ch2D2fL2(K). (2.28)
Exemplo 2.3.1.

Consideramos a função u(x0,x1)=sen(πx0)cos(πx1) definida no domínio D=[0,1]×[0,1]. código computa a projeção de u no espaço Vh sobre uma malha triangular uniforme.

1from mpi4py import MPI
2from dolfinx import mesh
3
4# malha
5domain = mesh.create_unit_square(MPI.COMM_WORLD, 16, 16)
6
7from dolfinx import fem
8
9# espaço de elementos finitos
10Vh = fem.functionspace(domain, ("P",1))
11
12# função do espaço V
13uh = fem.Function(Vh)
14
15# projeção
16import ufl
17from dolfinx.fem.petsc import LinearProblem
18def uex(x, mod=ufl):
19    return mod.sin(mod.pi*x[0])*mod.sin(mod.pi*x[1])
20
21x = ufl.SpatialCoordinate(domain)
22u = ufl.TrialFunction(Vh)
23v = ufl.TestFunction(Vh)
24a = ufl.dot(u,v)*ufl.dx
25L = uex(x)*v*ufl.dx
26problem = LinearProblem(a, L, bcs=[])
27Phu = problem.solve()
28
29# saída (paraview)
30from dolfinx import io
31from pathlib import Path
32results_folder = Path("results")
33results_folder.mkdir(exist_ok=True, parents=True)
34filename = results_folder / "phu"
35Phu.name = "Phu"
36with io.VTXWriter(domain.comm, filename.with_suffix(".bp"), [Phu]) as vtx:
37    vtx.write(0.0)
38with io.XDMFFile(domain.comm, filename.with_suffix(".xdmf"), "w") as xdmf:
39    xdmf.write_mesh(domain)
40    xdmf.write_function(Phu, 0.0)

2.3.1 Exercícios

Em revisão

E. 2.3.1.

Verifique computacionalmente a estimativa (2.28) no caso da função f(x0,x1)=sen(πx0)cos(πx1) projetada sobre uma malha triangular uniforme sobre o domínio D=[0,1]×[0,1].


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!