16 de novembro de 2012

Número de Courant, CFL e Condição CFL


Este artigo foi atualizado. Clique aqui para acessar a versão mais recente.

Entenda a diferença entre eles


A maioria da comunidade científica, atualmente, usa a mesma definição para CFL, condição CFL e Número de Courant. Mesmo que as diferenças sejam bem sutis, elas existem e proponho aqui uma explicação que pode ajudar os novos pesquisadores nesse domínio. Assim como qualquer trabalho científico ou livro, é uma proposta, portanto toda sugestão é bem-vinda.

Resumo:

  • Número de Courant (Co) é uma variável local do domínio fluido que representa o fluxo advectivo¹ em cada volume finito.
  • O CFL é um parâmetro numérico constante que modifica a magnitude local do Número de Courant.
  • A Condição CFL é o intervalo de CFL que permite a precisão física e estabilidade do cálculo.


Número de Courant


Para um escoamento a massa específica constante:


Onde é a norma da magnitude de velocidade local,o passo de tempo e o tamanho local dos volumes finitos da malha. O Número de Courant tem a seguinte interpretação:


Essa grandeza adimensional representa, então, por meio de uma razão de distâncias, o fluxo advectivo¹ que atravessa os volumes da malha em um dado intervalo de tempo. Se supormos uma malha e uma velocidade uniformes numa região do domínio, o Número de Courant local torna-se o número de volumes da malha atravessados por uma perturbação naquele passo de tempo.

Para um cálculo a massa específica constante, a grandeza que sofre advecção é simplesmente a magnitude da velocidade. Por outro lado, se o cálculo acontece em massa específica variável, a advecção de pressão também é importante e a velocidade do som influencia no transporte dessas perturbações de maneira que  torna-se:


CFL (Courant-Friedrichs-Lewy)


Diferentemente do número de Courant, o CFL não representa o fluxo advectivo¹ entre os volumes finitos da malha, mas se trata de um parâmetro numérico constante que modifica a magnitude local do Número de Courant por meio do passo de tempo.

Em outras palavras, o CFL é um multiplicador do passo de tempo: representa o número de vezes que o passo de tempo do cálculo é superior ao passo de tempo que fornece um Número de Courant igual à unidade:


Visto que o Número de Courant é uma grandeza local, que varia no espaço, o local de referência para o cálculo de é arbitrária, normalmente onde se tem o maior Número de Courant.

Assim, o CFL funciona como um multiplicador de fluxo advectivo¹, modificando a magnitude local do Número de Courant.

Assim como um médico precisa conhecer a patologia dos seus pacientes, o engenheiro de CFD precisa conhecer a patologia da física a ser analisada e dos modelos usados. O CFL é um bom exemplo de remédio para o cálculo, em que temos que conhecer a posologia. Há sempre uma dose adequada, mas que depende de muitos fatores.


Passo de tempo físico


Uma solução permanente (estacionária, médias dos campos) pode ser obtida de duas maneiras:

  • Em formulação permanente: não há avanço no tempo, apenas iterações no espaço.
  • Em formulação transiente com esquema temporal implícito ("transiente deformado"): são feitas iterações no espaço com avanço no tempo, mas com passo de tempo grande e/ou avanço no tempo sem convergir no espaço.

O passo de tempo do cálculo transiente deformado, como seu próprio nome nos alerta, é tão somente numérico, atingindo uma solução permanente.

Uma solução transiente (não-estacionária) pode também ser obtida de duas maneiras, sempre em formulação transiente:

  • Com esquema temporal explícito: não são feitas iterações no espaço, apenas avanço no tempo. Passo de tempo submetido a condições de precisão da física e de estabilidade do cálculo.
  • Com esquema temporal implícito: são feitas iterações no espaço com avanço no tempo. Passo de tempo submetido a condições de precisão, principalmente.

Para um cálculo transiente, para qualquer esquema temporal, o objetivo é ter uma representação física da dinâmica do escoamento, então iremos querer um passo de tempo físico, ou seja, que respeite as condições de precisão.

Note que a utilização de um esquema temporal implícito pode nos fornecer tanto uma solução transiente (com um passo de tempo físico) quanto uma solução permanente (com um passo de tempo numérico, ou seja, que não respeita as condições de precisão).

Com efeito, nós teremos um passo de tempo físico unicamente se algumas condições forem respeitadas. A Condição CFL é uma² delas.

Condição CFL


A característica que torna o passo de tempo físico diferente do numérico está na capacidade de calcular um problema transiente corretamente. A precisão é sempre exigida, isto é, de nada serve um cálculo estável que não representa a física transiente.

Lembrando, o CFL é o multiplicador do passo de tempo que fornece um Número de Courant igual à unidade. Um cálculo transiente explícito (sem iterações no espaço) exige que o Número de Courant de cada volume da malha seja inferior à unidade em todo o domínio. Então, este cálculo está submetido à condição de um CFL inferior a 1, de onde vem o que chamamos de Condição CFL.

Resumindo, seja  o vetor posição:


Poderíamos dizer que o CFL está submetido a uma condição devida a uma limitação de número de Courant, a fim de se ter precisão física e estabilidade do cálculo.

Garantir a Condição CFL


A Condição CFL acima respeita a condição para precisão física e estabilidade de um cálculo transiente explícito³, mesmo que ela não seja suficiente². Podemos garantir essa condição de duas maneiras diferentes:
  • pela definição de um Número de Courant máximo:

onde o passo de tempo será escolhido pelo código computacional a cada avanço no tempo (após o cálculo de  em cada volume da malha).

  • pela definição de um passo de tempo constante:

onde a Condição CFL (CFL < 1) pode ser vista como uma limitação do passo de tempo.

Se o código não é capaz de prever o passo de tempo para a próxima iteração por meio do cálculo de Co em cada volume da malha, o usuário do código deve fazer uma estimativa do passo de tempoconstante à partir dos conhecidos da malha e  (quem sabe também c) estimados. Neste último caso, um limiar de "segurança" para o CFL, como CFL = 0,7, é indicado.


Condição CFL relaxada


Em contrapartida, para cálculos transientes implícitos, a condição é relaxada porque os esquemas temporais implícitos permitem a utilização de um passo de tempo físico maior (por meio de iterações no espaço).

A Condição CFL é ainda mais relaxada para se chegar a uma solução permanente em transiente deformado. O consequente passo de tempo grande é dito numérico porque ele não é capaz de representar os fenômenos transientes, mas unicamente os campos médios. Estes cálculos permitem um CFL de várias dezenas, quem sabe algumas centenas, uma flexibilidade que nos permite jogar facilmente com a difusividade numérica: aumentando o CFL para acelerar a obtenção de uma solução (permanente) ou diminuindo-o para diminuir as dificuldades de convergência.

Seja para os cálculos permanentes, seja para os transientes, critérios mais precisos podem ser exigidos de acordo com os métodos numéricos utilizados (incluindo a ordem do esquema temporal implícito). Tudo para garantir a precisão física e estabilidade do cálculo.


Outras condições


Além de uma Condição CFL, outras condições podem ser necessárias para a estabilidade de um cálculo transiente. O Número de Fourier, por exemplo, representa o fluxo difusivo4 nos volumes da malha e é uma limitação importante para o passo de tempo de esquemas temporais explícitos:


onde é o coeficiente de difusão e a massa específica do fluido. Esta condição, junto com CFL < 1, é garantia de precisão física e estabilidade do cálculo. Nos cálculos explícitos, essa condição deve ser respeitada seja para os fenômenos de difusão da quantidade de movimento (), seja para os de difusão do calor (), onde  é a viscosidade dinâmica total5, a condutividade térmica e  o calor específico à pressão constante.


_________________
1 Vamos manter nesse texto o nome simples "fluxo advectivo" para o número de Courant.  É necessário, entretanto, estar ciente que uma definição mais rigorosa não permitiria a palavra "fluxo" porque o número de Courant é uma grandeza sem dimensão. Uma definição mais precisa poderia ser "fluxo numérico advectivo adimensionalizado pelas malhas espacial e temporal".
2 Veja a seção Outras condições.
3A Condição CFL < 1 é relaxada (ou seja, pode-se ter CFL > 1 no domínio) se o cálculo for implícito. Veja a seção Condição CFL relaxada.
4De maneira respectiva, a primeira nota de fim de página também é válida.
5é a soma da viscosidade dinâmica () e dinâmica turbulenta ().

Um comentário:

 
Nota de responsabilidade:
As informações contidas nesse blog têm caráter informativo, mas muitas vezes subjetivo, da mesma forma que as referências citadas. Afinal, quem cria e faz a Engenharia são sempre pessoas, e não livros. Recomenda-se análise crítica e pedem-se sugestões de correção se o leitor acreditar serem oportunas. O autor não se responsabiliza pelos comentários postados ou por qualquer consequência negativa resultante da utilização das informaçoes aqui contidas, de forma que o leitor deve usá-las sob sua própria conta e risco.
Licença Creative Commons
Mec. Flu., CFD e HPC de Marco Leonardelli Lovatto está sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada. Permite-se e incentiva-se a cópia, tradução e adaptação por qualquer meio, desde que para fins não comerciais, mantendo-se essas mesmas condições e fazendo referência ao link original do texto.