Trabalho Computacional
Transferência de Energia e Massa
Dúvidas: [email protected]
Ext:3430
Página: https://fenix.ist.utl.pt/homepage/ist146730
Guillaume Riflet,
Metodologia de resolução




Ler o enunciado do problema
Conceber uma solução computacional
Partir o problema e a solução em problemas
mais pequenos (fazer um diagrama)
Resolver as peças do problema, uma de
cada vez
Diagrama por blocos genérico
dum problema computacional
Input
Processing /
Factory/
Engine
Output
1. Identificar o processamento /
escrever o(s) algoritmo(s)
2. Identificar as variáveis necessárias
para o processamento
3. Pensar na inicialização das variáveis
e na selecção dos algoritmos
4. Pensar no input fornecido pelo
utilizador para a resolução do
problema e pensar na interface com
o utilizador
5. Pensar no output da solução, na sua
apresentação (tabelas e gráficos)
Diagrama por blocos genérico
dum problema computacional
Input
Single or continuous
input?
Processing /
Factory/
Engine
Single or continuous
output?
Output
•
•
•
Variables initialization
2
Algorithm selection
User given input / User-Interface (UI)
•
•
Processing variables
Algorithms
1
•
Product(s)
• Tables
• Graphics
3
Identificação dos Algoritmos
Processing /
Factory/
Engine
•
•
Processing variables
Algorithms
 Ci 1  2Ci  Ci 1 
Cit  t  Cit
  kCij
  
2
t
x


t  t
i
C
1
enunciado
t
 t  t 
 t  t  t
  2 Ci 1  1  2 2  kt Ci   2 Ci 1
x
 x 


 x 
t  t  t  t  t  t
 t  t  t 
t
  2 Ci 1  1  2 2 Ci    2 Ci 1  1  kt Ci
x 
 x 

 x 
explicito
implicito
Algoritmos e Variáveis - esquema
numérico explícito no tempo
t
Processing /
Factory/
Engine
i = 2, ..., N-1
i = 1  Boundary
i = N  Boundary
explicito
Dif 
x
2
Sk  kt
t
 t  t 
 t  t  t
C
  2 Ci 1  1  2 2  kt Ci   2 Ci 1
x
 x 


 x 
t
 t  t 
 t  t  t
t  t
C1   2 C2  1  2 2  kt C1   2 C L
x
 x 


 x 
t
 t  t 
 t  t  t
t  t
C N   2 CU  1  2 2  kt C N   2 C N 1
x
 x 


 x 
t  t
i
Algoritmos - esquema numérico
implícito no tempo
Processing /
Factory/
Engine
implícito
t  t  t  t  t  t
 t  t  t 
t
  2 Ci 1  1  2 2 Ci    2 Ci 1  1  kt Ci
x 
 x 

 x 
Ti
A
i = 2, ..., N-1
B
i = 1  Boundary
i = N  Boundary
C
t  t  t
 t  t  t 
 t  t
t
  2 C2  1  2 2 C1  1  kt C1   2 C L
x 
 x 

 x 
t  t  t  t  t  t

 t  t
t


1

2
C


C

1

k

t
C



 2 CU
N
2  N
2  N 1
x 

 x 
 x 
Sistema matricial (n equações a n incógnitas) e tridiagonal. Resolução por eliminação de
Gauss ou algoritmo semelhante. Neste caso usa-se o eficiente algoritmo de Thomas.
Call Thomas(A,B,C,Ti)
Algoritmos – ciclos no código
Processing /
Factory/
Engine
For l = 1 to T
...
For i = 1 to N
...
Next
...
Next
Ciclo no tempo
Ciclo no espaço
Variáveis de processamento
Processing /
Factory/
Engine
Os valores em algumas
variáveis têm que ser
deduzidos a partir dos
dados de entrada do
utilizador e do enunciado
• N – tamanho do array da barra ou do canal
• i – índice de célula do canal indo de 1 até N
• Ctdt(1 to N) - array da Concentração ou
Temperatura em t + dt
• Ct(1 to N) – array Concentração ou Temperatura em
t
• t – índice de tempo indo de 1 até L
• T – número total de iterações no tempo
• Dif – coeficiente de difusão
• Sk – coeficiente de decaimento
• A(1 to N), B(1 to N), C(1 to N) e Ti(1 to N) – arrays
de entrada do algoritmo de Thomas. Resultado
escrito em Ti.
• CL e CU – Concentração nas fronteiras abertas do
canal.
Exercício I
Processing /
Factory/
Engine
Recorrendo às variáveis acima definidas,
implemente um programa em VBA que
resolva o método explícito da equação da
difusão duma propriedade num fluido numa
barra unidimensional utilizando arrays.
Inicialize todas as variáveis no código.
Resolva até à aula seguinte.
TPC – Tente alterar o codigo em i = 1 e em i = N de
forma a selar as fronteiras. Se não conseguir,
simplesmente mude o valor nas condições de
fronteira, corra o programa e comente os resultados.
Exercício I – Solução tpc
TPC – Tente alterar o codigo em i = 1 e em i = N de forma a selar as
fronteiras. Se não conseguir, simplesmente mude o valor nas
condições de fronteira, corra o programa e comente os resultados.
A melhor forma de selar a fronteira aberta ao transporte de
propriedades da água é de eliminar o termo de fluxo difusivo da
equação na face com a fronteira aberta. Em particular, apenas para
a equação da difusão, também se pode impôr um gradiente nulo na
fronteira aberta: CL = C(1) e CU = C(N). Essa é outra forma de
preservar a massa dentro do domínio. A forma adequada de
verificação que a massa é preservada consiste em anular o termo de
decaimento e em integrar a massa total da propriedade no canal. A
integração tem que se manter constante ao longo do tempo.
Exercício II
Processing /
Factory/
Engine
Output
Agora resolva utilizando o método implícito.
Use a subrotina fornecida com o algoritmo
de Thomas. Adicionalmente, implemente
um método de cálculo da massa da
propriedade no canal e faça outputs
temporários para uma tabela de excel.
TPC – Outputs para tabela e fazer graficos
(manualmente) para comparar o metodo
explicito com o metodo implicito.
Identificação dos Algoritmos de
Advecção
Processing /
Factory/
Engine
•
•
Processing variables
Algorithms
Cit  t  Cit  UC i 1/ 2  UC i 1/ 2 

  

t

x


1
enunciado
 U i 1/ 2 t  t  U i 1/ 2 t  t
t
Upwind U>0, Exp
C

Ci 1  1 
Ci  0Ci 1
x 
 x 

 U t 
 U t U t 
 U t 
Cit  t   i 1/ 2 Cit1  1  i 1/ 2  i 1/ 2 Cit    i 1/ 2 Cit1
2x
2x 
2x 
 2x 


t  t
i
Faces centradas, Exp
Identificação dos Algoritmos de
Advecção
Processing /
Factory/
Engine
Ut
Cr
,U  0
x
Cit  t  Cit  UC i 1/ 2  UC i 1/ 2 

  

t

x


enunciado
 U i 1/ 2 t  t  t  U i 1/ 2 t  t  t
t  t
t

Ci 1  1 
Ci  0Ci 1  Ci Upwind U>0, Imp
x 
 x 

 U i 1/ 2 t  t  t  U i 1/ 2 t U i 1/ 2 t  t  t  U i 1/ 2 t  t  t
t


Ci 1  1 
Ci   
Ci 1  Ci
2x
2x 
2x 
 2x 


Faces centradas, Imp
Refactoring dos Algoritmos de
Advecção e de Difusão
Processing /
Factory/
Engine
Ut
Cr
,U  0
x
Cit  t  Cit  UC i 1/ 2  UC i 1/ 2 

  

t

x


enunciado
 U i 1/ 2 t  t  t  U i 1/ 2 t  t  t
t  t
t

Ci 1  1 
Ci  0Ci 1  Ci Upwind U>0, Imp
x 
 x 

 U i 1/ 2 t  t  t  U i 1/ 2 t U i 1/ 2 t  t  t  U i 1/ 2 t  t  t
t


Ci 1  1 
Ci   
Ci 1  Ci
2x
2x 
2x 
 2x 


Faces centradas, Imp
Novas variáveis de
processamento para advecção
Processing /
Factory/
Engine
Os valores em algumas
variáveis têm que ser
deduzidos a partir dos
dados de entrada do
utilizador e do enunciado
• Cr – Número de Courant
Exercício III
Processing /
Factory/
Engine
Adicione ao exercício anterior uma
advecção com o método Upwind para U
constante no canal e positivo. E se U for
negativo? Qual o comportamento do
método?
Exercício IIIb
Processing /
Factory/
Engine
Repense o esquema Upwind para que U
possa ser positivo e negativo. Se não
conseguir, resolva dois esquemas, um para
U positivo e outro para U negativo, e utilize
um “if”.
Diagrama por blocos genérico
dum problema computacional
Input
Processing /
Factory/
Engine
Output
1. Identificar o processamento /
escrever o(s) algoritmo(s)
2. Identificar as variáveis necessárias
para o processamento
3. Pensar na inicialização das variáveis
e na selecção dos algoritmos
4. Pensar no input fornecido pelo
utilizador para a resolução do
problema e pensar na interface
com o utilizador
5. Pensar no output da solução, na
sua apresentação (tabelas e
gráficos)
Diagrama por blocos genérico
dum problema computacional
Input
Single or continuous
input?
Processing /
Factory/
Engine
Single or continuous
output?
Output
•
•
•
Variables initialization
2
Algorithm selection
User given input / User-Interface (UI)
•
•
Processing variables
Algorithms
1
•
Product(s)
• Tables
• Graphics
3
Input – interface com o utilizador.
Variáveis
Input
Pensar em dar um feedback
ao utilizador indicando se as
parametrizações
seleccionadas são
consistentes (ex: Cr e Dif não
violam critérios de
estabilidade)
•
•
•
•
•
•
•
•
•
•
•
•
•
•
L - Comprimento do canal (m)
Dx - Resolução espacial (m)
Tp - Tempo de corrida da simulação (s)
Dt - Resolução temporal (s)
PI - Posição inicial do traçador (m)
CI - Concentração inicial do traçador (kg/m^3)
K - Coeficiente de difusividade do traçador (m^2/s)
CL, CU - Valor imposto nas fronteiras a montante e a
jusante do escoamento.
U - Velocidade média uniforme do escoamento (m/s)
isDir - Tipo de condição de fronteira (Dirichelet/Neumann)
isOpen - Tipo de fronteira (aberta/fechada)
isExp - Tipo de discretização temporal (explícito/implícito)
isUp - Tipo de discretização para advecção
(upwind/diferenças centrais)
Noutputs - Frequência de escrita dos resultados OU
número total de instantes a escrever na tabela de excel
Input – interface com o utilizador.
Subrotinas e Userforms
1. Input - Tipo que engloba as variáveis de entrada
Input
fornecidas pelo utilizador.
2. ReadInput - Subrotina que lê os dados fornecidos pelo
utilizador e que os guarda numa variável do tipo de
entrada. Pode ser programado usando uma userform,
mas também pode ser programado lendo directamente
valores duma tabela de excel.
Pensar em dar um feedback
3. InterfaceInPr - Subrotina de interface que recebe um tipo
ao utilizador indicando se as
de entrada e um tipo de propriedade como argumentos. A
parametrizações
subrotina deve inicializar os campos do tipo propriedade
seleccionadas são
a partir dos campos do tipo entrada.
consistentes (ex: Cr e Dif não
violam critérios de
estabilidade)
Output – Resultados.
1. writeOutput - Subrotina que escreve a
concentração do traçador no canal numa tabela.
(disponível na página do projecto de tem-vba).
2. Plot - Subrotina que desenha uma curva da
concentração em função da posição no canal para
cada instante escrito na tabela de excel.
(disponível na página do projecto de tem-vba).
3. Clear - Subrotina que apaga a tabela de excel e
todos os gráficos de excel. (disponível na página
do projecto de tem-vba).
Output
Download

Aula 5 - slides