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).

geometria

Primeira Parte

O arquivo system/blockMeshDict que especifica a malha e geometria está disponível na pasta do projeto, chamada de vortex_shedding/c1.

  1. 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 blockMeshe cheque a malha com checkMesh.
  2. 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.
  3. Qual a condição inicial para os campos U e p?
  4. 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.
  5. 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.
  6. 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
		);
	}
  1. Identifique quais outras funções são especificadas, o que cada uma computa e onde essa quantidade é computada.
  2. 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.
  3. Observe o comportamento do coeficiente de arrasto e sustentação. É o que você espera? Discorra sobre o comportamento observado.
  4. 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.
  5. Descreva sucintamente o que acontece na simulação. Use o tempo de simulação para identificar eventos.
  6. A frequência dos vórtices pode ser obtida a partir da correlação aproximada dada por
    St=0,198(119,7ReD),St=0,198\left(1-\frac{19,7}{Re_D} \right)\,,
    onde StSt é o número de Strouhal, definido por
    St=fDU,St=\frac{fD}{U}\,,
    e ff é a frequência e UUé 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

  1. 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.
  2. 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.

  1. 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.
  2. Qual o valor de cdc_d para esse caso?
  3. O próximo caso está pré-configurado na pasta c3.
  4. 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.

setFields

  1. Para configurar esse campo de velocidades, execute o comando
blockMesh
checkMesh
cp -r 0_orig/ 0
setFields
  1. Compare a evolução dos coeficientes de arrasto e sustentação para os casos c1 e c3. Discorra sucintamente sobre as diferenças observadas.
  2. Nesse caso, seria razoável interromper a simulação em um tempo anterior a t=350s?
  3. 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.
  4. Esse caso está pré-configurado na pasta vortex_shedding/c4. Quais as diferenças existentes nos arquivos system/fvSchemes e system/fvSolution?
  5. 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 -initialiseUBCsinicializa as condições de contorno especificadas para U antes de calcular os fluxos , e -writepe -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.

  1. 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.