|
[Sponsors] |
August 6, 2017, 07:07 |
Calculating Nusselt Number
|
#1 |
Member
Mehdi Aminyavari
Join Date: Feb 2016
Location: Milan
Posts: 35
Rep Power: 10 |
Dear Foamers, Hello
I am trying to calculate the nusselt number for a fully developed laminar flow between two parallel plates with constant wall temperature boundary condition. As it can be found in many books, This value should be 7.55 for plates with infinite width(a) with respect to the distance between the two plates(b): For a/b > 8 , Nu_fd = 7.55 I have tried many many ways to get this number by calculating the local heat transfer coefficient (h) from the CFD results and then calculating the corresponding local Nusselt number, but no luck so far... what I have done briefly : Block Mesh: Code:
convertToMeters 0.001; vertices ( // inlet region ( 0 0 -5000 ) // pt 0 (in1b) ( 0 100 -5000 ) // pt 1 (in2b) ( 0 0 5000 ) // pt 2 (in1f) ( 0 100 5000 ) // pt 3 (in2f) // join inlet->outlet ( 5000 0 -5000 ) // pt 4 (join1b) ( 5000 100 -5000 ) // pt 5 (join2b) ( 5000 0 5000 ) // pt 6 (join1f) ( 5000 100 5000 ) // pt 7 (join2f) ); Boundary condition: at the inlet I set the mass flow rate as following to get a laminar flow (low Reynolds) which develops very fast and I get a very nice fully developed flow both hydro dynamically and thermally a bit after the entrance: Code:
inlet { type flowRateInletVelocity; massFlowRate constant 0.375; rhoInlet 1; // estimate for initial rho } The solver is rhoPimpleFoam, which I revised a bit to calculate the nusselt on each mesh along the length. so we know that q = h A ( Tw - Tm ) Nu = h D_h / K where Tw = Wall constant temperature [k] Tm = the mean flow temperature at the length X from the inlet [K] A = mesh surface [m^2] h = local heat transfer coefficient [W/m^2/K] q = heat flow on the wall [W] k = thermal conductivity of fluid [W/m/k] D_h = Hydrolic diameter = 4ab/(2b+2a) = 2b [m] therefore PHP Code:
Tm I calculate after the run is done using paraview so I added the following code to the solver to calculate "q/k" on each mesh along the length(L) and write it in a text file with it's corresponding coordinate: Code:
// Mehdi start: volScalarField& h = thermo.he(); surfaceScalarField heatFlux //[w/m^2] ( fvc::interpolate ( ( turbulence.valid() ? turbulence->alphaEff()() //: thermo->alpha() : thermo.alpha() ) )*fvc::snGrad(h) ); const surfaceScalarField::GeometricBoundaryField& patchHeatFlux = heatFlux.boundaryField(); surfaceScalarField SurfT = fvc::interpolate(h) / fvc::interpolate(Cpp); surfaceScalarField SurfLambda = fvc::interpolate(lambdaa); const surfaceScalarField::GeometricBoundaryField& patchLambda = SurfLambda.boundaryField(); const surfaceScalarField::GeometricBoundaryField& patchT = SurfT.boundaryField(); // for each face Mesh: //access boundary elements word UpperWall = "UpWall"; label UpperWallPatchID = mesh.boundaryMesh().findPatchID(UpperWall); const fvPatchVectorField& centreUp = mesh.C().boundaryField()[UpperWallPatchID]; // Write the het flux ofstream output2; output2.open("qOverK.txt"); forAll(patchHeatFlux, patchi) { if (UpperWallPatchID == patchi) { fvPatchScalarField& targetPatchT = h.boundaryField()[patchi]; forAll(targetPatchT, faceI) { const vector& c = centreUp[faceI]; output2 << mesh.boundary()[patchi].name() << " " << c[0] <<" ," << c[1] <<" ," << c[2] <<" " << (mesh.magSf().boundaryField()[patchi][faceI]*patchHeatFlux[patchi][faceI])/patchLambda[patchi][faceI] //[m.K] << "\n"; } } } output2.close(); Code:
// ADD: volScalarField lambdaa ( IOobject ( "lambdaa", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), thermo.kappa() ); volScalarField Cpp ( IOobject ( "Cpp", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), thermo.Cp() ); Soooo, where am I making a mistake??? I get local Nusselt of 5 - 6 instead of 7.55!! Any help on the logic of my calculation or a better and cleaner way of calculating Nusselt would be very very deeply appreciated, some one is getting crazy here |
|
August 7, 2017, 04:11 |
|
#2 |
Member
Mehdi Aminyavari
Join Date: Feb 2016
Location: Milan
Posts: 35
Rep Power: 10 |
Friends, any hints? I assumed that probably I am failing to calculate the correct Nusselt because of my lack of knowledge on OF structure and tools and the fact that I am trying to do it in a dusty way. Isn't there any post processing tool to just calculate and give you the local Nusselt on wall?
|
|
August 7, 2017, 04:44 |
|
#3 |
Senior Member
Kevin van As
Join Date: Sep 2014
Location: TU Delft, The Netherlands
Posts: 252
Rep Power: 21 |
||
August 7, 2017, 05:44 |
|
#4 |
Member
Mehdi Aminyavari
Join Date: Feb 2016
Location: Milan
Posts: 35
Rep Power: 10 |
Thank you so much Kevin !
|
|
August 7, 2017, 07:30 |
|
#5 | |
Member
Mehdi Aminyavari
Join Date: Feb 2016
Location: Milan
Posts: 35
Rep Power: 10 |
Quote:
I am looking at Incropera, section 8.2.1 "The mean temperature. it clearly says that in the calculation of Nusselt We should calculate h from: -----------------> is the flux on the wall where the mean temperature of the flow in each section, perpendicular to the flow direction at the distance X from inlet should be calculated as where we are calculating the LOCAL NUSSELT number: But If I understood right, in the mentioned posts, friends are using inlet flow temperature instead of local mean temperature, is that right? and if so, any reasoning for that? Cheers |
||
August 7, 2017, 07:44 |
|
#6 |
Senior Member
Kevin van As
Join Date: Sep 2014
Location: TU Delft, The Netherlands
Posts: 252
Rep Power: 21 |
Ultimately, it is just how you define it.
#2 is a Nusselt number calculation in Rayleigh-Benard Convection. The equation implemented there perfectly coheres with literature on Rayleigh-Benard Convection: the mean temperature is simply the average temperature of the hot and cold plate. #1 I did not read in detail, but it also seems to be about Rayleigh-Benard Convection. For your case, it is not unthinkable that you might prefer to use a different definition. If so, you should adapt either of those codes to suit your purposes. |
|
August 7, 2017, 08:08 |
|
#7 |
Member
Mehdi Aminyavari
Join Date: Feb 2016
Location: Milan
Posts: 35
Rep Power: 10 |
you are right, I think your case was the natural convection and that's why it differs, I am talking about a laminar flow in duct where Tm is not simply the average of hot and cold plates, but it is averaged based on the velocity boundary layer development in each section.
|
|
June 18, 2020, 08:15 |
|
#8 |
Member
...
Join Date: May 2018
Posts: 37
Rep Power: 8 |
hi
are you solve your problem about Calculating Nusselt Number? |
|
June 21, 2020, 10:56 |
wallHeatFlux
|
#9 |
New Member
Join Date: May 2019
Posts: 2
Rep Power: 0 |
Hello,
I would like to run wallHeatFlux with simpleFoam under openfoam7. anyone have an idea how to modify this utility? Thank you. |
|
June 21, 2020, 10:58 |
|
#10 |
New Member
Join Date: May 2019
Posts: 2
Rep Power: 0 |
||
June 27, 2020, 16:43 |
|
#11 |
Senior Member
Herpes Free Engineer
Join Date: Sep 2019
Location: The Home Under The Ground with the Lost Boys
Posts: 931
Rep Power: 13 |
Hi,
To the participants of the thread: I wonder the Nusselt number can be computed with a simple modification of the heatTransferCoeff function object? I assume that we are able to calculate `h` by using `heatTransferCoeff`function object. By adding two optional scalars, i.e. `K` and `Dh`, we can scale `h` by `h*Dh/K`, hence the Nusselt number field optionally out of `heatTransferCoeff`? If so, I will modify the function object, and attach it here. Just wanted to make sure this modification makes sense since I am not very familiar with this branch of physics. Many thanks.
__________________
The OpenFOAM community is the biggest contributor to OpenFOAM: User guide/Wiki-1/Wiki-2/Code guide/Code Wiki/Journal Nilsson/Guerrero/Holzinger/Holzmann/Nagy/Santos/Nozaki/Jasak/Primer Governance Bugs/Features: OpenFOAM (ESI-OpenCFD-Trademark) Bugs/Features: FOAM-Extend (Wikki-FSB) Bugs: OpenFOAM.org How to create a MWE New: Forkable OpenFOAM mirror |
|
July 24, 2020, 05:50 |
|
#12 |
New Member
Muyiwa
Join Date: Feb 2020
Posts: 12
Rep Power: 6 |
Hello HPE
I want to calculate heatTransferCoeff using interCondensatingEvaporatingFoam with this function in the controlDict: functions { htc { type heatTransferCoeff; libs ("libfieldFunctionObjects.so"); field T; patches ("wall"); htcModel fixedReferenceTemperature; TRef 360; } } I included the function in the controlDict and I'm having this error: --> FOAM FATAL ERROR: Unable to find a valid thermo model to evaluate q From function Foam::tmp<Foam::FieldField<Foam::Field, double> > Foam::heatTransferCoeffModel::q() const in file heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C at line 95. FOAM exiting |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Foam::error::PrintStack | almir | OpenFOAM Running, Solving & CFD | 92 | May 21, 2024 08:56 |
AMI speed performance | danny123 | OpenFOAM | 21 | October 24, 2020 05:13 |
How to determine Nusselt Number (fluent) | djodjo | FLUENT | 2 | May 6, 2015 15:23 |
foam-extend_3.1 decompose and pyfoam warning | shipman | OpenFOAM | 3 | July 24, 2014 09:14 |
calculating nusselt number | anijdon | OpenFOAM | 0 | March 14, 2011 15:15 |