Projeto: Esteira de Vórtices
Nesse projeto você irá explorar o escoamento laminar em torno de um cilindro. A geometria do problema é mostrada abaixo (dimensões são dadas em metros).

Primeira Parte
O arquivo system/blockMeshDict que especifica a malha e geometria está disponível na pasta do projeto, chamada de vortex_shedding/c1.
- Inspecione o arquivo blockMeshDict e identifique o número de vértices, blocos, e a resolução de malha adotado. Use o paraFoamView para auxiliá-lo. Execute
blockMesh
e cheque a malha com checkMesh
.
- Faça uma figura identificando o nome das máscaras (patches) e as condições de fronteira adotadas em cada uma destas, tanto para a velocidade
U
quando para a pressão p
.
- Qual a condição inicial para os campos
U
e p
?
- Inspecione os arquivos nas pastas system e constant e consulte a documentação do OpenFOAM para maiores informações sobre os métodos numéricos implementados.
- Qual a velocidade de entrada no domínio? Calcule o número de Reynolds dessa simulação e o número de Courant máximo esperado para a malha disponível.
- O arquivo system/controlDict contém alguns objetos função. Essas funções usam os resultados das simulações como argumento e computam grandezas especificadas durante a execução. A função abaixo calcula a massa que entra no domínio através da somatória do fluxo de massa através das faces. Os resultados computados são escritos na pasta postProcessing, dentro do diretório principal do caso. Essa pasta será criada no momento em que a simulação for rodada. Maiores informações são fornecidas na documentação do OpenFOAM.
inMassFlow \\ nome da função
{
type surfaceFieldValue \\ tipo de variável
functionObjectLibs ("libfieldFunctionObjects.so"); \\ biblioteca usada.
enabled true; \\ se a função será usada ou não
writeControl timeStep; \\ quando é computada/escrita
writeInterval 1; \\ intervalo quando é computada
log true; \\ Se o resultado da função é escrito no arquivo log.
writeFields false; \\ Se os argumentos da função devem ser escritos quando a função é executada
regionType patch; \\ Tipo de região onde a função é aplicada
name in; \\ Nome da região
operation sum; \\ Operação realizada sobre o campo especificado abaixo
fields
(
phi
);
}
- Identifique quais outras funções são especificadas, o que cada uma computa e onde essa quantidade é computada.
- Há scripts em
python
disponíveis na pasta scripts que exibe o coeficiente de arrasto e de sustentação sobre o cilindro computado pelo OpenFOAM. Use esses scripts como template para gerar gráficos desses coeficientes.
- Observe o comportamento do coeficiente de arrasto e sustentação. É o que você espera? Discorra sobre o comportamento observado.
- Visualize os resultados no paraView e faça um gráfico do campo de velocidades nos instantes t=50, 150 e 250 s. Lembre-se também visualizar uma animação da simulação usando os controles VCR no ParaView.
- Descreva sucintamente o que acontece na simulação. Use o tempo de simulação para identificar eventos.
- A frequência dos vórtices pode ser obtida a partir da correlação aproximada dada por
St=0,198(1−ReD19,7),
onde St é o número de Strouhal, definido por
St=UfD,
e f é a frequência e Ué a velocidade. Estime a freqüência de vórtices para o caso Re=200 a partir do número de picos observados nas curvas de coeficiente de arrasto e do tempo de observação. Indique o intervalo de tempo usado. Compare o resultado com a expressão acima. Caso você queira, realize uma transformada de Fourier nos dados do coeficiente de arrasto. Essa transformada deve deixar claro qual a frequência de vórtices. Há um script disponível em python que faz isso, consulte a pasta scripts.
Segunda Parte
- O surgimento de uma esteira de vórtices em um escoamento desse tipo foi durante muito tempo um mistério. Acima de um certo número de Reynolds (~100), a solução simétrica, sem esteiras, é facilmente perturbada, e surge uma família de soluções com vórtices alternantes. Theodore von Kàrmàn não descobriu o fenômeno, mas foi um dos primeiros a estudá-lo cuidadosamente e obter alguns resultados importantes sobre a estabilidade das soluções.
- Ajuste a viscosidade do problema para obter Re=25. Simule pelo mesmo tempo total do caso anterior, com a mesma malha. Para isso, copie o caso anterior com o comando:
run
cd vortex_shedding
cp -r c1 c2
cd c2
Repita os passos e convença-se de que a solução obtida não apresenta vórtices alternantes.
- Dentro do paraView, faça um gráfico de linhas de corrente usando como linha fonte uma linha entre os pontos (1.5, -20, 0.5) e (1.5, 20, 0.5). Verifique a existência de uma solução simétrica com dois vórtices estacionários contrarotativos na esteira do cilindro.
- Qual o valor de cd para esse caso?
- O próximo caso está pré-configurado na pasta c3.
- A solução com vórtices pode ser obtida mais rapidamente se usarmos como condição inicial um campo com uma perturbação da velocidade na esteira do cilindro. Para isso usaremos a função
setFields
, que usa o dicionário system/setFieldsDict. O campo inicial será modificado para a condição ilustrada abaixo.

- Para configurar esse campo de velocidades, execute o comando
blockMesh
checkMesh
cp -r 0_orig/ 0
setFields
- Compare a evolução dos coeficientes de arrasto e sustentação para os casos c1 e c3. Discorra sucintamente sobre as diferenças observadas.
- Nesse caso, seria razoável interromper a simulação em um tempo anterior a t=350s?
- Em geral soluções podem ser obtida mais rapidamente se usarmos como condição inicial a solução de escoamento invíscido, que no caso incompressível e irrotacional, é também escoamento potencial. O OpenFOAM possui o solver
potentialFoam
, que usaremos para obter uma solução inicial para o caso viscoso.
- Esse caso está pré-configurado na pasta vortex_shedding/c4. Quais as diferenças existentes nos arquivos system/fvSchemes e system/fvSolution?
- Execute
blockMesh
e checkMesh
. Inicie a simulação com o comando:
cp –r 0_orig 0
potentialFoam -noFunctionObjects -initialiseUBCs -writep -writePhi > log.potentialFoam
A opção -noFunctionObjects
ignora as funções que possam estar descritas em system/controlDict. A opção -initialiseUBCs
inicializa as condições de contorno especificadas para U
antes de calcular os fluxos , e -writep
e -writePhi
computam e escrevem os campos de pressão e do potencial de velocidade, respectivamente. Mais informação sobre o solver potentialFoam
está disponível na documentação do OpenFOAM.
- Visualize os resultados com
paraView
. Assim como no caso anterior, faça um gráfico com linhas de corrente usando como linha fonte uma linha entre os pontos (1.5, -20, 0.5) e (1.5, 20, 0.5). A solução é simétrica? Há vórtices contrarotativos? Por que?
Relatório
O relatório a ser redigido deve conter, quando pedido, a informação solicitada nesse arquivo sempre precedido do item numérico ao qual ele se refere. Por exemplo, o item [2.] deve conter uma figura do domínio com as informações solicitadas e o item [12] deve conter uma estimativa do número de Strouhal. Itens onde não são solicitadas informações de forma explícita não aparecem no relatório.