12
12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 1/12 HPC Wiki / ... / OpenFOAM Formación Tutorial OpenFOAM - Aliviadero Tutorial Tutorial Aliviadero 1: Configuración del caso inicial - el cambio de modelo de turbulencia system / fvSchemes sistema / fvSolution constantes / RASProperties constantes / transportProperties constantes / turbulenceProperties Las condiciones iniciales Exersise 1 2: Creación de malla de fondo y las condiciones de contorno blockMeshDict Las condiciones de contorno Las condiciones iniciales g Exersise 2 Creación de malla con snappyHexMesh: 3 Encontrar un archivo snappyHexMeshDict Creación de una malla alrededor del aliviadero Exersise 3a Creación de regiones de refinamiento (opcional) 3b Ejercicio 3c exersise 4: Creación de una malla 2D con extrudeMesh Ejercicio 4a Ajuste de las condiciones de contorno en el vertedero setFieldsDict 4b Ejercicio 5: Ejecutar el solucionador interFoam controlDict decomposeParDict Iniciar y espere 6: Postprocessing en Paraview Abra la carcasa descompuesta en Paraview Ejercicio 6a Encontrar la elevación de la superficie libre en cualquier punto 6b Ejercicio 6c Ejercicio 6d Ejercicio 7: el trabajo Futher 8: Descargar Tutorial Aliviadero Este tutorial se basa en los casos creados por Nils Reidar Bøe Olsen en el Departamento de Ingeniería Hidráulica y Medio Ambiente. ¡Gracias! El propósito de este tutorial es aprender a crear y análisis de los casos un poco más avanzados en OpenFOAM que los tutoriales suministrados. Esto incluye los siguientes temas: Configuración del modelo de turbulencia Generación de malla con snappyHexMesh Generación de una malla 2D con extrudeMesh Postprocesado avanzada en Paraview, incluyendo la búsqueda y trazado de elevación de la superficie libre El caso se basará en la damBreak tutorial suministrado con OpenFOAM, pero vamos a reunir ejemplos de archivos de otros tutoriales también. En este tutorial vamos a ver unas dimensiones de anchura del vertedero como se muestra en la imagen (no todas las dimensiones están en metros): El agua entrará en el dominio con una velocidad fija a lo largo de la cara izquierda, fluye sobre la presa y fuera a través de la frontera derecha . Las esquinas de la presa se redondea con un radio de 1 metro. Como se sabe, tanto la velocidad del agua y de la zona de la entrada y se fijaron, sabemos que el caudal de agua. En este caso vamos a utilizar 3,6 por unidad de ancho como el flujo del volumen de destino. A medida que la solución alcanza un estado de equilibrio (cuando la descarga sobre la presa llega a ser igual a la cantidad de agua que entra en el depósito), se puede registrar la altura de la superficie libre. Antes de hacer este tutorial, usted debe hacer el clásico cavidad y damBreak tutoriales que vienen con OpenFOAM. Estos tutoriales se describen en la documentación OpenFOAM y en nuestra introducción a OpenFOAM. Para ser capaz de utilizar snappyHexMesh , un STL se necesita archivo con la geometría. Cómo conseguir que este no es un tema aquí, pero hay varias herramientas disponibles. El que se utiliza en este tutorial se genera con Autodesk Inventor , pero otra buena alternativa es FreeCAD , bruja está disponible para todos los sistemas operativos más comunes (Windows, Mac y Linux). Si no desea generar su cuenta, usted puede descargar el utilizado en este tutorial. Advertencia Todo lo que aquí se presenta es para propósitos educativos solamente, y los resultados no se validan en forma alguna. Utilice a su propio riesgo! Original text You will also need to change the dimension fo different from epsilon . Contribute a better translation

OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

Embed Size (px)

Citation preview

Page 1: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 1/12

HPC Wiki / ... / OpenFOAM Formación Tutorial

OpenFOAM - Aliviadero TutorialTutorial Aliviadero

1: Configuración del caso inicial - el cambio de modelo de turbulenciasystem / fvSchemessistema / fvSolutionconstantes / RASPropertiesconstantes / transportPropertiesconstantes / turbulencePropertiesLas condiciones inicialesExersise 1

2: Creación de malla de fondo y las condiciones de contornoblockMeshDictLas condiciones de contornoLas condiciones inicialesgExersise 2

Creación de malla con snappyHexMesh: 3Encontrar un archivo snappyHexMeshDictCreación de una malla alrededor del aliviaderoExersise 3aCreación de regiones de refinamiento (opcional)3b Ejercicio3c exersise

4: Creación de una malla 2D con extrudeMeshEjercicio 4aAjuste de las condiciones de contorno en el vertederosetFieldsDict4b Ejercicio

5: Ejecutar el solucionador interFoamcontrolDictdecomposeParDictIniciar y espere

6: Postprocessing en ParaviewAbra la carcasa descompuesta en ParaviewEjercicio 6aEncontrar la elevación de la superficie libre en cualquier punto6b Ejercicio6c Ejercicio6d Ejercicio

7: el trabajo Futher8: Descargar

Tutorial Aliviadero

Este tutorial se basa en los casos creados por Nils Reidar Bøe Olsen en el Departamento de Ingeniería Hidráulica y Medio Ambiente.¡Gracias!

El propósito de este tutorial es aprender a crear y análisis de los casos un poco más avanzados en OpenFOAM que los tutorialessuministrados. Esto incluye los siguientes temas:

Configuración del modelo de turbulenciaGeneración de malla con snappyHexMeshGeneración de una malla 2D con extrudeMeshPostprocesado avanzada en Paraview, incluyendo la búsqueda y trazado de elevación de la superficie libre

El caso se basará en la damBreak tutorial suministrado con OpenFOAM, pero vamos a reunir ejemplos de archivos de otros tutorialestambién. En este tutorial vamos a ver unas dimensiones de anchura del vertedero como se muestra en la imagen (no todas lasdimensiones están en metros): El agua entrará en el dominio con una velocidad fija a lo largo de la cara izquierda, fluye sobre la presa yfuera a través de la frontera derecha . Las esquinas de la presa se redondea con un radio de 1 metro. Como se sabe, tanto la velocidad delagua y de la zona de la entrada y se fijaron, sabemos que el caudal de agua. En este caso vamos a utilizar 3,6 por unidad de ancho comoel flujo del volumen de destino. A medida que la solución alcanza un estado de equilibrio (cuando la descarga sobre la presa llega a serigual a la cantidad de agua que entra en el depósito), se puede registrar la altura de la superficie libre.

Antes de hacer este tutorial, usted debe hacer el clásico cavidad y damBreak tutoriales que vienen con OpenFOAM. Estos tutoriales sedescriben en la documentación OpenFOAM y en nuestra introducción a OpenFOAM.

Para ser capaz de utilizar snappyHexMesh , un STL se necesita archivo con la geometría. Cómo conseguir que este no es un tema aquí,pero hay varias herramientas disponibles. El que se utiliza en este tutorial se genera con Autodesk Inventor , pero otra buena alternativaes FreeCAD , bruja está disponible para todos los sistemas operativos más comunes (Windows, Mac y Linux). Si no desea generar sucuenta, usted puede descargar el utilizado en este tutorial.

AdvertenciaTodo lo que aquí se presenta es para propósitos educativos solamente, y los resultados no se validan en forma alguna. Utilice asu propio riesgo!

Original text

You will also need to change the dimension for omega , as it isdifferent from epsilon .

Contribute a better translation

Page 2: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 2/12

1: Configuración del caso inicial - el cambio de modelo de turbulencia

Esto es claramente un problema de dos fases, y eso significa que vamos a tener que utilizar el interFoam solucionador. El caso tambiénes claramente turbulento, por lo que tendrá que elegir algún modelo de turbulencia para nuestro problema. Para evitar tener que escribirtodos los archivos de entrada a partir de cero, nos fijamos en el / multifase / interFoam / ras / $ FOAM_TUTORIALScarpeta. Copie el damBreak caso a una carpeta de su elección. Si lo desea, también puede cambiar el nombre a algo más, por ejemplo,aliviadero . En el resto de este tutorial se darán todas las referencias de archivos y carpetas en relación a esta carpeta si no se especificaotra cosa. Puede ser que sea prudente tratar de ejecutar el caso sin ninguna modificación antes de continuar. En los siguientes capítulosvamos a ir a través de todos los archivos que necesita cambiar, y explicar los cambios realizados

system / fvSchemes

Ahora vamos a cambiar del modelo de turbulencia utilizado en el tutorial a un modelo. Eso significa que vamos a tenerque hacer algunos pequeños ajustes en los esquemas de diferenciación. Reemplazar todas las apariciones de épsilon por omega yasegurarse de que el divSchemes sección se ve así:

system / fvSchemes

sistema / fvSolution

En el archivo de sistema / fvSolution , hacer como en el último archivo, y sustituir las ocurrencias de de épsilon con omega .

constantes / RASProperties

Los archivos constantes / RASProperties contienen la información acerca de cuál es el modelo de turbulencia de usar. Cambiardesde kEpsilon a kOmegaSST :

constantes / RASProperties

constantes / transportProperties

La constante / transportProperties archivo no necesita ningún cambio. De todas formas, es aconsejable comprobar que laspropiedades de las dos fases son correctas para el aire y el agua, respectivamente. También es inteligente para asegurarse de que elagua es phase1 , y el aire es phase2 . El solucionador no le importa, pero ya veremos más adelante que tiene agua como phase1 daráalgunas ventajas cuando se trata de la post-procesamiento.

constantes / turbulenceProperties

No hay cambios deben hacerse a la constante / turbulenceProperties archivo, pero de nuevo, lo abren y comprueban quesimulationType es RASModel .

Las condiciones iniciales

Puesto que hemos cambiado el modelo de turbulencia, y una nueva variable omega se ha introducido, debemos crear límites y condicióninicial para esto. Basta con cambiar el nombre de 0/epsilon a 0/omega , abra el archivo y reemplazar todas las apariciones deépsilon con omega , incluyendo el cambio de epsilonWallFunction a omegaWallFunction . La condición inicial no esimportante en esta etapa, y puede por ejemplo ser dejado en el valor actual o el valor 0 (se ajustará más tarde de todos modos).

La dimensión correcta es [0 0 -1 0 0 0 0] .

Exersise 1

Ahora hemos cambiado el modelo de turbulencia a partir de un modelo. Siga el procedimiento en el original damBreaktutorial, y tratar de ejecutar este caso. Si recibe algún mensaje de error, es muy recomendable que usted los corrija antes de continuar.

2: Creación de malla de fondo y las condiciones de contorno

Ver archivos STLSi desea ver el archivo de STL para comprobar que es correcta, Paraview puede abrir y mostrarlo. Utilice la opción "ejesespectáculo cubo" para comprobar que sus dimensiones son correctas. Tenga en cuenta la ubicación del origen!

divSchemes

{

div (rho * phi, U) Gauss lineal;

div (phi, alfa) Vanleer Gauss;

div (phirb, alfa) de Gauss interfaceCompression;

div (phi, k) Gauss contra el viento;

div (phi, omega) Gauss contra el viento;

div (phi, R) Gauss contra el viento;

div lineal (r) de Gauss;

div (phi, nuTilda) Gauss contra el viento;

div ((nuEff * dev (T (grad (U))))) Gauss lineal;

}

RASModel kOmegaSST;

turbulencia en;

printCoeffs sucesivamente;

transportModelDado que tanto el agua y el aire son fluidos newtonial, todos los coeficientes de los pasajes concernientes a otros tipos defluidos, como CrossPowerLawCoeffs y BirdCarreauCoeffs se pueden eliminar si se quiere

Ustedtambién tendrá que cambiar la dimensión de omega , ya que es diferente de épsilon .

Page 3: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 3/12

Antes de que podamos hacer que la malla final con snappyHexMesh , necesitaremos un simple y burdo de malla de fondo. Esto se utilizacomo una base para el engrane en snappyHexMesh . El fondo de malla más o menos define el cuadro de límite y los límites de nuestroproblema. También vamos a establecer las condiciones de contorno en esta fase, pero no incluiremos el aliviadero con todo (esto essnappyHexMesh tarea 's).

blockMeshDict

La malla de fondo se compondrá de dos cajas, una superior y otra inferior. Elegimos el cuadro inferior para estar tan alto como pensamosque el nivel del agua detrás del vertedero será. Esto se debe a que vamos a utilizar la cara del extremo izquierdo de la caja inferior comouna entrada para el agua. Si se elige correctamente la altura, la solución se volverá mejor y más estable. De lo contrario se puedenproducir oscilaciones o las ondas estacionarias en la superficie libre. En el siguiente texto se ha imaginado que el nivel del agua detrásdel vertedero será de aproximadamente un metro por encima de la parte superior, y vamos a crear el cuadro inferior 6 metros de altura. Laaltura de la caja superior se convierte en 2 metros.

Dado que la geometría en este caso es en 2D, y nos quieren "cortar" para el vertedero, y no incluyen los fines, es inteligente como paradejar que la dimensión de la envergadura del aliviadero (como se define en el archivo STL) sobrepase la medida de la envergadura de lamalla, es decir, el máximo y el mínimo de la coordenada del vertedero deben exceder el máximo y el mínimo de la coordenada de la mallaen ambos lados (véase la figura). Si ha utilizado la adjunta archivo STL, puede utilizar el siguiente blockMeshDict directamente, de locontrario usted debe revisar su archivo STL y hacer los ajustes necesarios.

El / Polymesh / blockMeshDict constante archivo debe contener algo como esto si usted está utilizando el archivo STLsuministrado:

constante / Polymesh / blockMeshDict

Recuerde revisar el sistema de referenciaRecuerde revisar la ubicación del origen y direcciones del eje en su archivo-STL. En este caso se supone que el origen seencuentra en la esquina inferior izquierda del aliviadero, y que el eje z está apuntando hacia arriba. Si usted ha hecho su propioarchivo de STL, esto podría ser diferente, y usted debe hacer los cambios necesarios

convertToMeters 1 ;

vértices

(

(- 20 - 0.05 0 )

( 15 - 0.05 0 )

( 15 - 0.05 6 )

( 15 - 0.05 8 )

(- 20 - 0.05 8 )

(- 20 - 0.05 6 )

(- 20 - 0.15 0 )

( 15 - 0.15 0 )

( 15 - 0.15 6 )

( 15 - 0.15 8 )

(- 20 - 0.15 8 )

(- 20 - 0.15 6 )

);

bloques

(

hex ( 0 1 2 5 6 7 8 11 ) ( 350 60 1 ) simpleGrading ( 1 1 1 )

hexagonal ( 5 2 3 4 11 8 9 10 ) ( 350 20 1 ) simpleGrading ( 1 1 1 )

);

bordes

(

);

límite

(

Page 4: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 4/12

Si no está seguro sobre el significado de cualquier cosa en este archivo, consulte con él OpenFOAM documentación .

Las condiciones de contorno

Las condiciones de frontera se establecen en el 0 -carpeta. Dado que, por ejemplo, 0/alpha1 son sustituidos por el setFields utilidad, amenudo es conveniente crear una carpeta 0.org con el límite original y sin modificar y los archivos de las condiciones iniciales. Por lo

inletAir

{

tipo de parche;

caras

(

( 4 5 11 10 )

);

}

inletWater

{

tipo de parche;

caras

(

( 5 0 6 11 )

);

}

salida

{

tipo de parche;

caras

(

( 1 2 8 7 )

( 2 3 9 8 )

);

}

ambiente

{

tipo de parche;

caras

(

( 3 4 10 9 )

);

}

bottomWall

{

escriba pared;

caras

(

( 0 1 7 6 )

);

}

frente

{

escriba vacío;

caras

(

( 1 0 5 2 )

( 2 5 4 3 )

);

}

espalda

{

escriba vacío;

caras

(

( 6 7 8 11 )

( 11 8 9 10 )

);

}

);

mergePatchPairs

(

);

Page 5: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 5/12

tanto copiar todo 0 -carpeta a una nueva carpeta llamada 0.org . Las variables que necesitan condiciones de contorno en la simulaciónson:

alfa1komegap_rghU

Asegúrese de que todos estos archivos están presentes. Si más archivos están presentes (por ejemplo nuTilda , tuerca oalpha1.org ) que se puede eliminar. Para ayudarnos a juzgar las condiciones de contorno para las variables turbulentas k y omega ,

puede utilizar la calculadora de turbulencia CFD-línea . Con un flujo de volumen de destino del 3,6 por unidad de ancho sobre unaaltura de 6 metros, que le dará una entrada (corriente libre) velocidad de 0,6 m / s. Usted puede utilizar sus propios juicios de los nivelesde intensidad de turbulencia y las escalas de longitud (si este vertedero se encuentra en un río o en un gran lago afectará a las decisionesque toma). En este ejemplo hemos utilizado 2% de intensidad de turbulencia con una escala de longitud característica de 0,1 metros.

Las condiciones de contorno que se van a ejecutar a continuación, se convierte en:

alfa1 k omega p_rgh U

inletAir fixedValuede 0

fixedValue de2.16E-4

fixedValue de0.1470

fixedValue de 0 fixedValue de (0 0 0)

inletWater fixedValuede 1

fixedValue de2.16E-4

fixedValue de0.1470

fixedValue de 0 fixedValue de (0.6 0 0)

salida zeroGradient zeroGradient zeroGradient buoyantPressurede 0

zeroGradient

ambiente inletOutlet inletOutlet de2.16E-4

inletOutlet de0.1470

totalPressure pressureInletOutletVelocityde 0

bottomWall zeroGradient kqRWallFunction omegaWallFunction buoyantPressurede 0

fixedValue de (0 0 0)

frente, de atrás,defaultFaces

vacío vacío vacío vacío vacío

Las condiciones de contorno pueden por supuesto ser discutidos. Siéntase libre de modificar las condiciones de contorno, si quieres. Siusted se pregunta por qué se han elegido estas condiciones de contorno, es simplemente porque son las mismas condiciones decontorno que ya está implementando en el caso copiamos en el principio, y sólo algunos nombres de parches y los valores necesitan sercambiadas.

Las condiciones iniciales

Las condiciones iniciales se pueden dar como velocidad constante de 0,6 (0) 0 m / s, con las mismas propiedades turbulentas como laspropiedades Freestream de agua. La presión y la fracción de fase alfa 1 puede tanto ser puesto a cero en el momento.

g

Este tutorial está en el plano XZ con el eje Z apuntando hacia arriba, y hay que comprobar que la gravedad se aplica correctamente, esdecir, la aceleración en la dirección Z negativa. Abra la constante / g de archivos, y cambiar la dirección de la gravedad a:

constante / g

Exersise 2

Ahora hemos hecho una nueva malla, los límites y las condiciones iniciales. Antes de tratar de ejecutar este caso podría ser convenientepara limpiar los resultados de las ejecuciones anteriores. Esto se hace con los foamClearPolyMesh y foamCleanTutorialscomandos. Además de esto, tendremos que mover nuestros archivos iniciales y de contorno de condición de la 0.org -carpeta para el 0-carpeta:

Ventana de Terminal

y ver si funciona. Corrija los errores que usted ha hecho, e inspeccionar los resultados en Paraview. Como la malla se componen derelativamente pocas células de gran tamaño, no debería ser necesario para descomponer el caso y ejecutarlo en paralelo todavía.

Creación de malla con: 3 snappyHexMesh

Ahora es el momento de hacer la (tal vez) la tarea más difícil: para crear una malla con snappyHexMesh . Brefore empezamos en esto, sele recomienda encarecidamente leer la documentación OpenFOAM en snappyHexMesh , ya que la herramienta no es muy intuitivo alprincipio.

Grupos de parchesPuede parches agrupar si dos o más requieren las mismas condiciones de contorno. Si desea utilizar las mismas condiciones,tanto delante , hacia atrás y defaultFaces , puede sustituir el nombre del parche con "(front | espalda |defaultFaces)" .

valor ( 0 0 - 9.81 );

foamClearPolyMesh

foamCleanTutorials

cp 0.org / * 0 /

blockMesh

interFoam

memoria snappyHexMesh yUsted debe ser consciente de que snappyHexMesh es una herramienta 3D puro, y se creará una malla 3D. Se perfeccionará subase de malla varias veces, y cada nivel de refinamiento dividirá cada materia celular para el refinamiento en 8 células nuevas(cada célula original se convierte en una célula 2x2x2). Esto consume mucha memoria, y usted podría potencialmente bloquear el

Page 6: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 6/12

Encontrar un archivo snappyHexMeshDict

Como nadie quiere escribir los archivos de entrada para snappyHexMesh a partir de cero, vamos a copiarlo de uno de los ejemplossuministrados con OpenFOAM. Busque en la FOAM_TUTORIALS / / pimpleDyMFoam / wingMotion /wingMotion_snappyHexMesh / system / incompresible $ carpeta y copiar el snappyHexMeshDict archivo en su sistemade guía. También copiar a su sistema de directorio (vamos a necesitarlo más adelante). Esto se puede hacer con los siguientescomandos en el terminal:

Ventana de Terminal

Creación de una malla alrededor del aliviadero

Lo primero que queremos hacer es "cortar" un agujero en nuestra base de malla, el montaje de esta al aliviadero y luego hacer algunascapas refinados de todo el aliviadero de tal manera que los efectos de las paredes se resuelven correctamente. Aquí vamos a ir a travésdel sistema / snappyHexMeshDict archivo para que los cambios neccesary. Antes de empezar, debe colocar el archivo STL en unacarpeta constante / triSurface . Vamos a suponer que el archivo se llama dam.stl .

Lo primero que hay que hacer en el sistema / snappyHexMeshDict archivo es especificar el archivo STL para su uso. Esto se haceen la geometría de la sección. Retire el ya definido wing_5degrees.obj sección e inserte una nueva para nuestro vertedero:

sistema / snappyHexMeshDict

El refinementBox sección de abajo puede ser comentado, como vamos a modificar esta tarde. Los comentarios son la sintaxis de Cestándar, es decir, se puede agregar una doble barra invertida al principio de cada línea para ser comentada, o utilice el / * algo * /bloque de comentario estilo.

El siguiente parámetro que desea cambiar es el minRefinementcells opción. Para este caso (bastante pequeño y simple), que puedeser fijado a 0, es decir, no vamos a tolerar la presencia de células malas en la superficie refinamiento. nCellsBetweenLevels tambiénse pueden reducir a por ejemplo 3 (esta es la configuración utilizada en este tutorial). Dejarlo como está va a crear una capa derefinamiento más gruesa alrededor del vertedero y una malla con más células en general.

En los refinementSurfaces sección del nombre de la superficie debe ser cambiado de wing_5degrees.obj para represar . Losniveles de refinamiento pueden, por ejemplo, se reducirán de "5 de 5" a "4 5" aquí. Todo dentro de las siguientes refinementRegionstambién debe ser comentada (volveremos a esto más adelante).

locationInMesh es una coordenada que debe estar dentro de su región de malla. Se limita a señalar que parte de la malla que se debemantener después snappyHexMesh ha leído el archivo STL y hecho el chasquido borde. (-2 -0,1 2,5) va a estar bien en este ejemplo.

La última ting que queremos cambiar en el snappyHexMeshDict archivo es que queremos crear algunas capas en las paredes, tanto enel bottomWall y la superficie del vertedero. Este proceso además de la capa es controlada por los ajustes en el addLayersControlsección. Primero cambie el "ala. " por (bottomWall | dam). . Esto significa que tanto la superficie bottomWall y la superficie dela presa tendrán capas añadidas. Usted puede reducir el número de capas de 2 si te gusta. Los otros ajustes se pueden ajustar a ser:

sistema / snappyHexMeshDict

Ninguno de estos valores son esenciales, y es posible que desee jugar con ellos ans ver las diferencias después.

Exersise 3a

Ahora crea la malla:

Ventana de Terminal

Inspeccione el resultado en Paraview. Observe que la malla está completamente en 3D alrededor de la presa. La malla resultante debe seralgo como esto: Trata de jugar con diferentes niveles de refinamiento y averiguar cómo funciona!

equipo. Por lo tanto, antes de ejecutar snappyHexMesh , cierre todos los programas no esenciales, cerca de la mayoría de laspestañas en el navegador (todos excepto este tutorial) y guarde todos los trabajos importantes.

cp

$FOAM_TUTORIALS/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict

system/

cp

$FOAM_TUTORIALS/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/extrudeMeshDict

system/

dam.stl

{

escriba triSurfaceMesh;

nombrar presa;

}

expansionRatio 1,0 ;

finalLayerThickness 0,3 ;

minThickness 0,1 ;

blockMesh

snappyHexMesh-sobrescribir

Page 7: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 7/12

Creación de regiones de refinamiento (opcional)

Si desea resolver mejor la superficie libre es posible que desee crear una malla más fina alrededor de donde nos habíamos imaginado quenuestra superficie libre debe ser (1 metro por encima del vertedero). Abra el sistema / snappyHexMeshDict archivo de nuevo y quitela refinementBox sección en el principio que hemos comentado con anterioridad. Se puede cambiar el nombre a algo que te gusta, porejemplo la superficie . Introduzca las coordenadas tal que encapsula la región que desea refinado. Las coordenadas de la caja puedenexceder las dimensiones de malla, si quieres. El resultado debería ser algo así como:

sistema / snappyHexMeshDict

Las coordenadas deben ser dos esquinas opuestas de la caja, y todos las coordenadas en la esquina mínimo debe ser menor que elvalores de coordenadas en la esquina máximo (es decir, las coordenadas de un vector a partir de min a max todo debe ser positivo).

Ahora tenemos que bajar hasta el refinementRegions sección del archivo. Elimine el comentario refinementBox sección que se hacomentado con anterioridad. Si ha cambiado el nombre de refinementBox anteriormente, usted debe hacer eso aquí también. Para estecaso es probable que sea suficiente con un nivel de refinenemt, así que cambie asegurarse de que la sección se ve así:

sistema / snappyHexMeshDict

El primer número de niveles se ignora para el modo en el interior .

3b Ejercicio

superficie

{

escriba searchableBox;

min (- 15 - 1 4.5 );

máx ( 4 0 7 );

}

refinementRegions

{

superficie

{

el modo en el interior;

niveles ((1E15 1 ));

}

}

Page 8: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 8/12

Vuelva a crear la malla con la nueva configuración:

Ventana de Terminal

Observe que hay ahora es una región refinada alrededor de donde la superficie libre va a ser. Esto le dará una mayor resolución y unainterfase nítida.

3c exersise

Agregar dos nuevas regiones de refinamiento. Uno debe estar en el lado de aguas abajo, y uno debe ser a lo largo de la pared de fondodespués de que el vertedero. Ambas regiones de refinamiento están destinados a captar mejor el flujo atrás.

4: Creación de una malla 2D con extrudeMesh

Como se ha mencionado anteriormente, la malla de snappyHexMesh es una malla 3D. Dependiendo de las decisiones tomadas en ladefinición de las superficies de refinamiento y regiones, el número de células puede variar mucho, pero es probable que tenga una mallacon alguna parte entre 200 000 y 400 000 células. Esto es innecesario y un desperdicio de recursos de cálculo y tiempo en este casosimple. Lo que queremos hacer ahora es tomar la delantera parche de nuestra malla y extruirla 1 célula en la dirección y positiva. Estocreará una nueva malla que es 2D puro. Esto se hace por la herramienta llamada extrudeMesh . Abra el anteriormente copiado sistema/ extrudeMeshDict archivo y establezca la sourceCase a "." .

Ejercicio 4a

Compruebe el número de células en la malla (con la checkMesh comando) antes y después de ejecutar el extrudeMesh comando.Busque también en algunas de las estadísticas que checkMesh le da acerca de la calidad de la malla. Si la malla desaprueba uno o máscheques, usted debe tratar de averiguar la causa del error y solucionarlo.

Ajuste de las condiciones de contorno en el vertedero

Como ya hemos introducido un nuevo parche en nuestro dominio, tenemos que establecer las condiciones de contorno en esto también. Ira través de todos los archivos de la 0.org carpeta, y hacer un nuevo límite con las mismas condiciones de contorno exactas comobottomWall . El nombre de su nuevo límite podría variar, dependiendo de su archivo STL. Si ha creado el archivo con FreeCAD , esprobable que sea nombrado dam_Mesh , y si utilizó Autodesk Inventor, es probable que sea llamado dam_ascii .

setFieldsDict

Para reducir el tiempo de solución, vamos a inicializar el caso del agua detrás del vertedero hasta el borde (z = 5 metros). En el sistema/ setFieldsDict archivo, cambie el cuadro de coordenadas para que encapsula la parte detrás de la presa:

sistema / setFieldsDict

foamClearPolyMesh

blockMesh

snappyHexMesh-sobrescribir

Regiones de refinamientoLa región a lo largo de la pared del fondo se puede crear la misma manera que hemos creado la región alrededor de la superficielibre (con un searchableBox ). La región a lo largo del lado de aguas abajo del aliviadero es por otra parte más fácil creadomediante el uso de tipo searchablePlane . Puedes leer más sobre esto en snappyWiki . Si utiliza el searchablePlanetipo, recuerde que debe establecer la distancia en el nivel de parámetros a algún otro valor que 1E15 metros (por ejemplo 1metro), o toda la malla se refina.

El uso de comodinesOpenFOAM permite el uso de la agrupación y comodines en los nombres de parches. Si desea aplicar las mismas condicionesde contorno en ambos bottomWall y el vertedero, puede agruparlos juntos y utilizar un comodín al final. Use "(bottomWall |dam). *" como el nombre del programa en este caso.

boxToCell

{

caja (- 20 - 1 0 ) ( 3 1 5 );

fieldValues

(

volScalarFieldValue alfa1 1

);

}

Page 9: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 9/12

4b Ejercicio

Tenemos todos nuestros archivos de condición de frontera en una carpeta 0.org , pero hay que ponerlos en la carpeta de 0 . Por lotanto, eliminar todos los archivos que ya están presentes en el 0 carpeta ( snappyHexMesh crea algunos archivos no que se convierte enno válido después de la extrusión de la malla. Esos archivos deben ser eliminados.) y copiar el contenido de 0.org en 0 . Acontinuación, puede utilizar el setFields utilidad para inicializar la fracción de volumen:

Ventana de Terminal

Visualice el resultado en Paraview, y verificar que todo es correcto:

5: Ejecutar el solucionador interFoam

Antes de ejecutar el programa de solución, algunos cambios más deben hacerse a los archivos que controlan la simulación:

controlDict

El sistema / controlDict archivo es el archivo de control principal de la simulación. Abra el archivo, busque las palabras clave yajustar si es necesario para que las líneas son:

sistema / controlDict

Lea el resto de este archivo y asegurarse de que usted entiende lo que significan todos los parámetros. Tenga en cuenta que ahorahemos permitido escala automática paso de tiempo basado en el número de Courant . OpenFOAM tendrá en cada tiempo de iteración

escala del paso de tiempo para satisfacer .

decomposeParDict

El sistema / decomposeParDict archivo controla la descomposición en varios procesos. Puesto que tenemos una direcciónprincipal, que sólo se descompondrá a lo largo del eje x. Asegúrese de que descomponer el dominio en el mismo número de piezas quetiene núcleos de procesamiento disponibles en su ordenador. Usted puede elegir el método de descomposición sencilla ojerárquico como quiera, que se comportan de la misma en este caso. En este ejemplo vamos a usar cuatro procesadores y el métodosimple. El sistema / decomposeParDict archivo a continuación, debe contener:

sistema / decomposeParDict

Iniciar y espere

Ahora está listo para iniciar el análisis. El primero que hacemos es para descomponer el caso, y luego iniciar el solucionador de formaparalela:

Ventana de Terminal

El análisis probablemente tomará varias horas, por lo que puede, por ejemplo, empezar por la tarde, y debería estar listo a la mañana

RM 0 / *

cp 0.org / * 0 /

setFields

endTime 30 ; / / Para simular hasta que las condiciones de estado estacionario

adjustTimeStep sí; / / Con este parámetro, sí OpenFOAM ajustará el paso de tiempo de acuerdo

a Maxco y maxAlphaCo

Maxco 0.5 ; / / Dar el valor del máximo número de Courant

maxAlphaCo 0.5 ; / / Igual que el anterior

numberOfSubdomains 4 ;

método simple;

simpleCoeffs

{

N ( 4 1 1 );

Delta 0.001 ;

}

decomposePar

mpirun-np 4 interFoam paralelo

Page 10: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 10/12

siguiente. Si ha descompuesto en más o menos dominios de 4, esto se debe cambiar en el mpirun comando. Podría ser sabio parainiciar el solucionador, dejarlo funcionar hasta que el tiempo de simulación es de entre 1 y 2 segundos y luego se detiene con Ctrl + C .Abra la caja de Paraview como se describe a continuación y comprobar que las obras cosa. Entonces usted puede comenzar de nuevo lasimulación con mpirun-np 4 interFoam paralelo .

6: Postprocessing en Paraview

Cuando finalice el análisis, es el momento de encontrar la respuesta a la pregunta original: dado un caudal de 3.6 , ¿cuál es el niveldel agua detrás del vertedero ? Esto se puede encontrar con las herramientas de post-procesamiento en Paraview.

Cuando se trata de administrar Paraview, usted tiene dos opciones:

1. Recomponer el caso de reconstructPar como se enseña en el original damBreak tutorial y abra Paraview con PARAFOAM .2. Crear un archivo vacío llamado spillway.foam (o alguna otra cosa que termina en . espuma ), abra el archivo (vacío) en

Paraview (sin reconstrucción es necesario). La última opción es sin duda el más rápido, y se utiliza aquí.

Abra la carcasa descompuesta en Paraview

Para crear un archivo vacío, podemos usar el tacto de comandos. Luego abrimos el archivo en Paraview:

Ventana de Terminal

Ahora debe recordar para seleccionar "tipo de caso" de ser "caso descompuesto" en la barra de la izquierda antes de pulsar "Aplicar":

Ejercicio 6a

Mira los resultados de la reproducción de la animación. ¿El resultado parece ser razonable? ¿Qué tan bien era nuestra idea inicial sobreel nivel del agua detrás de la presa?

Encontrar la elevación de la superficie libre en cualquier punto

Para encontrar la elevación de la superficie libre en un punto al principio puede parecer un poco difícil, ya que Paraview no tiene tal"herramienta de elevación de la superficie". Otra dificultad es que la propia OpenFOAM no resuelve para la elevación de la superficie, que

resuelve para la fracción de volumen . Eso significa que al menos tendremos unacélula, probablemente más, donde la fracción de volumen es en algún lugar de la región . Hay (al menos) dos formas comunespara encontrar la elevación de la superficie de la fracción de volumen:

1. Ejemplo de la fracción de volumen a lo largo de una línea vertical paralelo al eje z de cruzar la superficie libre, y utilizar lainterpolación para encontrar dónde .

2. Integrar la fracción de volumen de la parte inferior de su dominio a la atmósfera a lo largo de una línea paralela al eje z:

El último método se utiliza aquí, ya que es fácil implementables en Paraview utilizando herramientas estándar.

Lo primero que tenemos que hacer es tomar muestras de la fracción de volumen a lo largo de una línea. Esto se hace mediante el uso dela parcela borde utilidad, que se encuentra bajo Filtros -> Análisis de datos . Crear una línea desde la parte inferior de su dominio a laparte superior. En la pestaña "Pantalla", anule la selección de todas las demás variables que alfa1 . Recuerde que con el paso a la últimatimestep de su simulación.

tocar spillway.foam

paraview spillway.foam

Page 11: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 11/12

Ahora queremos integrar la fracción de volumen a lo largo de esta línea. Esto se hace por el integrar las variables herramienta, también seencuentra en Filtros -> Análisis de Datos . Pulse el botón "Apply", y ves las variables integradas. Entonces deseamos trazar esta variableintegrada en el tiempo, para que podamos ver cómo la elevación de la superficie libre cambia durante la simulación. Esto se hace con laSelección Parcela lo largo del tiempo de la herramienta, y ahora se puede adivinar a ti mismo dónde encontrarlo. Seleccione la fila de latabla con las variables integradas, y seleccione "Copiar selección activa". A continuación, pulse "Aplicar" y esperar. Esto puede llevaralgún tiempo, ya que muestra la fracción de volumen e integrarla en cada paso de tiempo almacenado. Ir y tomar una taza de cafémientras esperas. Después de que el proceso ha terminado, puede anular la selección de las variables que no sean necesarios en latrama. El espacio de trabajo Paraview resultante ahora se ve algo como esto: El desarrollo elevación de la superficie resultante en eltiempo es: En este ejemplo, la simulación se procedió a 45 segundos, y como podemos ver, la elevación de la superficie es más o menosconvergente.

Page 12: OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

12/3/13 OpenFOAM - Aliviadero Tutorial - HPC Wiki - Confluence

https://www.hpc.ntnu.no/display/hpc/OpenFOAM+-+Spillway+Tutorial 12/12

6b Ejercicio

Crea tu propia imagen y ilustrativos de los resultados, con los del aliviadero, líneas de corriente y un isosuperficie al alfa1 = 0,5 (lo quequiere decir eso?) (Timestep final).

6c Ejercicio

Reinicie la simulación y correr otros 15 segundos (si detuvo a 30 segundos). Vuelva a ejecutar el post-procesamiento y compruebe ladiferencia de elevación de la superficie final. Ha convergido la solución?

6d Ejercicio

Use la utilidad "calculadora" en Paraview, y calcular el caudal de agua del dominio en cualquier momento. El procedimiento es más omenos el mismo que cuando se trazó la elevación de la superficie libre. Tiene 30 segundos de tiempo de simulación suficiente paraalcanzar el estado de equilibrio?

7: el trabajo Futher

Hay un montón de ejercicios interesantes que se pueden hacer sobre la base de este tutorial. Éstos son algunos de ellos:

1. Ajuste la altura de la zona de entrada (y la velocidad de flujo de entrada) para que coincida con la elevación de la superficie libre degrabado previamente. ¿Esto cambia los resultados?

2. Al hacer simulaciones de CFD (y otras simulaciones también) es común para hacer la malla tan fina como los recursos decomputación permiten dentro de los límites de su tiempo de solución deseada. Ahora intenta hacer que la malla de fondo tangruesa como sea posible, hacer mejoras donde sea necesario, y ver qué tan bajo se puede obtener el tiempo de solución!

3. ¿Es la "longitud de entrada" (la longitud desde la entrada a la presa) el tiempo suficiente? Será un tiempo cambiar la entrada deelevación de la superficie?

4. Lea sobre swak4Foam y seguir el ejemplo básico determinado para medir la elevación de superficie en tiempo de ejecución y haceruna entrada nueva y mejor.

8: Descargar

Puede descargar todos los expedientes necesarios en spillway.tar.gz . Scripts para ejecutar y limpiar la caja también se adjunta.

Bug en ParaviewEn el momento de escribir no es un error en Paraview cuando se utiliza "Parcela de selección a través del tiempo" con el lectorOpenFOAM paralelo (es decir, cuando Paraview lee el caso descompuesto directamente como se describe aquí). El resultado esmiles de mensajes de error y sin argumento de elevación de la superficie con el tiempo. Una posible solución consiste enreconstruir el caso paralelo con el comando reconstructPar y abierto Paraview con PARAFOAM .