CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   buoyantBoussinesqSimpleFoam with ExternalHeatFluxTemperature (https://www.cfd-online.com/Forums/openfoam-solving/193809-buoyantboussinesqsimplefoam-externalheatfluxtemperature.html)

mozeven October 3, 2017 16:55

buoyantBoussinesqSimpleFoam with ExternalHeatFluxTemperature
 
Dear Community,

I am trying to simulate the flow through a simple heat exchanger. What I am trying to simulate (simplified) is a peltier dumping heat into a heatexchanger. Below you can find a figure explaining the simplified setup.
https://i.imgur.com/nMjElwk.png

https://i.imgur.com/N1sH75b.png

I am using openFoam V5.0. My case is set up to use the buoyantBoussinesqSimpleFoam solver.
Please find the full case here:
Full case

My model is running and converging when using fixed temperature boundary conditions. However, I have not understood how to add a heat flux boundary condition. I tried to use the externalWallHeatFluxTemperature boundary condition, but was not able to set it up correctly.
checkMesh returns the following:
https://www.dropbox.com/s/hik8gp0oua...kMesh.log?dl=0
https://i.imgur.com/fEvnu8Z.png

https://www.dropbox.com/s/2tioav0723...vSolution?dl=0

https://www.dropbox.com/s/t19m0dqd5t...fvSchemes?dl=0


The T file is as follows:
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  4.1                                  |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      volScalarField;
    location    "0";
    object      T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 0 0 1 0 0 0];

internalField  uniform 275;

boundaryField
{
    wall
    {
      type          externalWallHeatFluxTemperature;
      mode          power;
      Q            500;
      kappaMethod        fluidThermo;
      kappaName                default;
      Ta            constant 350.0;
      value        uniform 350;
    }
    inlet
    {
        type        fixedValue;
        value        uniform 275;

    }
    outlet
    {
      type  zeroGradient;
    }
}


// ************************************************************************* //

The output (including the error) I get is the following:
Code:

/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  5.0                                  |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
Build  : 5.0-dbb428a3a855
Exec  : buoyantBoussinesqSimpleFoam
Date  : Oct 02 2017
Time  : 23:52:47
Host  : "kasper-PC"
PID    : 16539
I/O    : uncollated
Case  : /home/kasper/OpenFOAM/kasper-5.0/run/HeatBlock_power
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0

SIMPLE: convergence criteria
    field p_rgh        tolerance 0.01
    field U        tolerance 0.0001
    field T        tolerance 0.001
    field "(k|epsilon|omega)"        tolerance 0.001

Reading thermophysical properties

Reading field T

Reading field p_rgh

Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Creating turbulence model

Selecting turbulence model type RAS
Selecting RAS turbulence model kEpsilon
RAS
{
    RASModel        kEpsilon;
    turbulence      on;
    printCoeffs    on;
    Cmu            0.09;
    C1              1.44;
    C2              1.92;
    C3              0;
    sigmak          1;
    sigmaEps        1.3;
}

Reading field alphat

Reading g

Reading hRef
Calculating field g.h

No MRF models present

Radiation model not active: radiationProperties not found
Selecting radiationModel none
No finite volume options present

Starting time loop

Time = 1

DILUPBiCG:  Solving for Ux, Initial residual = 1, Final residual = 0.0157593, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 0.0157414, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 1, Final residual = 0.0187311, No Iterations 1

--> FOAM FATAL ERROR:
Kappa defined to employ fluidThermo method, but thermo package not available

    From function Foam::tmp<Foam::Field<double> > Foam::temperatureCoupledBase::kappa(const scalarField&) const
    in file turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C at line 135.
FOAM exiting


Can someone point me to a minimum working example using buoyantBoussinesqSimpleFoam and externalWallHeatFlux? Or tell me what I am doing wrong?

For information, my next step in this model will be to include the body of the heat exchanger as a solid and have the heatflux boundary condition on one of the walls of the solid. I intend to do that by changing the solver to chtMultiRegionSimpleFoam. This is why in my current model I did not separate a single wall to apply the heatflux to as the wall from the fluid domain will be touching the solid.

I hope to have given enough information for someone to be able to give me some pointers on what I am doing wrong. If more information is required, please ask.

Thanks in advance,

Kasper

Quadrolabs October 3, 2017 22:00

Hello kasper.

Actually I dont know about fixedWallHeatFluxTemperature but for specifying heat flux from wall as boundary condition there is one way. You can specify it as fixedGradient in the temperature file. The gradient can be found from fourier law of heat conduction Q = -k(dT/dy). so you are calculating
dT/dy = -Q/k.

I hope this will solve your problem. In case if you find someother method kindly update.


Thank you.

mozeven October 4, 2017 02:53

Quote:

Originally Posted by Quadrolabs (Post 666491)
Hello kasper.

Actually I dont know about fixedWallHeatFluxTemperature but for specifying heat flux from wall as boundary condition there is one way. You can specify it as fixedGradient in the temperature file. The gradient can be found from fourier law of heat conduction Q = -k(dT/dy). so you are calculating
dT/dy = -Q/k.

I hope this will solve your problem. In case if you find someother method kindly update.


Thank you.

Thanks for that tip. I will give that a try tonight.
However, I still don't see why the externalWallHeatFluxTemperature BC doesn't work. Looking at the documentation I don't see what I am doing wrong. Someone more experienced than me might find something obvious.

Kind regards,

Kasper

tomf October 4, 2017 05:32

Hello Kasper,

The problem you are facing stems from the fact that buoyantBoussinesqSimpleFoam is for incompressible fluids, while the externalWallHeatFluxTemperature boundary condition is for compressible fluids.

You may want to work with buoyantSimpleFoam and use the Boussinesq equation of state:

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  5                                    |
|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "constant";
    object      thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

thermoType
{
    type            heRhoThermo;
    mixture        pureMixture;
    transport      const;
    thermo          hConst;
    equationOfState Boussinesq;//perfectGas;
    specie          specie;
    energy          sensibleEnthalpy;
}

mixture
{
    specie
    {
        molWeight      28.96;
    }
    thermodynamics
    {
        Cp              1004.4;
        Hf              0;
    }
    transport
    {
        mu              1.831e-05;
        Pr              0.705;
    }
    equationOfState
    {
        rho0            1.225;
        T0              293.15;
        beta            3.411e-3;
    }
}


// ************************************************************************* //


mozeven October 5, 2017 17:03

Hi Tom,

Thanks for your help. I tried it and indeed, everything is now working.

For some reason, when I decompose my case, I had an error, because the solver cannot find Ta, which according to the documentation (and when running single core) is not necessary. I solved it by manually adding it to the decomposed T files, but it's annoying...

Is there any way I could have known that this boundary condition only works on compressible solvers? I found no reference to it in the documentation.

Kind regards,

Kasper

tomf October 6, 2017 04:20

Hi,

If you do a find in a terminal:

Code:

find $FOAM_SRC -iname *externalWallHeatFluxTemperature*
it shows that it is a derived boundary condition in compressible turbulencemodels:

Code:

src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature
.

That is usually a hint. I have not looked into the code or documentation for this.

Regards,
Tom


All times are GMT -4. The time now is 00:27.