openfoam - aliviadero tutorial - hpc wiki - confluence

Upload: luis-fernando-castro-inga

Post on 02-Mar-2016

279 views

Category:

Documents


2 download

TRANSCRIPT

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

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

    HPC Wiki / ... / OpenFOAM Formacin Tutorial

    OpenFOAM - Aliviadero TutorialTutorial Aliviadero

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

    2: Creacin de malla de fondo y las condiciones de contornoblockMeshDictLas condiciones de contornoLas condiciones inicialesgExersise 2

    Creacin de malla con snappyHexMesh: 3Encontrar un archivo snappyHexMeshDictCreacin de una malla alrededor del aliviaderoExersise 3aCreacin de regiones de refinamiento (opcional)3b Ejercicio3c exersise

    4: Creacin 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 elevacin 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 Be Olsen en el Departamento de Ingeniera Hidrulica y Medio Ambiente.Gracias!

    El propsito de este tutorial es aprender a crear y anlisis de los casos un poco ms avanzados en OpenFOAM que los tutorialessuministrados. Esto incluye los siguientes temas:

    Configuracin del modelo de turbulenciaGeneracin de malla con snappyHexMeshGeneracin de una malla 2D con extrudeMeshPostprocesado avanzada en Paraview, incluyendo la bsqueda y trazado de elevacin de la superficie libre

    El caso se basar en la damBreak tutorial suministrado con OpenFOAM, pero vamos a reunir ejemplos de archivos de otros tutorialestambin. En este tutorial vamos a ver unas dimensiones de anchura del vertedero como se muestra en la imagen (no todas lasdimensiones estn 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 travs 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 solucin alcanza un estado de equilibrio (cuando la descarga sobre la presa llega a serigual a la cantidad de agua que entra en el depsito), se puede registrar la altura de la superficie libre.

    Antes de hacer este tutorial, usted debe hacer el clsico cavidad y damBreak tutoriales que vienen con OpenFOAM. Estos tutoriales sedescriben en la documentacin OpenFOAM y en nuestra introduccin a OpenFOAM.

    Para ser capaz de utilizar snappyHexMesh , un STL se necesita archivo con la geometra. Cmo 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 ms 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 propsitos 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

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

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

    1: Configuracin 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 tambines claramente turbulento, por lo que tendr que elegir algn 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 eleccin. Si lo desea, tambin puede cambiar el nombre a algo ms, por ejemplo,aliviadero . En el resto de este tutorial se darn todas las referencias de archivos y carpetas en relacin a esta carpeta si no se especificaotra cosa. Puede ser que sea prudente tratar de ejecutar el caso sin ninguna modificacin antes de continuar. En los siguientes captulosvamos a ir a travs 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 pequeos ajustes en los esquemas de diferenciacin. Reemplazar todas las apariciones de psilon por omega yasegurarse de que el divSchemes seccin 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 informacin acerca de cul es el modelo de turbulencia de usar. Cambiardesde kEpsilon a kOmegaSST :

    constantes / RASProperties

    constantes / transportProperties

    La constante / transportProperties archivo no necesita ningn cambio. De todas formas, es aconsejable comprobar que laspropiedades de las dos fases son correctas para el aire y el agua, respectivamente. Tambin es inteligente para asegurarse de que elagua es phase1 , y el aire es phase2 . El solucionador no le importa, pero ya veremos ms adelante que tiene agua como phase1 daralgunas 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 lmites y condicininicial para esto. Basta con cambiar el nombre de 0/epsilon a 0/omega , abra el archivo y reemplazar todas las apariciones depsilon con omega , incluyendo el cambio de epsilonWallFunction a omegaWallFunction . La condicin inicial no esimportante en esta etapa, y puede por ejemplo ser dejado en el valor actual o el valor 0 (se ajustar ms tarde de todos modos).

    La dimensin 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 algn mensaje de error, es muy recomendable que usted los corrija antes de continuar.

    2: Creacin 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 opcin "ejesespectculo cubo" para comprobar que sus dimensiones son correctas. Tenga en cuenta la ubicacin 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

    Ustedtambin tendr que cambiar la dimensin de omega , ya que es diferente de psilon .

  • 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 ms o menos define el cuadro de lmite y los lmites de nuestroproblema. Tambin 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 detrs 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 solucin se volver mejor y ms 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 detrsdel 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 geometra en este caso es en 2D, y nos quieren "cortar" para el vertedero, y no incluyen los fines, es inteligente como paradejar que la dimensin de la envergadura del aliviadero (como se define en el archivo STL) sobrepase la medida de la envergadura de lamalla, es decir, el mximo y el mnimo de la coordenada del vertedero deben exceder el mximo y el mnimo de la coordenada de la mallaen ambos lados (vase 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 ubicacin 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 podra ser diferente, y usted debe hacer los cambios necesarios

    convertToMeters 1 ;

    vrtices

    (

    (- 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

    (

    );

    lmite

    (

  • 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 documentacin .

    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 lmite 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 vaco;

    caras

    (

    ( 1 0 5 2 )

    ( 2 5 4 3 )

    );

    }

    espalda

    {

    escriba vaco;

    caras

    (

    ( 6 7 8 11 )

    ( 11 8 9 10 )

    );

    }

    );

    mergePatchPairs

    (

    );

  • 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 simulacinson:

    alfa1komegap_rghU

    Asegrese de que todos estos archivos estn presentes. Si ms archivos estn 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-lnea . 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 ro 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 caracterstica de 0,1 metros.

    Las condiciones de contorno que se van a ejecutar a continuacin, 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 atrs,defaultFaces

    vaco vaco vaco vaco vaco

    Las condiciones de contorno pueden por supuesto ser discutidos. Sintase 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 slo 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 presin y la fraccin 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 aceleracin en la direccin Z negativa. Abra la constante / g de archivos, y cambiar la direccin de la gravedad a:

    constante / g

    Exersise 2

    Ahora hemos hecho una nueva malla, los lmites y las condiciones iniciales. Antes de tratar de ejecutar este caso podra ser convenientepara limpiar los resultados de las ejecuciones anteriores. Esto se hace con los foamClearPolyMesh y foamCleanTutorialscomandos. Adems de esto, tendremos que mover nuestros archivos iniciales y de contorno de condicin 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 clulas de gran tamao, no debera ser necesario para descomponer el caso y ejecutarlo en paralelo todava.

    Creacin de malla con: 3 snappyHexMesh

    Ahora es el momento de hacer la (tal vez) la tarea ms difcil: para crear una malla con snappyHexMesh . Brefore empezamos en esto, sele recomienda encarecidamente leer la documentacin OpenFOAM en snappyHexMesh , ya que la herramienta no es muy intuitivo alprincipio.

    Grupos de parchesPuede parches agrupar si dos o ms requieren las mismas condiciones de contorno. Si desea utilizar las mismas condiciones,tanto delante , hacia atrs 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 clulas nuevas(cada clula original se convierte en una clula 2x2x2). Esto consume mucha memoria, y usted podra potencialmente bloquear el

  • 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 gua. Tambin copiar a su sistema de directorio (vamos a necesitarlo ms adelante). Esto se puede hacer con los siguientescomandos en el terminal:

    Ventana de Terminal

    Creacin 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 travsdel 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 geometra de la seccin. Retire el ya definido wing_5degrees.obj seccin e inserte una nueva para nuestro vertedero:

    sistema / snappyHexMeshDict

    El refinementBox seccin de abajo puede ser comentado, como vamos a modificar esta tarde. Los comentarios son la sintaxis de Cestndar, es decir, se puede agregar una doble barra invertida al principio de cada lnea para ser comentada, o utilice el / * algo * /bloque de comentario estilo.

    El siguiente parmetro que desea cambiar es el minRefinementcells opcin. Para este caso (bastante pequeo y simple), que puedeser fijado a 0, es decir, no vamos a tolerar la presencia de clulas malas en la superficie refinamiento. nCellsBetweenLevels tambinse pueden reducir a por ejemplo 3 (esta es la configuracin utilizada en este tutorial). Dejarlo como est va a crear una capa derefinamiento ms gruesa alrededor del vertedero y una malla con ms clulas en general.

    En los refinementSurfaces seccin del nombre de la superficie debe ser cambiado de wing_5degrees.obj para represar . Losniveles de refinamiento pueden, por ejemplo, se reducirn de "5 de 5" a "4 5" aqu. Todo dentro de las siguientes refinementRegionstambin debe ser comentada (volveremos a esto ms adelante).

    locationInMesh es una coordenada que debe estar dentro de su regin de malla. Se limita a sealar que parte de la malla que se debemantener despus snappyHexMesh ha ledo 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 adems de la capa es controlada por los ajustes en el addLayersControlseccin. Primero cambie el "ala. " por (bottomWall | dam). . Esto significa que tanto la superficie bottomWall y la superficie dela presa tendrn capas aadidas. Usted puede reducir el nmero 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 despus.

    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 cmo funciona!

    equipo. Por lo tanto, antes de ejecutar snappyHexMesh , cierre todos los programas no esenciales, cerca de la mayora de laspestaas 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

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

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

    Creacin de regiones de refinamiento (opcional)

    Si desea resolver mejor la superficie libre es posible que desee crear una malla ms fina alrededor de donde nos habamos imaginado quenuestra superficie libre debe ser (1 metro por encima del vertedero). Abra el sistema / snappyHexMeshDict archivo de nuevo y quitela refinementBox seccin 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 regin que desea refinado. Las coordenadas de la caja puedenexceder las dimensiones de malla, si quieres. El resultado debera ser algo as como:

    sistema / snappyHexMeshDict

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

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

    sistema / snappyHexMeshDict

    El primer nmero de niveles se ignora para el modo en el interior .

    3b Ejercicio

    superficie

    {

    escriba searchableBox;

    min (- 15 - 1 4.5 );

    mx ( 4 0 7 );

    }

    refinementRegions

    {

    superficie

    {

    el modo en el interior;

    niveles ((1E15 1 ));

    }

    }

  • 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 configuracin:

    Ventana de Terminal

    Observe que hay ahora es una regin refinada alrededor de donde la superficie libre va a ser. Esto le dar una mayor resolucin y unainterfase ntida.

    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 fondodespus de que el vertedero. Ambas regiones de refinamiento estn destinados a captar mejor el flujo atrs.

    4: Creacin 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 ladefinicin de las superficies de refinamiento y regiones, el nmero de clulas puede variar mucho, pero es probable que tenga una mallacon alguna parte entre 200 000 y 400 000 clulas. Esto es innecesario y un desperdicio de recursos de clculo y tiempo en este casosimple. Lo que queremos hacer ahora es tomar la delantera parche de nuestra malla y extruirla 1 clula en la direccin 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 nmero de clulas en la malla (con la checkMesh comando) antes y despus de ejecutar el extrudeMesh comando.Busque tambin en algunas de las estadsticas que checkMesh le da acerca de la calidad de la malla. Si la malla desaprueba uno o mscheques, 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 tambin. Ira travs de todos los archivos de la 0.org carpeta, y hacer un nuevo lmite con las mismas condiciones de contorno exactas comobottomWall . El nombre de su nuevo lmite podra 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 solucin, vamos a inicializar el caso del agua detrs del vertedero hasta el borde (z = 5 metros). En el sistema/ setFieldsDict archivo, cambie el cuadro de coordenadas para que encapsula la parte detrs de la presa:

    sistema / setFieldsDict

    foamClearPolyMesh

    blockMesh

    snappyHexMesh-sobrescribir

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

    El uso de comodinesOpenFOAM permite el uso de la agrupacin 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 comodn 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

    );

    }

  • 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 condicin de frontera en una carpeta 0.org , pero hay que ponerlos en la carpeta de 0 . Por lotanto, eliminar todos los archivos que ya estn presentes en el 0 carpeta ( snappyHexMesh crea algunos archivos no que se convierte enno vlido despus de la extrusin de la malla. Esos archivos deben ser eliminados.) y copiar el contenido de 0.org en 0 . Acontinuacin, puede utilizar el setFields utilidad para inicializar la fraccin 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 solucin, algunos cambios ms deben hacerse a los archivos que controlan la simulacin:

    controlDict

    El sistema / controlDict archivo es el archivo de control principal de la simulacin. Abra el archivo, busque las palabras clave yajustar si es necesario para que las lneas son:

    sistema / controlDict

    Lea el resto de este archivo y asegurarse de que usted entiende lo que significan todos los parmetros. Tenga en cuenta que ahorahemos permitido escala automtica paso de tiempo basado en el nmero de Courant . OpenFOAM tendr en cada tiempo de iteracin

    escala del paso de tiempo para satisfacer .

    decomposeParDict

    El sistema / decomposeParDict archivo controla la descomposicin en varios procesos. Puesto que tenemos una direccinprincipal, que slo se descompondr a lo largo del eje x. Asegrese de que descomponer el dominio en el mismo nmero de piezas quetiene ncleos de procesamiento disponibles en su ordenador. Usted puede elegir el mtodo de descomposicin sencilla ojerrquico como quiera, que se comportan de la misma en este caso. En este ejemplo vamos a usar cuatro procesadores y el mtodosimple. El sistema / decomposeParDict archivo a continuacin, debe contener:

    sistema / decomposeParDict

    Iniciar y espere

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

    Ventana de Terminal

    El anlisis probablemente tomar varias horas, por lo que puede, por ejemplo, empezar por la tarde, y debera estar listo a la maana

    RM 0 / *

    cp 0.org / * 0 /

    setFields

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

    adjustTimeStep s; / / Con este parmetro, s OpenFOAM ajustar el paso de tiempo de acuerdo

    a Maxco y maxAlphaCo

    Maxco 0.5 ; / / Dar el valor del mximo nmero de Courant

    maxAlphaCo 0.5 ; / / Igual que el anterior

    numberOfSubdomains 4 ;

    mtodo simple;

    simpleCoeffs

    {

    N ( 4 1 1 );

    Delta 0.001 ;

    }

    decomposePar

    mpirun-np 4 interFoam paralelo

  • 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 ms o menos dominios de 4, esto se debe cambiar en el mpirun comando. Podra ser sabio parainiciar el solucionador, dejarlo funcionar hasta que el tiempo de simulacin es de entre 1 y 2 segundos y luego se detiene con Ctrl + C .Abra la caja de Paraview como se describe a continuacin y comprobar que las obras cosa. Entonces usted puede comenzar de nuevo lasimulacin con mpirun-np 4 interFoam paralelo .

    6: Postprocessing en Paraview

    Cuando finalice el anlisis, es el momento de encontrar la respuesta a la pregunta original: dado un caudal de 3.6 , cul es el niveldel agua detrs 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 ensea en el original damBreak tutorial y abra Paraview con PARAFOAM .2. Crear un archivo vaco llamado spillway.foam (o alguna otra cosa que termina en . espuma ), abra el archivo (vaco) en

    Paraview (sin reconstruccin es necesario). La ltima opcin es sin duda el ms rpido, y se utiliza aqu.

    Abra la carcasa descompuesta en Paraview

    Para crear un archivo vaco, 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 reproduccin de la animacin. El resultado parece ser razonable? Qu tan bien era nuestra idea inicial sobreel nivel del agua detrs de la presa?

    Encontrar la elevacin de la superficie libre en cualquier punto

    Para encontrar la elevacin de la superficie libre en un punto al principio puede parecer un poco difcil, ya que Paraview no tiene tal"herramienta de elevacin de la superficie". Otra dificultad es que la propia OpenFOAM no resuelve para la elevacin de la superficie, que

    resuelve para la fraccin de volumen . Eso significa que al menos tendremos unaclula, probablemente ms, donde la fraccin de volumen es en algn lugar de la regin . Hay (al menos) dos formas comunespara encontrar la elevacin de la superficie de la fraccin de volumen:

    1. Ejemplo de la fraccin de volumen a lo largo de una lnea vertical paralelo al eje z de cruzar la superficie libre, y utilizar lainterpolacin para encontrar dnde .

    2. Integrar la fraccin de volumen de la parte inferior de su dominio a la atmsfera a lo largo de una lnea paralela al eje z:

    El ltimo mtodo se utiliza aqu, ya que es fcil implementables en Paraview utilizando herramientas estndar.

    Lo primero que tenemos que hacer es tomar muestras de la fraccin de volumen a lo largo de una lnea. Esto se hace mediante el uso dela parcela borde utilidad, que se encuentra bajo Filtros -> Anlisis de datos . Crear una lnea desde la parte inferior de su dominio a laparte superior. En la pestaa "Pantalla", anule la seleccin de todas las dems variables que alfa1 . Recuerde que con el paso a la ltimatimestep de su simulacin.

    tocar spillway.foam

    paraview spillway.foam

  • 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 fraccin de volumen a lo largo de esta lnea. Esto se hace por el integrar las variables herramienta, tambin seencuentra en Filtros -> Anlisis de Datos . Pulse el botn "Apply", y ves las variables integradas. Entonces deseamos trazar esta variableintegrada en el tiempo, para que podamos ver cmo la elevacin de la superficie libre cambia durante la simulacin. Esto se hace con laSeleccin Parcela lo largo del tiempo de la herramienta, y ahora se puede adivinar a ti mismo dnde encontrarlo. Seleccione la fila de latabla con las variables integradas, y seleccione "Copiar seleccin activa". A continuacin, pulse "Aplicar" y esperar. Esto puede llevaralgn tiempo, ya que muestra la fraccin de volumen e integrarla en cada paso de tiempo almacenado. Ir y tomar una taza de cafmientras esperas. Despus de que el proceso ha terminado, puede anular la seleccin de las variables que no sean necesarios en latrama. El espacio de trabajo Paraview resultante ahora se ve algo como esto: El desarrollo elevacin de la superficie resultante en eltiempo es: En este ejemplo, la simulacin se procedi a 45 segundos, y como podemos ver, la elevacin de la superficie es ms o menosconvergente.

  • 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, lneas de corriente y un isosuperficie al alfa1 = 0,5 (lo quequiere decir eso?) (Timestep final).

    6c Ejercicio

    Reinicie la simulacin y correr otros 15 segundos (si detuvo a 30 segundos). Vuelva a ejecutar el post-procesamiento y compruebe ladiferencia de elevacin de la superficie final. Ha convergido la solucin?

    6d Ejercicio

    Use la utilidad "calculadora" en Paraview, y calcular el caudal de agua del dominio en cualquier momento. El procedimiento es ms omenos el mismo que cuando se traz la elevacin de la superficie libre. Tiene 30 segundos de tiempo de simulacin suficiente paraalcanzar el estado de equilibrio?

    7: el trabajo Futher

    Hay un montn 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 elevacin de la superficie libre degrabado previamente. Esto cambia los resultados?

    2. Al hacer simulaciones de CFD (y otras simulaciones tambin) es comn para hacer la malla tan fina como los recursos decomputacin permiten dentro de los lmites de su tiempo de solucin 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 solucin!

    3. Es la "longitud de entrada" (la longitud desde la entrada a la presa) el tiempo suficiente? Ser un tiempo cambiar la entrada deelevacin de la superficie?

    4. Lea sobre swak4Foam y seguir el ejemplo bsico determinado para medir la elevacin de superficie en tiempo de ejecucin 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 tambin se adjunta.

    Bug en ParaviewEn el momento de escribir no es un error en Paraview cuando se utiliza "Parcela de seleccin a travs 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 elevacin de la superficie con el tiempo. Una posible solucin consiste enreconstruir el caso paralelo con el comando reconstructPar y abierto Paraview con PARAFOAM .