Sie sind auf Seite 1von 14

Simulaao cavity

Aprendendo a obter resultado



Voc vai aprender:

como executar o tutorial cavidade icoFoam.

como o tutorial cavidade icoFoam est configurado, e como modificar o set-up.

como procurar exemplos de como usar os utilitrios.

As lminas so baseadas na distribuio OpenFOAM-1.6.

Encontrar tutoriais para as aplicaes em OpenFOAM

No h tutoriais especficos para os servios pblicos, mas alguns dos solver tutoriais tambm
mostrar como usar os utilitrios. Vamos dar uma olhada em alguns deles, enquanto ns corremos
atravs do tutorial cavidade icoFoam.

O tutorial cavidade icoFoam

Vamos usar o tutorial cavidade icoFoam como um exemplo geral de como configurar
e executar aplicaes em OpenFOAM.

Vamos copiar o tutorial cavidade icoFoam ao nosso diretrio de execuo e execut-lo. depois
vamos verificar o que fizemos.

Comece copiando o tutorial para seu diretrio de executar:

cp -r $FOAM_TUTORIALS/icoFoam/cavity $FOAM_RUN
cd $FOAM_RUN/cavity

Execute o tutorial cavidade icoFoam

A malha definido por um dicionrio que lido pelo utilitrio blockMesh. criar
a malha, digitando:

blockMesh

Voc j gerou a malha em formato OpenFOAM.

Verifique a malha digitando

checkMesh

Voc v o tamanho da malha, o tamanho geomtrico e algumas verificaes de malha.

Este um caso para o solucionador icoFoam, ento corra

icoFoam >& log&

Agora voc executar a simulao no fundo usando as configuraes no caso, e
encaminhar a sada para o arquivo de log, onde os nmeros Courant e os resduos
so mostrados.

Ps-processo o tutorial cavidade icoFoam

Ver os resultados digitando:

paraFoam

Clique em Aceitar.
V para a etapa ltima vez
Escolha qual varivel para colorir com pelo Display/Color by
Mover, girar e redimensionar a visualizao usando o mouse
Encontre mais instrues sobre o uso de PARAFOAM no UserGuide:

em UserGuide.pdf

Sair do OpenFOAM: File/Exit
Os resultados tambm podem ser vistos usando produtos de terceiros

Mais tarde, vamos mostrar muitas mais maneiras de usar PARAFOAM.

Visualizao da malha em PARAFOAM


A visualizao da presso esttica no PARAFOAM








IcoFoam tutorial cavidade - O que vamos fazer?

Vamos olhar o que fizemos durante a execuo do tutorial cavidade, olhando para
arquiva o caso.
Antes de tudo, deve-se notar que icoFoam um solucionador transitria para
incompressvel, o fluxo laminar de fluidos newtonianos
O diretrio caso originalmente contm as seguintes sub-diretrios:
0, constante, e sistema. Depois de nossa corrida ele tambm contm a sada de 0,1, 0,2,
0,3, 0,4, 0,5 e log
Os 0 * diretrios contm os valores de todas as variveis para esses passos de tempo. O
diretrio 0 , portanto, a condio inicial.
O diretrio constante contm a malha e um dicionrio para a cinemtica
transportProperty viscosidade.
O diretrio do sistema contm configuraes para as aces realizadas, discretizao e
procedimentos de soluo.
O solver icoFoam l os arquivos no diretrio do caso e executa o caso
de acordo com essas definies.

icoFoam tutorial cavidade - O diretrio constante

O arquivo transportProperties um dicionrio para o nu escalar dimensionado.
O diretrio polymesh originalmente contm o dicionrio blockMeshDict para
o gerador de malha blockMesh, e agora tambm a malha em formato OpenFOAM.
Vamos agora dar uma olhada rpida no dicionrio blockMeshDict, a fim de
entender o que malha temos usado.

Tutorial cavidade icoFoam - dicionrio blockMeshDict

O dicionrio blockMeshDict primeiro lugar contm uma srie de vrtices:

convertToMeters 0.1;
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1 1 0.1)
(0 1 0.1)
);

H oito vrtices que definem um bloco 3D. OpenFOAM sempre usa 3D
malhas, mesmo que a simulao 2D.
ConvertToMeters 0.1; multiplica as coordenadas de 0,1.

tutorial cavidade icoFoam - dicionrio blockMeshDict

O dicionrio define blockMeshDict em segundo lugar um bloco ea malha do
vrtices:

blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);
hex significa que um bloco de hexaedro estruturado.
(0 1 2 3 4 5 6 7) so os vrtices utilizados para definir o bloco. A ordem destes
importante - eles devem formar um sistema de direito (leia o UserGuide voc mesmo).
(20 20 1) o nmero de clulas de malha, em cada direco.
SimpleGrading (1 1 1) o coeficiente de expanso, neste caso equidistante. o
os nmeros so os quocientes entre as clulas de extremidade ao longo de trs bordas. H
outros
classificao esquemas bem (leia o UserGuide voc mesmo).
O dicionrio blockMeshDict finalmente define trs correes:

patches
(
wall movingWall
(
(3 7 6 2)
)
wall fixedWalls
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
)
empty frontAndBack
(
(0 3 2 1)
(4 5 6 7)
)
);

Cada adesivo define um tipo, um nome e uma lista de rostos de fronteira
Vamos ter um olhar para o patch fixedWalls:

wall fixedWalls
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
)
wall do tipo de contorno.
fixedWalls o nome do patch.
o patch definido por trs lados do bloco de acordo com a lista, que se refere
aos nmeros de vrtices. A ordem dos nmeros de vrtice de tal modo que eles so
marchou ponteiros do relgio quando se olha de dentro do bloco. Isto importante, e
infelizmente checkMesh no vai encontrar esses problemas!
Para resumir, o dicionrio blockMeshDict gera um bloco com:
X / Y / Z dimenses 0.1/0.1/0.01
20x20x1 clulas
wall fixedWalls remendar em trs lados
wall movingWall consertar de um lado
empty frontAndBack corrigir em dois lados
O tipo de vazio(empty) diz OpenFOAM que um caso 2D.
Leia mais sobre blockMesh-se no UserGuide.
Voc tambm pode converter arquivos de malha a partir de produtos de terceiros, consulte o
UserGuide.
blockMesh usa o blockMeshDict para gerar alguns arquivos no
constant/polyMesh Diretorio:
boundary
faces
neighbour
owner
points

limite mostra as definies dos pathches, por exemplo:

movingWall
{
type wall;
nFaces 20;
startFace 760;
}
Os outros arquivos definem os pontos, faces, e as relaes entre as clulas.


icoFoam tutorial cavidade - O diretrio do sistema

O diretrio do sistema(system) consiste em trs arquivos de configurao:

controlDict
fvSchemes
fvSolution

controlDict contm instrues gerais sobre como executar o caso.

fvSchemes contm instrues sobre quais os regimes de diferenciao que devem ser
usados para diferentes termos nas equaes.

fvSolution contm instrues sobre como resolver cada linear discretizada
sistema de equaes. Ele tambm contm instrues para a presso-velocidade PISO
acoplamento.

O dicionrio controlDict consiste nas seguintes linhas:

application icoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.5;
deltaT 0.005;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;


application icoFoam; Nomeia a aplicao do tutorial est configurado para
As linhas a seguir diz icoFoam para comear s startTime = 0, e parar em
endTime = 0,5, com um intervalo de tempo deltaT = 0,005:

startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.5;
deltaT 0.005;

As linhas a seguir diz icoFoam para escrever resultado em diretrios separados (purgeWrite
0;) cada 20 TimeStep, e que eles devem ser escritos em formato ascii descomprimido com
writePrecision 6. timeFormat e timePrecision esto as instrues para os nomes dos
diretrios de tempo.

WriteControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;

runTimeModifiable yes; permite que voc faa modificaes no caso, enquanto
ele est sendo executado.

icoFoam tutorial cavidade - Uma dica dicionrio

Se voc no sabe quais as entradas esto disponveis para uma palavra chave especfica em
um dicionrio, basta usar um manequim e o solver ir listar as alternativas, por exemplo:

stopAt;
dummy;

Ao executar icoFoam voc receber a mensagem:

dummy is not in enumeration (manequim no est na enumerao)
4
(
nextWrite
writeNow
noWriteNow
endTime
)

e voc vai saber as alternativas.

Note-se que:

stopAt;
dummy;

s d a seguinte mensagem sem parar a simulao:

--> FOAM Warning :
From function Time::setControls()
in file db/Time/Time.C at line 132
expected startTime, firstTime or latestTime \
found dummy in dictionary controlDict
Setting time to 0

e a simulao ser iniciada a partir do tempo 0.

Voc tambm pode usar C + + comentando nos dicionrios:

// This is my comment
/* My comments, line 1
My comments, line 2 */

icoFoam tutorial cavidade - O dicionrio fvSchemes

O dicionrio fvSchemes define os regimes de diferenciao, em particular, o tempo
marchando esquema e os esquemas conveces:

ddtSchemes
{
default Euler;
}
divSchemes
{
default none;
div(phi,U) Gauss linear;
}

Aqui usamos o Euler discretizao temoral implcita, eo linear
(de diferena central) Regime dos conveco.

default none; significa que os sistemas devem ser especificados explicitamente.

Encontre os esquemas de conveco disponveis utilizando um "boneco" de entrada do
dicionrio. l 50 so alternativas, e o nmero de alternativas esto a aumentar!

icoFoam tutorial cavidade - O dicionrio fvSolution

O dicionrio fvSolution define o processo de soluo.

As solues dos sistemas de equaes lineares p definido por:

p PCG
{
preconditioner DIC;
tolerance 1e-06;
relTol 0;
};

O sistema de equaes p linear resolvido usando o Gradiente Conjugado solver PCG,
com a DIC precondicionador.

A soluo considerada convergente quando o residual tiver alcanado o
tolerncia(tolerance), ou se tiver sido reduzida por relTol em cada intervalo de tempo.

relTol aqui definido como zero, uma vez que usar o algoritmo PISO. O algoritmo PISO s
resolve cada equao uma vez por passo de tempo, e devemos, portanto, resolver o
equaes a tolerncia (tolerance)1e-06 em cada passo de tempo. relTol 0; desativa relTol.

As solues dos sistemas de equaes lineares U definida por:

U PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};

O sistema de equaes lineares em U resolvido usando o Gradiente Conjugado solver
PBiCG, com o DILU precondicionador.
A soluo considerada convergente quando o residual tiver alcanado o
tolerncia 1e-05 para cada passo de tempo.
As configuraes para o algoritmo PISO so especificados na entrada PISO:

PISO
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
nCorrectors o nmero de corretores PISO. Voc pode ver isso no arquivo de log uma vez
que a equao p resolvido por duas vezes, e o acoplamento presso-velocidade assim
feito duas vezes.

nNonOrthogonalCorrectors adiciona correes para malhas no ortogonais, que, por vezes,
pode influenciar a soluo.

A presso ajustada para pRefValue 0 no nmero de clulas pRefCell 0. Isto suplantada se
uma condio de limite de presso constante usado para a presso.

icoFoam tutorial cavidade - O diretrio 0

O diretrio 0 contm as dimenses e as condies iniciais e de contorno para todas as
variveis primrias, neste caso p e U.
U-exemplo:

dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{ movingWall
{
type fixedValue;
value uniform (1 0 0);
}
fixedWalls
{
type fixedValue;
value uniform (0 0 0);
}
frontAndBack
{
type empty;
}}

dimensions [0 1 -1 0 0 0 0]; Indica que a dimenso de U m / s.
internalField uniform (0 0 0); define U a zero internamente.
Os remendos de contorno movingWall e fixedWalls so dadas a digite FixedValue; valor
uniforme (1 0 0); e (0 0 0), respectivamente, ou seja, Ux = 1m / s, e U = 0m /
s,respectivamente.
O patch frontAndBack est determinado tipo vazio(type empty);, indicando que no h
soluo
necessrio nesse sentido desde que o caso 2D.
Agora voc deve ser capaz de entender 0 / p tambm.
Os resultantes 0. * Diretrios so semelhantes, mas o internalField agora um <scalar> lista
no uniforme contendo os resultados. H tambm um ficheiro de phi, contendo os fluxos
resultantes de face que so necessrios para se obter uma reinicializao perfeito.
H tambm algumas informaes sobre o tempo em 0. * / Uniforme / hora. O 0. * / Uniforme
directrio pode ser utilizado para informao uniforme numa simulao paralelo.


icoFoam tutorial cavidade - O arquivo de log

Se voc seguiu as instrues anteriores, voc agora deve ter um arquivo de log. Esse arquivo
contm principalmente os nmeros e resduos Courant em todos os passos de tempo:

Time = 0.09
Courant Number mean: 0.116099 max: 0.851428 velocity magnitude: 0.851428
PBiCG: Solving for Ux, Initial residual = 0.000443324,
Final residual = 8.45728e-06, No Iterations 2
PBiCG: Solving for Uy, Initial residual = 0.000964881,
Final residual = 4.30053e-06, No Iterations 3
PCG: Solving for p, Initial residual = 0.000987921,
Final residual = 5.57037e-07, No Iterations 26
time step continuity errors : sum local = 4.60522e-09,
global = -4.21779e-19, cumulative = 2.97797e-18
PCG: Solving for p, Initial residual = 0.000757589,
Final residual = 3.40873e-07, No Iterations 26
time step continuity errors : sum local = 2.81602e-09,
global = -2.29294e-19, cumulative = 2.74868e-18
ExecutionTime = 0.11 s ClockTime = 1 s

icoFoam tutorial cavidade - O arquivo de log

Olhando para os resduos Ux.

PbiCG: Solving for Ux, Initial residual = 0.000443324,
Final residual = 8.45728e-06, No Iterations 2

Vemos que foi utilizada a solver PbiCG
O residual inicial calculada antes do sistema de equaes lineares resolvido, e o resduo
final calculada em seguida.
Vemos que o residual final menor do que a nossa tolerncia em fvSolution (tolerncia 1e-
05;).
O solver PBiCG usado 2 iteraes para atingir a convergncia.
Tambm se pode ver no arquivo de log que os resduos de presso e erros de continuidade
foram relatados duas vezes cada intervalo de tempo. Isso porque ns especificamos
nCorrectors 2; para a entrada em PISO fvSolution.
O ExecutionTime o tempo decorrido da CPU, e a o ClockTime
decorrido tempo relgio de parede para o ltimo passo do tempo.

tutorial cavidade icoFoam - foamLog

de interesse que tem uma representao grfica do desenvolvimento residual.

O utilitrio foamLog basicamente um script usando o grep, awk e sed para extrair valores
de um arquivo de log.

foamLog usa um banco de dados (foamLog.db) para saber o que extrair. o banco de dados
foamLog.db pode ser modificado se voc quer extrair quaisquer outros valores foamLog que
no extrai por padro.

foamLog executado no caso cavidade com log do arquivo de log por:

log foamLog

A logs j foi gerado, com os valores extrados em formato ASCII em duas colunas. A primeira
coluna o Tempo, ea segunda coluna o valor no nesse momento.
Digite foamLog-h para obter mais informaes.
A representao grfica ento dado por Matlab,

xmgrace -log y Ux_0 p_0 or gnuplot: set logscale y,
plot "Ux_0","Uy_0","p_0".

Executar os tutoriais cavidade icoFoam usando o script Allrun

Vamos agora executar os tutoriais icoFoam / cavidade
Primeiro, copie o diretrio tutoriais icoFoam:
cp -r $FOAM_TUTORIALS/icoFoam $FOAM_RUN
cd $FOAM_RUN/icoFoam
se voc executar o script Allrun para os tutoriais cavidade icoFoam voc realmente primeiro
executar o caso de cavidade:
# Correndo blockMesh em cavidade:
blockMesh -case cavity
#Running icoFoam on cavity:
icoFoam -case cavity
em seguida, executar o caso cavityFine:
#Cloning cavityFine case from cavity:
mkdir cavityFine
cp -r cavity/{0,system,constant} cavityFine
[change "20 20 1" in blockMeshDict to "41 41 1"]
[set startTime in controlDict to 0.5]
[set endTime in controlDict to 0.7]
[set deltaT in controlDict to 0.0025]
[set writeControl in controlDict to runTime]
[set writeInterval in controlDict to 0.1]
#Running blockMesh on cavityFine
blockMesh -case cavityFine
#Running mapFields from cavity to cavityFine (UserGuide, 6.5)
mapFields cavity -case cavityFine -sourceTime latestTime \
-consistent
#Running icoFoam on cavityFine
icoFoam -case cavityFine
em seguida, executar o caso cavityGrade:
#Running blockMesh on cavityGrade
blockMesh -case cavityGrade
#Running mapFields from cavityFine to cavityGrade
mapFields cavityFine -case cavityGrade \
-sourceTime latestTime -consistent
#Running icoFoam on cavityGrade
icoFoam -case cavityGrade

em seguida, executar o caso cavityHighRe:
#Cloning cavityHighRe case from cavity
mkdir cavityHighRe
cp -r cavity/{0,system,constant} cavityHighRe
#Setting cavityHighRe to generate a secondary vortex
[set startFrom in controlDict to latestTime;]
[set endTime in controlDict to 2.0;]
[change 0.01 in transportProperties to 0.001]
#Copying cavity/0* directory to cavityHighRe
cp -r cavity/0* cavityHighRe
#Running blockMesh on cavityHighRe
blockMesh -case cavityHighRe
#Running icoFoam on cavityHighRe
icoFoam -case cavityHighRe
em seguida, executar o caso cavityClipped:
#Running blockMesh on cavityClipped
blockMesh -case cavityClipped
#Running mapFields from cavity to cavityClipped
cp -r cavityClipped/0 cavityClipped/0.5
mapFields cavity -case cavityClipped -sourceTime latestTime
(no longer consistent, so it uses system/mapFieldsDict)
[Reset the boundary condition for fixedWalls to:]
[ type fixedValue; ]
[ value uniform (0 0 0); ]
[ We do this since the fixedWalls got ]
[ interpolated values by cutting the domain ]
#Running icoFoam on cavityClipped
icoFoam -case cavityClipped
Depois, h tambm o caso do cotovelo Fluente, que no vamos discutir agora.
Voc pode executar um script semelhante, localizado no diretrio de tutoriais, e tambm
chamado
Allrun. Este script ser executado atravs de todos os tutoriais (chama Allrun em cada
solver
diretrio).
Voc pode usar este script como um tutorial de como gerar as malhas, como executar o
solucionadores, como clonar casos, o mapeamento dos resultados entre os diferentes casos
etc.
Encontrar tutoriais para os utilitrios em OpenFOAM
No h tutoriais para os utilitrios, mas podemos procurar exemplos:
find $WM_PROJECT_DIR -name \*Dict | \
grep -v blockMeshDict | grep -v controlDict
Voc vai ter uma lista de exemplos de dicionrios para alguns dos utilitrios.
A maioria dos utilitrios ter argumentos. Encontre as alternativas digitando (para
foamToVTK):
foamToVTK -help
obtendo-se:
Usage: foamToVTK [-noZero] [-surfaceFields] [-ascii]
[-region name] [-faceSet faceSet name] [-nearCellValue]
[-pointSet pointSet name] [-noLinks] [-case dir]
[-excludePatches patches to exclude] [-allPatches]
[-cellSet cellSet name] [-parallel] [-noFaceZones]
[-fields fields] [-constant] [-noPointValues] [-latestTime]
[-noInternal] [-time time] [-help] [-doc] [-srcDoc]
Agora voc deve estar pronto para continuar a explorar as aplicaes por si mesmo.

Das könnte Ihnen auch gefallen