Upload
internet
View
106
Download
1
Embed Size (px)
Citation preview
Trabalho Computacional Transferência de Energia e Massa
Guillaume Riflet,
Dúvidas: [email protected] Ext:3430
Página: https://fenix.ist.utl.pt/homepage/ist146730
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
Processing /Factory/Engine
Output
• Processing variables 1• Algorithms
• Variables initialization 2• Algorithm selection• User given input / User-Interface (UI)
• Product(s) 3• Tables• Graphics
Single or continuous input?
Single or continuous output?
Identificação dos Algoritmos
Processing /Factory/Engine
• Processing variables 1• Algorithms
ijiii
ti
tti kC
x
CCC
t
CC
211 2
ti
tti
tti
tti CtkC
x
tC
x
tC
x
t
121 12212
ti
ti
ti
tti C
x
tCtk
x
tC
x
tC 12212
21
enunciado
explicito
implicito
Algoritmos e Variáveis - esquema numérico explícito no tempo
ti
ti
ti
tti C
x
tCtk
x
tC
x
tC 12212
21
explicito 2x
tDif
tkSk Processing /Factory/Engine
tL
tttt Cx
tCtk
x
tC
x
tC
212221 21
tN
tN
tU
ttN C
x
tCtk
x
tC
x
tC 1222
21
i = 2, ..., N-1
i = 1 Boundary
i = N Boundary
Algoritmos - esquema numérico implícito no tempo
ti
tti
tti
tti CtkC
x
tC
x
tC
x
t
121 12212
implícito
A B CTi
Call Thomas(A,B,C,Ti)
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.
Processing /Factory/Engine
i = 2, ..., N-1
i = 1 Boundary
i = N Boundary
tL
ttttt Cx
tCtkC
x
tC
x
t
211222
121
tU
tN
ttN
ttN C
x
tCtkC
x
tC
x
t
2122
121
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
• 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.
Os valores em algumas variáveis têm que ser deduzidos a partir dos dados de entrada do utilizador e do enunciado
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
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.
Output
Identificação dos Algoritmos de Advecção
Processing /Factory/Engine
• Processing variables 1• Algorithms
x
UCUC
t
CC iiti
tti 2/12/1
ti
ti
iti
itti CC
x
tUC
x
tUC 1
2/11
2/1 01
enunciado
Upwind U>0, Exp
Faces centradas, Exp
ti
iti
iiti
itti C
x
tUC
x
tU
x
tUC
x
tUC 1
2/12/12/11
2/1
2221
2
Identificação dos Algoritmos de Advecção
Processing /Factory/Engine
x
UCUC
t
CC iiti
tti 2/12/1
ti
tti
tti
itti
i CCCx
tUC
x
tU
1
2/11
2/1 01
enunciado
Upwind U>0, Imp
Faces centradas, Imp
ti
tti
itti
iitti
i CCx
tUC
x
tU
x
tUC
x
tU
1
2/12/12/11
2/1
2221
2
0,
Ux
tUCr
Refactoring dos Algoritmos de Advecção e de Difusão
Processing /Factory/Engine
x
UCUC
t
CC iiti
tti 2/12/1
ti
tti
tti
itti
i CCCx
tUC
x
tU
1
2/11
2/1 01
enunciado
Upwind U>0, Imp
Faces centradas, Imp
ti
tti
itti
iitti
i CCx
tUC
x
tU
x
tUC
x
tU
1
2/12/12/11
2/1
2221
2
0,
Ux
tUCr
Novas variáveis de processamento para advecção
Processing /Factory/Engine
• Cr – Número de Courant
Os valores em algumas variáveis têm que ser deduzidos a partir dos dados de entrada do utilizador e do enunciado
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
Processing /Factory/Engine
Output
• Processing variables 1• Algorithms
• Variables initialization 2• Algorithm selection• User given input / User-Interface (UI)
• Product(s) 3• Tables• Graphics
Single or continuous input?
Single or continuous output?
Input – interface com o utilizador. Variáveis
Input• 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
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)
Input – interface com o utilizador. Subrotinas e Userforms
Input1. Input - Tipo que engloba as variáveis de entrada
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.
3. InterfaceInPr - Subrotina de interface que recebe um tipo de entrada e um tipo de propriedade como argumentos. A subrotina deve inicializar os campos do tipo propriedade a partir dos campos do tipo entrada.
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)
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