Vous êtes sur la page 1sur 11

PONTIFÍCIA UNIVERSIDADE CATÓLICA – PUC/RIO

DEPARTAMENTO DE ENGENHARIA MECÂNICA – PÓS-GRADUAÇÃO

ELEMENTOS FINITOS EM FLUIDOS

Nome: Edgar Hernan Cando Narvaez

PROJETO N° 01

 d 2u du
 2  Pe dx
 d x

u (1)  0
 du (0)
  u (0)  1

 dx

Escreva um programa para obter a solução do problema com:

(a) Malha de 10 elementos lineares uniformemente espaçados com :

Pe = 5

Pe = 10

Pe = 30

(b) Malha de 5 elementos quadráticos uniformemente espaçados com :

Pe = 5

Pe = 10

Pe = 30

(c) Malha de 10 elementos lineares concentrados em x = 1, com :

Pe = 30.

Utilize a seguinte função para gerar a malha concentrada:

a
 ( NNODES  i) 
xi  1   
 ( NNODES  1) 

a → parâmetro que regula a concentração da malha.


1) O programa para obter a solução do problema com variáveis (pe,Nele,a,t)

Onde:

pe: uma constante

Nele: Numero de elementos em que se encontra divido o dominio

t: ‘linear’ a função base linear

‘quadrática’ a função base quadrática

%..........O programa global .....

pe=input(‘ingresse o valor de Pe’)


Nele=input(‘ingresse o numero de elementos’)
tp=input('ingresse o tipo de função lineal o quadratico')
a=input(‘ingresse o valor da concentração’)

switch tp
case 'linear'
t=1
case 'quadratico'
t=2
end
[xi,h]=malha(Nele,a,t)
A=zeros(t*Nele+1,t*Nele+1);
NID=Nglobal(t,Nele)
for iele=1:Nele
he=h(iele)
Al=mlocal(pe,he,t)
for ilnode=1:t+1
ignode=NID(ilnode,iele)
for jlnode=1:t+1
jgnode=NID(jlnode,iele)
A(ignode,jgnode)=A(ignode,jgnode)+Al(ilnode,jlnode)
end
end
end

%condições de contorno

a1=1+A(1,1)
A(1,1)=a1
for s=1:t*Nele+1
A(t*Nele+1,s)=0
end
A(t*Nele+1,t*Nele+1)=1
b=zeros(t*Nele+1,1)
b(1,:)=1

%solução aprox

Ur=inv(A)*b

%solução exata

Ue=(exp(pe*xi)-exp(pe))./(1-pe-exp(pe));
% calculo do erro

U=Ur'
erro=U-Ue

% Resultados

disp(' [xi Sol.Aprox Sol.exata Erro absoluto]');


Resultados=[xi' Ur Ue' erro']
plot(xi,Ur,'-*r',xi,Ue,'--b')
title('titulo')
xlabel('x')
ylabel('U(x)')
legend('aprox', 'exata','Location','best')
……………………………………………………………………………………………………

No programa global tem algumas function q ajudam os cálculos

.......................................................................................................................................

% A rotina q calcula a malha

function [xi,h]=malha(Nele,a,t)
NID=Nglobal(t,Nele)
NN=t*Nele+1
for i=1:NN
xi(i)=1-((NN-i)/(NN-1))^a;
end

for i=1:Nele
h(i)=xi(NID(2,i))-xi(NID(1,i));
end
……………………………………………………………………………………………………

% A rotina q faz a comparação entre a numeração local e global para fazer a matriz Global.

function NID=Nglobal(t,Nele)
switch t
case 1
for j=1:Nele
for i=1:2
NID(i,j)=i+j-1
end
end
case 2
for j=1:Nele
NID(1,j)=2*j-1;
NID(2,j)=2*j+1;
NID(3,j)=2*j;
end
end
NID
……………………………………………………………………………………………………

% Depois é preciso calcular o valor de he para cada elemento e construir as matriz local. (os
integrais são resolvidos utilizando quadradura gaussiana.

function Al=mlocal(pe,he,t)
wgp=[0.555 0.888 0.555]
igp=[-0.77459 0 0.77459]
derif(1)=-0.5
derif(2)=0.5

switch t
case 1
Al=zeros(2,2)
for i=1:2
switch i
case 1
xg=[(1-igp(1))/2 (1-igp(2))/2 (1-igp(3))/2]
case 2
xg=[(1+igp(1))/2 (1+igp(2))/2 (1+igp(3))/2]
end
for j=1:2
Al(i,j)=Al(i,j)+2/he*(derif(i)*derif(j))*[1 1
1]*wgp'+(pe*xg*derif(j)*wgp')
end
end
case 2
Al=zeros(3,3);
NGP=length(igp);
for xgp=1:NGP
XI=igp(xgp);
[PHI,dPHI]=evaluation(XI)
for ilnode=1:3
for jlnode=1:3

Al(ilnode,jlnode)=Al(ilnode,jlnode)+wgp(xgp)*(2/he*dPHI(ilnode)*dPHI(j
lnode)+pe*PHI(ilnode)*dPHI(jlnode))
end

end
end
end

% No mismo (for) faze-se o ensamble da matriz global, mas para o calculo da matriz local foi
feita uma function q permita evaluar as funções base

function [PHI,dPHI]=evaluation(XI)
PHI(1)=XI*(XI-1)/2
PHI(2)=XI*(XI+1)/2
PHI(3)=-(XI+1)*(XI-1)
dPHI(1)=XI-0.5
dPHI(2)=XI+0.5
dPHI(3)=-2*XI
..........................................................................................................................................................
(a) Malha de 10 elementos lineares uniformemente espaçados com :

Pe=5 , t=’linear’, Nele=10, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 0.9705 0.9672 0.0033

0.1000 0.9666 0.9629 0.0036

0.2000 0.9600 0.9559 0.0041

0.3000 0.9491 0.9444 0.0047

0.4000 0.9309 0.9253 0.0056

0.5000 0.9005 0.8938 0.0067

0.6000 0.8499 0.8420 0.0079

0.7000 0.7655 0.7565 0.0090

0.8000 0.6249 0.6155 0.0094

0.9000 0.3906 0.3831 0.0074

1.0000 0 0 0

sol
1

0.9

0.8

0.7

0.6
U(x)

0.5
aprox
0.4 exata

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Pe=10 , t=’linear’, Nele=10, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 0.9998 0.9995 0.0003

0.1000 0.9998 0.9995 0.0003

0.2000 0.9997 0.9993 0.0004

0.3000 0.9994 0.9987 0.0007

0.4000 0.9985 0.9971 0.0014

0.5000 0.9957 0.9929 0.0029

0.6000 0.9875 0.9813 0.0062

0.7000 0.9628 0.9498 0.0130

0.8000 0.8888 0.8643 0.0244

0.9000 0.6666 0.6319 0.0347

1.0000 0 0 0

sol
1

0.9

0.8

0.7

0.6 aprox
exata
U(x)

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Pe=30 , t=’linear’, Nele=10, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 1.0000 1.0000 -0.0000

0.1000 1.0000 1.0000 -0.0000

0.2000 1.0000 1.0000 -0.0000

0.3000 1.0000 1.0000 0.0000

0.4000 0.9999 1.0000 -0.0001

0.5000 1.0003 1.0000 0.0003

0.6000 0.9984 1.0000 -0.0016

0.7000 1.0080 0.9999 0.0081

0.8000 0.9600 0.9975 -0.0375

0.9000 1.2000 0.9502 0.2498

1.0000 0 0 0

sol
1.4

1.2

0.8
U(x)

0.6 aprox
exata

0.4

0.2

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
(b) Malha de 5 elementos quadráticos uniformemente espaçados com :

Pe=5 , t=’quadratico’, Nele=5, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 0.9670 0.9672 -0.0002

0.1000 0.9627 0.9629 -0.0002

0.2000 0.9557 0.9559 -0.0003

0.3000 0.9441 0.9444 -0.0002

0.4000 0.9249 0.9253 -0.0004

0.5000 0.8936 0.8938 -0.0002

0.6000 0.8414 0.8420 -0.0005

0.7000 0.7565 0.7565 0.0000

0.8000 0.6149 0.6155 -0.0006

0.9000 0.3843 0.3831 0.0012

1.0000 0 0 0

sol
1

0.9

0.8

0.7

0.6
U(x)

0.5
aprox
0.4 exata

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Pe=10 , t=’quadratico’, Nele=5, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 0.9994 0.9995 -0.0001

0.1000 0.9993 0.9995 -0.0002

0.2000 0.9990 0.9993 -0.0002

0.3000 0.9984 0.9987 -0.0003

0.4000 0.9966 0.9971 -0.0006

0.5000 0.9922 0.9929 -0.0007

0.6000 0.9791 0.9813 -0.0022

0.7000 0.9485 0.9498 -0.0014

0.8000 0.8567 0.8643 -0.0076

0.9000 0.6425 0.6319 0.0107

1.0000 0 0 0

sol
1

0.9

0.8

0.7

0.6 aprox
exata
U(x)

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Pe=30 , t=’quadratico’, Nele=5, a=1

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 0.9982 1.0000 -0.0018

0.1000 0.9983 1.0000 -0.0017

0.2000 0.9979 1.0000 -0.0021

0.3000 0.9985 1.0000 -0.0015

0.4000 0.9954 1.0000 -0.0046

0.5000 0.9997 1.0000 -0.0003

0.6000 0.9779 1.0000 -0.0221

0.7000 1.0085 0.9999 0.0086

0.8000 0.8557 0.9975 -0.1419

0.9000 1.0696 0.9502 0.1194

1.0000 0 0 0

sol
1.4

1.2

0.8
U(x)

0.6 aprox
exata

0.4

0.2

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Pe=30 , t=’linear’, Nele=10, a=3

[xi Sol.Aprox Sol.exata Erro absoluto]

Resultados =

0 1.0011 1.0000 0.0011

0.2710 1.0010 1.0000 0.0010

0.4880 1.0012 1.0000 0.0012

0.6570 1.0008 1.0000 0.0008

0.7840 1.0019 0.9985 0.0035

0.8750 0.9955 0.9765 0.0190

0.9360 0.8758 0.8534 0.0224

0.9730 0.5633 0.5551 0.0081

0.9920 0.2142 0.2134 0.0008

0.9990 0.0296 0.0296 0.0000

1.0000 0 0 0

sol
1.4

1.2

0.8
U(x)

0.6 aprox
exata

0.4

0.2

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

Vous aimerez peut-être aussi