0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
95 Ansichten14 Seiten
Este documento fornece instruções para executar a simulação de cavidade icoFoam no OpenFOAM. Ele explica como configurar a malha, executar a simulação e visualizar os resultados. O tutorial cobre a geração de malha com blockMesh, as configurações nos dicionários controlDict, fvSchemes e fvSolution, e a visualização de resultados com ParaFoam.
Este documento fornece instruções para executar a simulação de cavidade icoFoam no OpenFOAM. Ele explica como configurar a malha, executar a simulação e visualizar os resultados. O tutorial cobre a geração de malha com blockMesh, as configurações nos dicionários controlDict, fvSchemes e fvSolution, e a visualização de resultados com ParaFoam.
Este documento fornece instruções para executar a simulação de cavidade icoFoam no OpenFOAM. Ele explica como configurar a malha, executar a simulação e visualizar os resultados. O tutorial cobre a geração de malha com blockMesh, as configurações nos dicionários controlDict, fvSchemes e fvSolution, e a visualização de resultados com ParaFoam.
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.
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:
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; 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:
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.
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:
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.