Solução numérica de EDPs parabólicas usando Hopscotch com refinamento não-uniforme
1. Solução Numérica de Equações Diferenciais Parciais Parabólicas
usando o Método Hopscotch com Refinamento Não-Uniforme
Mauricio J. M. Guedes a,b
, Diogo T. Robaina a
,
Lúcia M. A. Drummond a
, Mauricio Kischinhevsky a
, Otton T.S. Filho a
a: Instituto de Computação, UFF, Rua Passo da Pátria, 156 - Bloco E - 3° andar, São Domingos, Niterói - RJ, CEP 24210-240.
b: CASNAV, Marinha do Brasil, Pça. Br. de Ladário, s/no
, Ilha das Cobras, ed. 8 - 3º andar, Centro, Rio de Janeiro-RJ, CEP 20091-000.
E-mail: mauricio532@hotmail.com, professor_robaina@yahoo.com.br, lucia@ic.uff.br, kisch@ic.uff.br, otton@ic.uff.br
1 - INTRODUÇÃO
Equações Diferenciais Parciais (EDPs) são
utilizadas para estudar uma vasta gama de fenômenos
da natureza, nas mais diversas áreas de aplicação. Para
a resolução computacional, é necessário discretizar o
domínio, com a criação de uma malha de pontos. Em
situações reais, a malha a ser utilizada é bastante
refinada, com possivelmente milhões de pontos e,
além disso, para estudar efeitos de longo prazo as
EDPs devem ser integradas sobre longos intervalos de
tempo. Tais modelos computacionais requerem uma
quantidade de memória e de CPU que podem estar
além da capacidade até mesmo dos mais modernos
supercomputadores. Assim, o processamento paralelo
aparece como uma alternativa atraente.
Este artigo apresenta um modelo de resolução
da EDP evolutiva de difusão pura empregando
processamento paralelo. Para a resolução numérica foi
escolhido o método Hopscotch, por ser um dos
métodos mais rápidos de resolução de uma EDP e por
ser adequado a paralelização. O domínio é dividido em
subdomínios, e cada subdomínio é associado a um
processador. O modelo apresentado aqui permite o
refinamento seletivo dos subdomínios para tratar de
descontinuidades na fronteira. Essa característica se
torna importante quando o ambiente é compartilhado,
pois permite refinar apenas os subdomínios
necessários, evitando sobrecarregar os outros
processadores envolvidos na resolução.
2 – ASPECTOS TEÓRICOS
2.1 – Equações Diferenciais Parciais (EDPs)
A seguir são apresentadas as condições de
contorno que são comumente encontradas na solução
de equações diferenciais parciais (ref. [1]).
EDPs podem ser classificadas em três
categorias básicas: Elípticas (associadas a problemas
estacionários, em estado de equilíbrio), Parabólicas e
Hiperbólicas, evolutivas com características difusiva
ou convectiva. O problema a ser tratado neste trabalho
é evolutivo, considera apenas o fenômeno de difusão
como fator de modificação do estado do sistema,
estando associado à denominação EDP parabólica.
Os problemas evolutivos envolvem a variação
temporal das grandezas físicas de interesse. A partir
dos valores iniciais dessas grandezas em um certo
tempo t0, calcula-se, pela solução numérica da EDP,
seus novos valores em sucessivos intervalos de tempo
∆t, até alcançarmos o instante final tf.
Os problemas transientes necessitam de
valores para a variável dependente em t = 0 (condições
iniciais), além de condições de fronteira para t > 0.
Podemos escrever, esquematicamente:
Valor
inicial
de φ
+
Variação espacial
e temporal de φ,
dada pela equação
diferencial
+
condições
de
fronteira
=
Novo
valor
de φ
Figura 1 – Equação diferencial
2.2 – Discretização
Para tratar computacionalmente um problema
diferencial é necessário expressar de forma adequada a
região (domínio) onde o problema será resolvido.
Como usualmente não é possível obter soluções
numéricas sobre o domínio, uma região contínua,
devido à infinidade de pontos envolvida, inicialmente
o domínio é discretizado, isto é, substituído por um
conjunto finito de pontos representativos. Somente
nesses pontos é que as soluções serão obtidas.
Figura 2 – Discretização do domínio
Intuitivamente, percebe-se que, quanto maior
for o número de pontos da discretização, mais fiel será
o resultado numérico obtido. Obviamente, maior
também será o custo computacional. A necessidade de
se resolverem problemas com alta precisão, em tempo
hábil (como previsão do tempo), tem levado a uma
constante busca tanto por técnicas de solução mais
eficientes, como por computadores com maior
desempenho. A utilização de técnicas de programação
paralela é um excelente meio para o cálculo de
problemas complexos.
2.3 – Condições de Contorno
a) Condições de contorno de Dirichlet: especifica o
valor da função no contorno.
b) Condições de contorno de Neumann: especifica
uma derivada normal à função no domínio (i.é., um
fluxo).
c) Condições de contorno de Cauchy: especifica uma
combinação dos dois tipos anteriores.
Este trabalho usa condições de contorno de
Dirichlet, sem que haja dificuldade para o emprego das
outras condições de contorno.
2.4 – Equações de Diferenças Finitas
Os métodos de diferenças finitas consistem
em substituir as derivadas parciais presentes na
equação diferencial por aproximações por diferenças
finitas. As ref. [2], [3] e [4] dão mais detalhes sobre
esses métodos. No método explícito, as equações são
independentes, permitindo, portanto, solução por
cômputo direto. É rápido, mas exibe problemas de
estabilidade. Em métodos implícitos, têm-se condições
de estabilidade mais favoráveis; no entanto, as
1
2. equações resultantes são acopladas, o que exige a
resolução de um sistema de equações a cada passo de
integração no tempo, o que pode tornar os métodos
lentos e de difícil paralelização.
Este trabalho usa a equação parabólica a
seguir para modelar a difusão de calor em uma placa
(α é a constante de difusividade térmica):
∂
∂
+
∂
∂
=
∂
∂
2
2
2
2
yxt
ϕϕ
α
ϕ
Discretizando a derivada no tempo em 1a
ordem em ∆t e as derivadas espaciais em 2a
ordem em
∆x e ∆y, obtém-se, usando a seguinte notação:
; e( )yxtt
ji ,,, ϕϕ =
( yyxxttt
ji ∆+∆+∆+=+
++ ,,1
1,1 ϕϕ )
para o modo explícito:
( ) ( )t
ji
t
ji
t
ji
t
ji
t
ji
t
ji kk 1,1,,1,1,
1
, 41 −+−+
+
++++−= ϕϕϕϕϕϕ
e para o modo implícito:
( ) ( )1
1,
1
1,
1
,1
1
,1
1
,, 41 +
−
+
+
+
−
+
+
+
+++−+= t
ji
t
ji
t
ji
t
ji
t
ji
t
ji kk ϕϕϕϕϕϕ
onde 2
h
t∆
= αk , hyx =∆=∆ .
O método Hopscotch utiliza essas duas
discretizações, como será visto a seguir.
2.5 – Método Hopscotch
O método Hopscotch (ref. [3], [5] e [6]) é
uma combinação dos métodos explícito e implícito. O
método consiste em aplicar as equações explícita e
implícita em cada ponto do domínio, de modo
alternado. Os pontos resolvidos pela equação explícita
são sempre calculados primeiro. Assim, quando os
pontos a serem resolvidos pelo método implícito forem
calculados, todos os seus pontos adjacentes
necessários para o cálculo já estarão resolvidos. Deste
modo, não é necessário resolver um sistema de
equações. É incondicionalmente estável, ver ref. [7]
para a prova.
O exemplo a seguir ilustra a aplicação do
método. Primeiro, aplica-se o método explícito (pontos
brancos) alternadamente, começando no ponto acima e
à esquerda. Depois, o método implícito é aplicado
(pontos pretos) ao resto dos pontos. Note que todos os
pontos necessários ao cálculo da fórmula implícita já
estão no tempo t + 1, e assim esse cálculo se torna
explícito, dispensando a resolução de um sistema de
equações. Esse procedimento configura um meio-
passo, e está ilustrado na figura 3. O passo se completa
com a repetição do procedimento, invertendo o método
de cálculo utilizado em cada ponto do domínio. Os
pontos cinza são pontos da fronteira.
meio-passo + meio-passo = um passo
Figura 3 – Aplicação do método Hopscotch
Uma desvantagem do método Hopscotch é
que ele não lida bem com discontinuidades na
fronteira, devido à sua característica de considerar
primeiro aproximadamente a metade dos pontos e
depois os pontos restantes. Uma das maneiras de lidar
com esse problema é refinar a malha nas proximidades
de uma eventual descontinuidade (ref. [8]).
3 – IMPLEMENTAÇÃO
Foi usada a linguagem C para a
implementação dos programas e adotado o padrão MPI
para a troca de mensagens. Ver ref. [9] para uma
implementação paralela usando gradiente conjugado e
a ref.[10] para uma implementação paralela de um
método Hopmoc, que é uma extensão do método
Hopscotch.
3.1 – Divisão do Domínio
Será considerado aqui, como exemplo
ilustrativo, uma subdivisão utilizando 9 processadores,
cada um deles com um subdomínnio 5x5, mas o
programa permite que se use qualquer quantidade de
processadores e qualquer tamanho de subdomínio,
com a restrição de que exista sempre o mesmo número
de linhas e colunas., isto é, o número de subdomínios
deve ser um quadrado perfeito, por exemplo, 9, 16, 25,
36, 49, 64 e assim por diante.
5x55x5
fronteira
5x5 5x5 5x5
5x5 5x5 5x5
5x5
Figura 5 – Divisão do domínio
Independentemente do número de
subdomínios definidos, existirão nove tipos de
subdomínios, de acordo com a existência e posição da
fronteira. Os tipos de subdomínio estão descritos no
item 4.2.4. Os exemplos são para o caso de
subdomínios com discretização 5x5.
Cada processador trabalhará apenas em um
subdomínio.
3.2 – Comunicação entre os Processadores
Um meio passo do método é o cálculo
alternado dos pontos pelas equações explícita e
implícita. Com todos os pontos calculados, a
complementação do passo será usar a fórmula explícita
para calcular os pontos que foram calculados com a
fórmula implícita, e vice-versa. O cálculo dos valores
dos pontos localizados nas bordas de um subdomínio
depende dos valores de pontos localizados nos
subdomínios adjacentes. Assim, a cada meio passo
haverá a necessidade de comunicação entre os
processos.
A posição relativa dos subdomínios é
mostrada na figura 6 a seguir.
2
3. N NE
L
SESSO
O
NO
Figura 6 – Posição relativa dos subdomínios
Essa comunicação consistirá de valores em
pontos de um subdomínio que devem ser mandados
para os seus vizinhos. Assim, cada subdomínio terá
pontos dos subdomínios adjacentes. Esses pontos são
chamados de franja. As franjas são enviadas por cada
processador conforme a figura 7 a seguir. Nessa
ilustração foi usado um subdomínio 10x10 para maior
clareza.
noroeste
oeste leste
nordeste
sudoeste sudeste
norte
sul
Figura 7 – Subdomínio (10x10) com as franjas enviadas
As franjas são recebidas de cada vizinho
conforme figura 8 a seguir.
Subdomínio 5x5franja
noroeste
oeste
sudoeste sul
sudeste
leste
norte
nordeste
Figura 8 – Subdomínio com as franjas recebidas
O Método Hopscotch exige uma franja de
duas camadas.
A comunicação deve ser síncrona, pois um
subdomínio necessita dos outros para poder
prosseguir.
Para um domínio dividido igualmente, o
subdomínio que o processador está resolvendo é
determinado da seguinte maneira:
a) divide-se o número do processo (rank) pelo
número de colunas. O resultado indicará em que
coluna o subdomínio está.
b) Obtém-se o resto dessa divisão. O
resultado indicará em que linha está o subdomínio.
3.4 – Tipos de Subdomínios
Existem nove tipos de subdomínio de acordo
com a existência ou não de fronteira e sua posição no
domínio. Os tipos de subdomínio estão mostrados no
exemplo da figura 9 a seguir, que usa uma subdivisão
em 36 subdomínios.
1 4 4 4 4 7
2 5 5 5 5 8
2 5 5 5 5 8
2 5 5 5 5 8
2 5 5 5 5 8
3 6 6 6 6 9
Figura 9 – Tipos de Subdomínio
3.5 – Refinamento não-uniforme
O programa permite que os subdomínios
tenham refinamentos diferentes. Na presença de
gradientes elevados, a linha de ação mais comum é
refinar a malha onde esses gradientes ocorrem, e
deixar a malha menos refinada nas regiões com
gradientes pequenos. No caso de uma discontinuidade,
é necessário que a malha seja mais refinada nas
proximidades dela, para que seja obtida a precisão
requerida. Como o refinamento de uma malha é
computacionalmente dispendioso, o programa permite
refinamentos diferentes em cada subdomínio. Ë claro
que, em ambientes homogêneos, o tempo de
processamento será dado pelo subdomínio mais
refinado, já que a comunicação é síncrona. Apesar de a
facilidade não reduzir, nesse caso, o tempo de
processamento já obtido com a paralelização, essa
facilidade é útil em ambientes compartilhados, já que
só sobrecarrega os processadores alocados aos
subdomínios refinados. Em ambientes heterogêneos, o
subdomínio mais refinado seria associado ao
processador mais rápido, reduzindo o tempo de
processamento.
4 – O PROBLEMA
Encontrar a distribuição de temperatura sobre
uma chapa de 3m x 3m, submetida às condições de
fronteira de Dirichlet com uma discontinuidade
conforme a figura 10 a seguir.
Figura 10 - Chapa metálica aquecida nas bordas
Os parâmetros do problema são:
α (difusividade térmica) = 1 m2
/s.
ο
00
, =jiϕ (a placa está inicialmente a zero grau).
Inicialmente o domínio será discretizado
usando uma malha regular de 60 x 60 pontos, o que
fornece h = 5,0 cm, propiciando a precisão
3
500º
30
o
100
o
100
o0
300
o
3
3
4. inicialmente requerida para resolver o problema. Essa
malha será chamada de malha não refinada. Na
presença de discontinuidade, essa discretização não é
mais suficiente, devido aos elevados gradientes nas
proximidades da discontinuidade. Por isso, é
necessária uma discretização que forneça h = 1,25 cm,
o que é conseguido com uma malha de 240 x 240
pontos, malha essa chamada de refinada.
Na versão paralela, são usados 9
subdomínios, cada um deles endereçado a um
processador. Para tratar o caso sem a discontinuidade,
o domínio é dividido em 9 subdomínios, cada um com
malha 20 x 20. No caso em que há descontinuidade na
fronteira, o domínio teria de ser dividido em 9
subdomínios de 80 x 80 pontos. Mas como o programa
tem a flexibilidade de tratar subdomínios com
refinamentos diferentes, apenas o subdomínio que
contém a discontinuidade precisa ter esse refinamento.
O domínio para a resolução paralela então fica como
mostrado na figura 11 a seguir.
20 x 20 40 x 40 80 x 80
20 x 20 40 x 40 40 x 40
20 x 20 20 x 20 20 x 20
Figura 11 - Refinamento dos subdomínios
O tempo de processamento do programa será
ditado pelo subdomínio com refinamento 80 x 80, já
que o processamento é síncrono, e assim, em termos
da aplicação, o refinamento não-uniforme não
conduziria a um menor tempo de processamento, se o
ambiente for homogêneo. Se o ambiente for
heterogêneo, isto é, tendo processadores com
velocidades diferentes, o subdomínio mais refinado
poderia ser associado ao processador mais rápido,
deixando os processadores mais lentos responsáveis
pelo processamento dos subdomínios menos refinados,
levando a um menor tempo de processamento do
programa. Mas em se tratando de ambientes paralelos
compartilhados, isto é, não dedicados exclusivamente
a uma única aplicação, a desnecessidade de se refinar
todos os subdomínios sobrecarrega bem menos o
sistema. Por exemplo, se considerarmos que o
processamento do subdomínio 20 x 20 gasta 1 unidade
de tempo, o processamento do subdomínio 40 x 40
gastará 4 unidades de tempo, e o subdomínio 80 x 80
gastará 16 unidades de tempo. Assim, a resolução do
problema consumirá 33 unidades de tempo. Se não
houvesse a facilidade de refinamento não-uniforme,
todos os subdomínios teriam de ter refinamento 80 x
80, o que consumiria 144 unidades de tempo.
5 – RESULTADOS
Foram considerados dois estágios na
evolução da distribuição de temperaturas na chapa.
Um no início da propagação dos valores de fronteira
para o interior do domínio, e outro com a propagação
já bastante disseminada no domínio mas ainda não
tendo atingido a estabilização.
A Tabela 1 a seguir apresenta os resultados
obtidos em tempo de processamento para o primeiro
estágio.
Tabela 1 – Tempos de processamento para o primeiro estágio
Tempo (segundos)
malha Seqüencial Paralelo
Não refinada 0,10 0,05
Refinada 1,67 0,07
A Tabela 2 a seguir apresenta os resultados
obtidos em tempo de processamento para o segundo
estágio.
Tabela 2 – Tempos de processamento para o segundo estágio
Tempo (segundos)
malha Seqüencial Paralelo
Não
refinada 5,31 3,41
Refinada 90,02 5,78
As figuras 12 e 13 a seguir apresentam a
distribuição de temperaturas na chapa para o programa
seqüencial em todo o domínio e a distribuição de
temperaturas apenas no subdomínio em que existe a
descontinuidade, no início da distribuição de
temperaturas, usando a malha refinada.
Figura 12 – Domínio completo, com refinamento 240 x 240
Figura 13 – Subdomínio com refinamento 80 x 80.
As figuras 14 e 15 a seguir apresentam a
distribuição de temperaturas na chapa, já próxima da
estabilização, para o programa seqüencial em todo o
domínio e a distribuição de temperaturas apenas no
4
5. subdomínio em que existe a discontinuidade, usando a
malha refinada.
Figura 14 – Domínio completo, com refinamento 240 x 240
Figura 15 – Subdomínio com refinamento 80 x 80.
6 – CONCLUSÕES
Neste trabalho, utilizou-se o laboratório da
Pós-graduação em computação da UFF para analisar
os resultados experimentais obtidos pelo programa de
resolução da equação diferencial parabólica de difusão
2D. A rede local do laboratório é heterogênea, e foram
utilizados 9 processadores nos testes, três Pentium IV
com 1,4 GHz de freqüência de “clock” e 512 Mb de
memória RAM; e seis AMD ATHLON com 1,4 GHz
de freqüência de “clock”e 256 Mb de memória RAM.
A rede estava compartilhada com outras aplicações
durante os testes, e por isso cada caso foi executado
dez vezes para diminuir os efeitos de outras aplicações
nos tempos dos testes. Foi considerado o menor tempo
obtido em cada uma das dez execuções de cada estágio
para cada grau de refinamento da malha.
Os tempos mostraram que o desempenho da
versão paralela é bem superior para a malha mais
refinada. Para a malha menos refinada o ganho não é
tão grande porque o tempo de comunicação torna-se
proporcionalmente maior em relação ao tempo de
processamento.
O método Hopscotch, aliado ao
processamento paralelo, mostrou-se uma ferramenta
poderosa para a resolução das EDP difusivas. O
refinamento da malha conduziu a resultados mais
precisos, permitindo maior qualidade no
acompanhamento da evolução dos efeitos provocados
pela descontinuidade.
O programa paralelo levou a uma redução
substancial no tempo de processamento em relação à
versão seqüencial. A capacidade, já implementada, de
refinamento não-uniforme da malha, apesar de não
diminuir o tempo de processamento do programa em
si, considerando a versão paralela, contribui para uma
diminuição global de processamento, o que é útil em
ambientes compartilhados com outras aplicações. Se
for considerado um ambiente heterogêneo, uma
redução no tempo de processamento pode ser obtida
associando o subdomínio com a malha mais refinada
ao processador mais rápido.
O balanceamento de carga, necessário para
reduzir ainda mais o tempo de processamento e a
capacidade de tratar domínios que não sejam
quadrados para aumentar a versatilidade do programa
são aperfeiçoamentos que estão sendo desenvolvidos.
É necessário também executar o programa em
ambiente exclusivo para avaliar com precisão os
“speed-ups”conseguidos pela versão paralela.
8 - REFERÊNCIAS
[1] Eric W. Weisstein. "Boundary Conditions." From
MathWorld--A Wolfram Web Resource.
http://mathworld.wolfram.com/BoundaryConditions.ht
ml
[2] Fortuna, A. O., Técnicas Computacionais para
Dinâmica dos Fluidos, Edusp, São Paulo, 2000.
[3] Mitchell, A.R. & Griffiths, D.F., The Finite
Difference Method in Partial Differential Equations,
John Wiley & Sons Ltd., UK, 1980.
[4] Finney, Ross L., Calculus, Addison-Wesley Inc,
EUA, 1994.
[5] A.R. Gourlay, Hopscotch: a fast second order
partial differential equation solver, J. Inst. Maths.
Applics., 6:375-390, 1970.
[6] A.R. Gourlay e G.R. McGuire, General hopscotch
algorithms for the numerical solution of partial
differential equations, J. Inst. Maths. Applics., 7:216-
227, 1971.
[7] Verwer&Sommeijer, Stability Analysis of an Odd-
Even-line Hopscotch Method fot Three –Dimensional
Advection-Difusion Problems, Society for Industrial
and Applied Mathematics, vol 34, No 1, pp. 376-
388,1987.
[8] University of Oxford, Physical and Theoretical
Chemestry Laboratory, UK,
http://physchem.ox.ac.uk/~rgc/john/Thesis.
[9] Leonardo A. P. e Silva, Implementação Paralela
do algoritmo Gradiente Conjugado utilizando MPI,
UFRGS, RS, 2002.
[10] Cabral, F. L., Métodos Hopmoc para resolução de
equações de convecção-difusão e sua implementação
paralela, Dissertação de Mestrado, UFF, 2001.
5