You are on page 1of 11

Tutorial para la simulacin de transporte de energa transitoria.

1. Compilacin de un nuevo solucionador


En este tutorial se conseguir la implementacin de un nuevo solucionador para flujos
incompresibles como paquete integrado en OpenFOAM-2.3.1, permitiendo ejecutar casos en los que
se requiere tanto anlisis de velocidad como de temperatura. A este solucionador se le dio el nombre
de energyFoam pero puede llamarse como el usuario final lo desee, solo debe tenerse en cuenta los
cambios que se realizan en el cdigo que involucran el nombre otorgado al solucionador.
A continuacin se enumerarn los pasos a seguir para su correcta compilacin:
1.1

Se copia la carpeta donde est el cdigo del solucionador pisoFoam, que se encuentra
en: /opt/openfoam231/applications/solvers/incompressible/pisoFoam (generalmente debe
buscarse desde la carpeta opt en la raz del disco de instalacin)
1.2
Se cambia el nombre de la carpeta a energyFoam.
1.3
Se cambia el nombre del archivo pisoFoam.c a energyFoam.c
1.4
Se borra el archivo pisoFoam.dep y dentro de la carpeta Make se borran todos los
archivos y carpetas que no sean los archivos files y options.
1.5
Para compilar correctamente en el archivo files de la carpeta Make cambiamos
pisoFoam a energyFoam en los dos renglones correspondientes. Por ltimo se cambia
FOAM_APPBIN a FOAM_USER_APPBIN. Debe quedar:
energyFoam.C
EXE=$(FOAM_USER_APPBIN)/energyFoam

1.6

En el archivo options de la carpeta Make se agregan varias libreras adicionales para


la correcta compilacin del solucionador:

EXE_INC=\
I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel\
I$(LIB_SRC)/transportModels\
$LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel\
I$(LIB_SRC)/finiteVolume/lnInclude\
I$(LIB_SRC)/fvOptions/lnInclude\
I$(LIB_SRC)/meshTools/lnInclude\
I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS=\
lincompressibleTurbulenceModel\
lincompressibleRASModels\

lincompressibleLESModels\
lincompressibleTransportModels\
lfiniteVolume\
lfvOptions\
lmeshTools\
lsampling

1.7

En el archivo createFields.H se debe agregar el cdigo que le permite al solucionador


leer la temperatura y la difusividad trmica. Estas lneas se adicionan antes de la lnea:
#include"createPhi.H"

Info<<"ReadingfieldT\n"<<endl;
volScalarFieldT
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);

Info<<"ReadingtransportProperties\n"<<endl;
IOdictionarytransportProperties
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
Info<<"ReadingdiffusivityDT\n"<<endl;
dimensionedScalarDT
(
transportProperties.lookup("DT")
);

1.8

En el archivo energyFoam.C Se copia #include"fvIOoptionList.H" despus


de #include"fvCFD.H" al principio del archivo.
Y en el mismo archivo energyFoam.c se copia #include "createFvOptions.H"
despus de la linea #include"initContinuityErrs.H"

1.9

Se agrega la ecuacin de transporte de temperatura al archivo energyFoam.C. Para


esto se copia el siguiente segmento en energyFoam.C despus de la correccin por
turbulencia turbulence>correct();

solve
(
fvm::ddt(T)
+fvm::div(phi,T)
fvm::laplacian(DT,T)
==
fvOptions(T)
);

1.10 Se abre una terminal con CTRL+ALT+t y se llega a la ubicacin de la carpeta


energyFoam y se escribe:
cdenergyFoam

y se da enter.
1.11 Estando la terminal y en la ubicacin correcta se escribe wmake y se da enter, con este
paso se da inicio a la compilacin del solucionador, proceso que toma varios minutos.

2 Preparacin de un caso de simulacin.


Si el proceso de compilacin no arroja ningn tipo de error se estar en capacidad de usar el nuevo
solucionador en la ejecucin de un caso de transporte de energa transitorio para flujos
incompresibles. A partir de este momento se realizar una introduccin al proceso de preprocesamiento para ejecutar una simulacin de este tipo por medio de un ejemplo en el que se
solucionar la transferencia de calor en una seccin del ducto de calentamiento de agua en un
colector solar. Para este efecto se copia el caso llamado elbow, que se puede encontrar en los
tutoriales con una ruta similar a:
$home/OpenFOAM/user/run/tutorials/incompressible/icoFoam

Se copia la carpeta elbow en la carpeta personal (o en la ubicacin de preferencia) y se procede a


realizar algunos cambios en los archivos para poder correr el caso con solucin de transporte de
temperatura. Primero se le cambia el nombre a la carpeta por el que se desee, en esta oportunidad se
usa solarCollector.
2.1

Mallado

El proceso de mallado de la geometra puede realizarse de dos formas ya sea generndola


directamente en OpenFOAM o importarla desde una herramienta externa. En este caso se va a usar

una malla que representa la seccin del ducto y que fue generada por medio de la herramienta
ANSYS FLUENT. Es importante recalcar el aprendizaje y uso de herramientas libres (como
SALOME) para estos procesos, en miras de ser coherentes con el tipo de software que se est
usando.
Para importar esta malla en OpenFOAM se abre una terminal en la ubicacin del caso de trabajo y
que contenga la malla antes descrita , por ltimo se escribe:
fluentMeshToFoamelbow.msh

Esto convierte la malla al formato de OpenFOAM, como se puede observar en la ilustracin 1 el


mallado est hecho con elementos triangulares, el dominio de anlisis es en 3D, consiste en un
volumen cilndrico con sus respectivas caras transversales de ingreso y salida de fluido, as como los
agujeros de los bulbosa alta temperatura de cada colector.

Ilustracin 1. Visualizacin de la malla importada.

Si se desea conocer informacin detallada sobre la malla y verificar que no haya problemas con la
conversin se escribe en la terminal checkMesh.
2.2

Preparacin de condiciones iniciales, de borde y propiedades del fluido

Ya que se est importando una malla nueva, se deben realizar los cambios pertinentes a este nuevo
caso. Lo primero que debe hacerse es cambiar las fronteras del nuevo espacio, para esto se revisa el
archivo boundary ubicado en la carpeta .../constant/polyMesh. Aqu se puede observar el
nombre de las superficies que se definieron en el proceso de mallado.
/**C++**\
|=========||

|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.1|
|\\/And|Web:www.OpenFOAM.org|
|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classpolyBoundaryMesh;
location"constant/polyMesh";
objectboundary;
}
//*************************************//
7
(
inlet
{
typepatch;
nFaces76;
startFace101675;
}
outlet
{
typepatch;
nFaces76;
startFace101751;
}
walls
{
typewall;
inGroups1(wall);
nFaces5018;
startFace101827;
}
pipe1
{
typewall;
inGroups1(wall);
nFaces692;
startFace106845;
}
pipe2
{
typewall;
inGroups1(wall);
nFaces712;
startFace107537;
}
pipe3
{
typewall;
inGroups1(wall);

nFaces720;
startFace108249;
}
pipe4
{
typewall;
inGroups1(wall);
nFaces696;
startFace108969;
}
)

Las superficies de este volumen de control son inlet,outlet,walls,pipe1,pipe2,pipe3,


pipe4. Con base en esto se modificarn los archivos que establecen las condiciones de frontera.
En la carpeta 0 del caso copiado solo aparecen dos archivos p y U, pero debido a que la intencin es
simular el trasnporte de temperatura por medio del nuevo solucionador, es necesario crear el archivo
de las condiciones iniciales para esta propiedad. Por esta razn se hace una copia del archivo de p, se
le cambia el nombre a T y se empieza a modificar de tal forma que las lineas de cdigo queden como
se muestra a continuacin, esto permite establecer las nuevas fronteras.
/**C++**\
|=========||
|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.0|
|\\/And|Web:www.OpenFOAM.org|
|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classvolScalarField;
objectT;
}
//*************************************//
dimensions[0001000];
internalFielduniform293.15;
boundaryField
{
walls
{
typezeroGradient;
}
inlet
{
typefixedValue;
valueuniform293.15;
}

outlet
{
typezeroGradient;
}
pipe1
{
typefixedValue;
valueuniform363.15;
}
pipe2
{
typefixedValue;
valueuniform363.15;
}
pipe3
{
typefixedValue;
valueuniform363.15;
}
pipe4
{
typefixedValue;
valueuniform363.15;
}
}
//*************************************************************************//

Este archivo permitir que la temperatura tenga una correcta condicin inicial y de frontera, se puede
apreciar como la pared por la que ingresa el fluido ( inlet para este caso) tiene su respectiva
temperatura especificada. Tambin es apreciable la temperatura de las superficies que representan los
bulbos de cada uno de los colectores, quienes transmitirn la energa al fluido.
Se debe tener en cuenta que en estos tres archivos ( p,U,T) se pueden modificar las condiciones
para cada frontera y su comportamiento para la simulacin. Cambios similares (en lo que refiere a las
superficies del volumen de control) se deben realizar en los archivos U y p. Estos archivos deben
quedar como se muestra a continuacin.
Archivo U:
/**C++**\
|=========||
|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.1|
|\\/And|Web:www.OpenFOAM.org|
|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classvolVectorField;

objectU;
}
//*************************************//
dimensions[0110000];
internalFielduniform(000);
boundaryField
{
walls
{
typefixedValue;
value
uniform(000);
}
inlet
{
typefixedValue;
value
uniform(000.3);
}
outlet
{
typezeroGradient;
}
pipe1
{
typefixedValue;
value
uniform(000);
}
pipe2
{
typefixedValue;
value
uniform(000);
}
pipe3
{
typefixedValue;
value
uniform(000);
}
pipe4
{
typefixedValue;
value
uniform(000);
}
}
//*************************************************************************//

Archivo p:
/**C++**\
|=========||

|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.1|
|\\/And|Web:www.OpenFOAM.org|
|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classvolScalarField;
objectp;
}
//*************************************//
dimensions[0220000];
internalFielduniform0;
boundaryField
{
walls
{
typezeroGradient;
}
inlet
{
typezeroGradient;
}
outlet
{
typefixedValue;
valueuniform0;
}
pipe1
{
typezeroGradient;
}
pipe2
{
typezeroGradient;
}
pipe3
{
typezeroGradient;
}
pipe4
{
typezeroGradient;
}
}
//*************************************************************************//

Debe observarse con detenimiento las condiciones iniciales de cada una de las superficies del
volumen.
Para controlar las propiedades del fluido que se va a transportar se ingresa al archivo
transporProperties, aqu se puede cambiar el valor de la viscosidad cinemtica (en este ejemplo
7 2
se le da un valor de 8 x 10 m / s ). Adicionalmente se debe agregar una linea que contenga el
valor del coeficiente de difusin para poder resolver la ecuacin de temperatura, esta linea puede ser
escrita debajo de la perteneciente a la viscosidad nu.
DTDT[0210000]1.6076E7;

Para finalizar es necesario controlar las propiedades de turbulencia del fluido, por lo que se agregan
dos archivos a la carpeta transporProperties llamados
RASProperties
y
turbulenceProperties, a continuacin se indica el contenido de cada uno de ellos, ste se dispone
de esa forma debido a que el flujo es laminar.

RASProperties

/**C++**\
|=========||
|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.1|
|\\/And|Web:www.OpenFOAM.org|
|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classdictionary;
location"constant";
objectRASProperties;
}
//*************************************//
RASModellaminar;
turbulencefalse;
printCoeffson;
//*************************************************************************//

turbulenceProperties

/**C++**\
|=========||
|\\/Field|OpenFOAM:TheOpenSourceCFDToolbox|
|\\/Operation|Version:2.3.1|
|\\/And|Web:www.OpenFOAM.org|

|\\/Manipulation||
\**/
FoamFile
{
version2.0;
formatascii;
classdictionary;
location"constant";
objectturbulenceProperties;
}
//*************************************//
simulationTypeRASModel;
//*************************************************************************//

2.3

Controles de inicio de simulacin

Se debe verificar en el archivo controlDict los siguientes parmetros


startFrom

latestTime;//Estoaseguraquecadavezquereiniciamoslasimulacin
//arranquedesdeelltimotiempodisponible.
EndTime
3;//Tiempofinaldelasimulacinensegundos
deltaT
0.0005;//Pasotemporalensegundos
writeInterval
100;//Cadacuantospasostemporalesseguardanlosdatos

Esta configuracin permite escribir cada 0.05 los avances de la simulacin y observar un buen
desarrollo del fenmeno a lo largo del tiempo de simulacin pero hace que los resultados ocupen ms
espacio en disco, estos parmetros deben optimizarse.
2.4

Simulacin

Para correr la simulacin abrimos una terminal (CTRL + ALT + t) y accedemos a la carpeta elbow
donde tenemos nuestro caso.
Y luego escribimos energyFoam y damos enter. La simulacin debe arrancar y toma alrededor de 10
min en terminar. Con esto se puede dar paso a la visualizacin y anlisis en paraView. En la
ilustracin 2 se puede apreciar una visualizacin de los campos de velocidad.

You might also like