# conjugate heat transfer in OpenFOAM

 Register Blogs Members List Search Today's Posts Mark Forums Read

 December 31, 2013, 11:51 #21 Member   Sergey Join Date: Nov 2013 Posts: 87 Rep Power: 11 1. Nope, I don't know analytical solution 2. i tried to run simplest case. When I get results for laminar, I will add turbulence. 3. blockMesh has only one-way mesh grading and I tried to do simplest case, consisting of only one block. Any way I believe i have small enough mesh, at least to get qualitatively results Bruno, thank you for your help! And have a happy New Year! wyldckat likes this. Last edited by wyldckat; December 31, 2013 at 12:21. Reason: merged posts, which were 7 minutes apart ;)

 December 31, 2013, 14:42 #22 Retired Super Moderator   Bruno Santos Join Date: Mar 2009 Location: Lisbon, Portugal Posts: 10,969 Blog Entries: 45 Rep Power: 126 Hi Sergey, Then I suggest that you step back a bit and change this case to a 2D or pseudo-2D case (instead of "empty" patches, you can use "symmetry" patches on both sides), which makes it easier for you to increase/control the mesh refinement. The "plane wall 2D" case can work as a good start for this: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D I say this because laminar simulations usually mean that you do not have a wall model that allows for a good estimation of how the turbulence flow behaves near the wall, e.g.: http://www.cfd-online.com/Wiki/Near-...k-omega_models And you're welcome and have a happy new year as well! Best regards, Bruno __________________ OpenFOAM: FAQ | Getting started Forum: How to get help, to post code/output and forum guide Read this before sending me PM

January 2, 2014, 14:26
#23
Member

Sergey
Join Date: Nov 2013
Posts: 87
Rep Power: 11
Hi Bruno!

I did a step back - returned back to air instead of water.
And results look much better - at least they look like I expect from my intuition.

The air at the inlet is cold and it is gradually heating while it is travelling through the fin. The fin itself looses more heat at the inlet, where the air is colder and looses less heat at the end where air is already warm and gradient is smaller.

So it looks to me that I still have a problem with my material definition.

Do you know if i have to change anything else apart from thermophysicalProperties and rho limits in fluidFomain/fvSolution in order to replace air with water?

I think there is inconsistency between fixed density which I'm trying to use in my thermophysical model and compressible solver chtMultiRegionSimpleFoam. But looks like there must be a way to adapt the solver to run with constant density thermophysicalModel. Alternatively there might be a compressible model for water.
Attached Images
 FinAorNoG_top.jpg (47.8 KB, 113 views) FinAirNoG_right.jpg (23.2 KB, 90 views) FinAirNoG_solid.jpg (89.3 KB, 104 views)

Last edited by skuznet; January 3, 2014 at 11:53. Reason: update

January 5, 2014, 11:19
#24
Retired Super Moderator

Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,969
Blog Entries: 45
Rep Power: 126
Hi Sergey,

OK, took me a while longer than I wanted to, but here goes the steps I suggest you try for the water case:
1. Download the source code and build the modified "refineWallLayer" application. I added the "-region" option to it.
Code:
mkdir -p $FOAM_RUN cd$FOAM_RUN
cd ..
wget "https://github.com/wyldckat/Unsupported-Contrib-OpenFOAM-2.1.x/archive/refineWallLayerMod.zip" -O refineWallLayerMod.zip
unzip refineWallLayerMod.zip
When it's done building, you will now have a new application named refineWallLayerMod.
2. Edit the Allrun script you have in your case and modify this part:
Code:
blockMesh
topoSet
splitMeshRegions -cellZones -overwrite
To this:
Code:
blockMesh
topoSet
splitMeshRegions -cellZones -overwrite

for edgeWeight in 0.8 0.6 0.4 0.2 0.1
do
refineWallLayerMod -region fluidDomain fluidDomain_to_solidDomain \$edgeWeight -overwrite
done
3. The new code will add boundary layers to the fluid side, onto the patch "fluidDomain_to_solidDomain". The values are weights always referring to the edge length between the patch and the faces on the other side of the cells that are close to the patch. Therefore, 1.0 is close to the faces farthest from the patch and 0.0 are the mesh faces on the patch.
4. The numbers "0.8 0.6 0.4 0.2 0.1" are values that looked nice to me, but it's probably best to use something like "0.5 0.5 0.5 0.5 0.5", since it will always divide the cells in half in each iteration.
I gave it a quick test and it seemed to me to improve a bit the results, as shown in the first attached image (left refined, right original), as well as allowing for a much faster convergence of the solution. Nonetheless, it seemed to me that the number of cells along the flow should be a lot more, so that it would be easier for the heat exchange between cells wouldn't be so distorted.

---------------------------------------------
edit: I was in a hurry and didn't properly post the images. I've updated them now and added a 3rd image.
• The first image is showing the values for the centre of the cells, which is why the one on the left is so hot.
• The third image is showing the comparison between the section cuts. Clearly the resolution of the mesh has a very strong effect in the results!
• As for being wrong or right, the analytical solution is needed for comparison, which is why I keep coming back to the "plane wall" tutorial, since analytical solutions exist for it and it's easier to configure it to achieve the correct solution and then extend the configuration conclusions to the case you're trying to solve.
---------------------------------------------

The strange low temperature corners are due to a meshing issue that refineWallLayer does, when there is a patch with 90 degree corners, as shown in the second attached image. To avoid this, the U-patch would have to be split into 3 patches and each one refined once at a time.

As for air vs water, the problem is as I've been trying to tell you: mesh and turbulence models are extremely important for this case! edit: And without turbulence models, the weight of responsibility falls all onto the mesh configuration.

edit: As for speed: keep in mind that turbulence models were created precisely because it was not possible at that time to have meshes with several million cells. So consider turning it back on.

Best regards,
Bruno
Attached Images
 comparison_mesh_results.jpg (72.0 KB, 121 views) comparison_mesh_only.jpg (96.6 KB, 132 views) comparison_mesh_results_slice.jpg (74.6 KB, 108 views)
__________________

Last edited by wyldckat; January 5, 2014 at 13:47. Reason: see the 3 "edit:"

January 6, 2014, 11:17
#25
Member

Sergey
Join Date: Nov 2013
Posts: 87
Rep Power: 11
Bruno, thank you so much!

I will try it now.

edit:
Bruno, I tried to add turbulence and refinement.

Adding turbulence didn't change anything, I have the same result: heat doesn't flow inside fluid region. Only boundaries are heated.
(fimTurb.tar.gz)

After adding refinement(with turbulence on) I can see refined mesh (looks great by the way!). But when I run it, the error appears:
(fimTurbRefine.tar.gz)
Code:
Time = 110

Solving for fluid region fluidDomain
DILUPBiCG:  Solving for Ux, Initial residual = 0.01734456, Final residual = 0.0003057888, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.01461149, Final residual = 0.0004831919, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 0.02473262, Final residual = 0.0004058105, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.002213193, Final residual = 5.1249e-05, No Iterations 2

--> FOAM FATAL ERROR:
Maximum number of iterations exceeded

From function thermo<Thermo, Type>::T(scalar f, scalar T0, scalar (thermo<Thermo, Type>::*F)(const scalar) const, scalar (thermo<Thermo, Type>::*dFdT)(const scalar) const, scalar (thermo<Thermo, Type>::*limit)(const scalar) const) const
in file /home/sergkuznet//OpenFOAM/OpenFOAM-2.2.x/src/thermophysicalModels/specie/lnInclude/thermoI.H at line 76.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1  Foam::error::abort() in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2  Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy>::T(double, double, double, double (Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy>::*)(double) const) const in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so"
#3  Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate() in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so"
#4  Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::rhoConst<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct() in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so"
#5
in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/bin/chtMultiRegionSimpleFoam"
#6  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#7
in "/home/sergkuznet/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/bin/chtMultiRegionSimpleFoam"

It looks like there is some problem with case setup.
Attached Files
 finTurb.tar.gz (4.8 KB, 20 views) finTurbRefine.tar.gz (4.9 KB, 11 views)

Last edited by skuznet; January 8, 2014 at 01:11.

 January 8, 2014, 11:42 #26 Member   Sergey Join Date: Nov 2013 Posts: 87 Rep Power: 11 Hi Bruno! chtMultiRegionSimpleFoam is based on buyantSimpleFoam. Why it uses different way of prescribing material properties - thermophysicalProperties instead of transportProperties? Is it possible to use transportProperties instead of thermophysicalProperties for the fluid region in chtMultiRegionSimpleFoam? Thank you! Sergey

January 10, 2014, 15:03
#27
Retired Super Moderator

Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,969
Blog Entries: 45
Rep Power: 126
Hi Sergey,

I won't be able to answer to post #25 any time soon

Quote:
 Originally Posted by skuznet chtMultiRegionSimpleFoam is based on buyantSimpleFoam. Why it uses different way of prescribing material properties - thermophysicalProperties instead of transportProperties? Is it possible to use transportProperties instead of thermophysicalProperties for the fluid region in chtMultiRegionSimpleFoam?
It might be very similar, but there should be some considerable differences. The settings in "transportProperties" are sort-of simplistic, while the settings in "thermophysicalProperties" should be more accurate...
... Wait, wait... the tutorial "heatTransfer/buoyantSimpleFoam/hotRoom" also uses "constant/thermophysicalProperties". But the tutorial "heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom" uses "constant/transportProperties". Therefore, you might be confusing buoyantSimpleFoam with buoyantBoussinesqSimpleFoam. Quoting from here: http://www.openfoam.org/features/standard-solvers.php
Quote:
 buoyantBoussinesqSimpleFoam: Steady-state solver for buoyant, turbulent flow of incompressible fluids buoyantSimpleFoam: Steady-state solver for buoyant, turbulent flow of compressible fluids
You might want to try and create a variant of the tutorial "cavity" to use the two solvers, so that you can get a better perception of what's at work here.

And honestly, I strongly suggest that you do more experiments with the "plane wall 2D" case and compare with the analytical solution, in order to ascertain if your guesses of what the heat transfer should look like, versus what you are currently getting

Best regards,
Bruno
__________________

Last edited by wyldckat; January 11, 2014 at 18:50. Reason: typo: it's "won't", not "wont"

 January 18, 2014, 12:56 #28 Retired Super Moderator   Bruno Santos Join Date: Mar 2009 Location: Lisbon, Portugal Posts: 10,969 Blog Entries: 45 Rep Power: 126 Hi Sergey, I took a quick look at the cases and although you added the turbulence fields, you did not modify the file "constant/fluidDomain/RASProperties" As for the crash: the refinement I suggested was just a quick hack. The way that the corner cells are refined isn't very good, because it leads to the creation of some big shaped cells on the corners, which leads to distorting the flow. I don't have time to prove this, but as I've said before: it's best to first prove if things are working in the "plane wall 2D" case and comparing to the analytical solution, since that will give you a good insurance that things are being performed correctly or not. To understand better what I mean, have a look at this blog post: http://www.symscape.com/blog/cfd-tip...ctive-new-year Best regards, Bruno __________________ OpenFOAM: FAQ | Getting started Forum: How to get help, to post code/output and forum guide Read this before sending me PM

 February 11, 2014, 10:18 adding heat source to plane wall 2d case #29 New Member   sarvagy Join Date: Jun 2013 Location: iit kanpur Posts: 2 Rep Power: 0 hello everyone, i am new to solving heat transfer problems. i have to solve a problem of heat transfer in an electrical appliance , i want to use chtmultiregionfoam solver for it. my problem contains a heat source in the form of a resistance (heat = (i^2)*R joules/sec). for start I am looking at planewall2d case but i am not getting how to add a heat source term to planewall2d case. suppose for instance i want to add a heat source inside the wall at some location emitting q joules/sec of heat, how can i do this? is this possible? Kumudu likes this.

 February 16, 2014, 14:57 #30 Retired Super Moderator   Bruno Santos Join Date: Mar 2009 Location: Lisbon, Portugal Posts: 10,969 Blog Entries: 45 Rep Power: 126 Greetings flash, Sorry, I don't have time to create an example for this, but here are some directions: Look for "interRegionHeatTransferModel" here: http://www.openfoam.org/version2.2.0/fvOptions.php - and read it with attention, since more than one of those might come in handy. This thread: http://www.cfd-online.com/Forums/ope...ss-source.html - discusses how to use one of the items from the link in point #1. Good luck! Best regards, Bruno Kumudu likes this. __________________ OpenFOAM: FAQ | Getting started Forum: How to get help, to post code/output and forum guide Read this before sending me PM

February 17, 2014, 02:12
#31
Member

Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 11
Quote:
 Originally Posted by flash hello everyone, i am new to solving heat transfer problems. i have to solve a problem of heat transfer in an electrical appliance , i want to use chtmultiregionfoam solver for it. my problem contains a heat source in the form of a resistance (heat = (i^2)*R joules/sec). for start I am looking at planewall2d case but i am not getting how to add a heat source term to planewall2d case. suppose for instance i want to add a heat source inside the wall at some location emitting q joules/sec of heat, how can i do this? is this possible?
Hi,

Can you please share the file, if you add a heat source into any region as suggested by Bruno. I am really interested about it.

Best regards,
Kumudu

February 17, 2014, 15:54
2d case cht in curved channel
#32
Member

Sergey
Join Date: Nov 2013
Posts: 87
Rep Power: 11
Hi Bruno!

I made a 2d case based on planeWall2D as you suggested. I just replaced top and bottom fluid with solid regions and solid wall with curved fluid channel. The bottom solid wall is heated to 500, the left and right solid wall are insulated, top solid wall has temperature 300. Velocity:
Code:
U
{
internalField   uniform (0.01 0 0);

boundaryField
{
leftLet
{
type            fixedValue;
value           uniform ( 0.1 0 0 );
}

rightLet
{
type            inletOutlet;
inletValue      uniform ( 0 0 0 );
value           uniform ( 0.1 0 0 );
}

"fluid_to_.*"
{
type            fixedValue;
value           uniform (0 0 0);
}
}
}

Case runs well with velocity used in initial 2D case. However, the temperature profile doesn't have visible gradient, while I can see a significant variation in temperature on the boundaries of the fluid domain, therefore I would expect a significant gradient in the fluid volume as well.

Sergey
Attached Images
 channel2d_fast_velocity.jpg (52.5 KB, 96 views) channel2d_fast_temperature.jpg (93.5 KB, 75 views) channel2D_fast_p_rgh.jpg (31.6 KB, 58 views) channel2D_fast_p.jpg (79.8 KB, 54 views)
Attached Files
 curvedChannel.tar.gz (6.9 KB, 23 views)

February 17, 2014, 16:19
2d case cht in curved channel, slow flow
#33
Member

Sergey
Join Date: Nov 2013
Posts: 87
Rep Power: 11
I run then the same case, but with much slower flow:
Code:
U
{
internalField   uniform (0.000001 0 0);

boundaryField
{
leftLet
{
type            fixedValue;
value           uniform ( 0.000001 0 0 );
}

rightLet
{
type            inletOutlet;
inletValue      uniform ( 0 0 0 );
value           uniform ( 0.000001 0 0 );
}

"fluid_to_.*"
{
type            fixedValue;
value           uniform (0 0 0);
}
}

Now I can see the nice gradient in temperature and velocity profile looks ok.
However, pressure p_rgh doesn't change along the channel. And convergence is terrible:
after Time=6822
number of iteration when solving for p_rgh increases and quickly becomes 1000 at every time step until the end.
It seems that there is some problem with the solver.

Code:
Time = 6822

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001313931, Final residual = 2.132327e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001355683, Final residual = 4.181906e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005424874, Final residual = 4.204827e-05, No Iterations 1
Min/max T:302.2691 420.4573
GAMG:  Solving for p_rgh, Initial residual = 0.001650452, Final residual = 1.622542e-05, No Iterations 8
time step continuity errors : sum local = 2.284558e-06, global = 1.620525e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628774, Final residual = 5.548561e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.1269 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001810846, Final residual = 4.49337e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0039
ExecutionTime = 104.75 s  ClockTime = 105 s

Time = 6823

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001314214, Final residual = 2.124361e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.00135596, Final residual = 4.152029e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005414751, Final residual = 4.192929e-05, No Iterations 1
Min/max T:302.2697 420.4691
GAMG:  Solving for p_rgh, Initial residual = 0.001648069, Final residual = 1.635356e-05, No Iterations 9
time step continuity errors : sum local = 2.284934e-06, global = 2.314783e-09, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628817, Final residual = 5.548153e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.1477 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001810249, Final residual = 4.491468e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0054
ExecutionTime = 104.76 s  ClockTime = 105 s

Time = 6824

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001314334, Final residual = 2.116328e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001356137, Final residual = 4.122275e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.00054046, Final residual = 4.181034e-05, No Iterations 1
Min/max T:302.2704 420.4808
GAMG:  Solving for p_rgh, Initial residual = 0.001647746, Final residual = 1.631238e-05, No Iterations 7
time step continuity errors : sum local = 2.310106e-06, global = -1.07486e-07, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628859, Final residual = 5.547744e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.1685 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001809652, Final residual = 4.489557e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.007
ExecutionTime = 104.78 s  ClockTime = 105 s

Time = 6825

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001314608, Final residual = 2.108353e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001356435, Final residual = 4.092932e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005394478, Final residual = 4.169154e-05, No Iterations 1
Min/max T:302.271 420.4925
GAMG:  Solving for p_rgh, Initial residual = 0.001646285, Final residual = 1.643818e-05, No Iterations 45
time step continuity errors : sum local = 2.265405e-06, global = -1.951309e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628902, Final residual = 5.547334e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.1893 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001809056, Final residual = 4.487734e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0086
ExecutionTime = 104.82 s  ClockTime = 105 s

Time = 6826

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001314799, Final residual = 2.100056e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001356629, Final residual = 4.063486e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005384321, Final residual = 4.157303e-05, No Iterations 1
Min/max T:302.2717 420.5043
GAMG:  Solving for p_rgh, Initial residual = 0.001647895, Final residual = 1.638582e-05, No Iterations 13
time step continuity errors : sum local = 2.279589e-06, global = -9.92179e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628944, Final residual = 5.546926e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.2101 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.000180846, Final residual = 4.485833e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0101
ExecutionTime = 104.84 s  ClockTime = 105 s

Time = 6827

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001314852, Final residual = 2.091747e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001356806, Final residual = 4.03387e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005374233, Final residual = 4.145507e-05, No Iterations 1
Min/max T:302.2724 420.516
GAMG:  Solving for p_rgh, Initial residual = 0.00164667, Final residual = 1.64259e-05, No Iterations 29
time step continuity errors : sum local = 2.28877e-06, global = 1.620525e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001628987, Final residual = 5.546517e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.2309 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001807866, Final residual = 4.48402e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0117
ExecutionTime = 104.86 s  ClockTime = 105 s

Time = 6828

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001315069, Final residual = 2.083812e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001357013, Final residual = 4.004651e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005364104, Final residual = 4.133708e-05, No Iterations 1
Min/max T:302.273 420.5277
GAMG:  Solving for p_rgh, Initial residual = 0.001645483, Final residual = 1.638643e-05, No Iterations 21
time step continuity errors : sum local = 2.275193e-06, global = 1.984058e-09, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629029, Final residual = 5.546107e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.2517 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001807272, Final residual = 4.482179e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0133
ExecutionTime = 104.89 s  ClockTime = 105 s

Time = 6829

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001315206, Final residual = 2.075661e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001357208, Final residual = 3.975553e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005354014, Final residual = 4.121945e-05, No Iterations 1
Min/max T:302.2737 420.5395
GAMG:  Solving for p_rgh, Initial residual = 0.001645484, Final residual = 1.639848e-05, No Iterations 27
time step continuity errors : sum local = 2.262239e-06, global = 2.546556e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629071, Final residual = 5.545699e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.2725 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001806678, Final residual = 4.480382e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0148
ExecutionTime = 104.91 s  ClockTime = 105 s

Time = 6830

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001315388, Final residual = 2.067708e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001357459, Final residual = 3.946405e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005343923, Final residual = 4.110215e-05, No Iterations 1
Min/max T:302.2743 420.5512
GAMG:  Solving for p_rgh, Initial residual = 0.001644187, Final residual = 1.642512e-05, No Iterations 240
time step continuity errors : sum local = 2.313747e-06, global = 2.21583e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629113, Final residual = 5.54529e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.2932 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001806086, Final residual = 4.47858e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0164
ExecutionTime = 105.05 s  ClockTime = 105 s

Time = 6831

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.00131555, Final residual = 2.059634e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001357683, Final residual = 3.918141e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005333868, Final residual = 4.098513e-05, No Iterations 1
Min/max T:302.275 420.5629
GAMG:  Solving for p_rgh, Initial residual = 0.001643011, Final residual = 1.641557e-05, No Iterations 487
time step continuity errors : sum local = 2.249288e-06, global = 3.505659e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629155, Final residual = 5.544879e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.314 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001805493, Final residual = 4.476839e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0179
ExecutionTime = 105.3 s  ClockTime = 105 s

Time = 6832

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001315776, Final residual = 2.051749e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001357895, Final residual = 3.889592e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005323786, Final residual = 4.086815e-05, No Iterations 1
Min/max T:302.2756 420.5746
GAMG:  Solving for p_rgh, Initial residual = 0.001642862, Final residual = 1.641485e-05, No Iterations 420
time step continuity errors : sum local = 2.221193e-06, global = -3.770298e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629197, Final residual = 5.544468e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.3347 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.0001804901, Final residual = 4.475049e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0195
ExecutionTime = 105.53 s  ClockTime = 105 s

Time = 6833

Solving for fluid region fluid
DILUPBiCG:  Solving for Ux, Initial residual = 0.001316075, Final residual = 2.044031e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.001358198, Final residual = 3.860973e-06, No Iterations 1
DILUPBiCG:  Solving for h, Initial residual = 0.0005313752, Final residual = 4.075142e-05, No Iterations 1
Min/max T:302.2763 420.5863
GAMG:  Solving for p_rgh, Initial residual = 0.001641225, Final residual = 1.711035e-05, No Iterations 1000
time step continuity errors : sum local = 2.332723e-06, global = -1.356003e-08, cumulative = 7027.477
Min/max rho:1000 1000

Solving for solid region bottomSolid
DICPCG:  Solving for h, Initial residual = 0.0001629239, Final residual = 5.544055e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 381.3555 max(T) [0 0 0 1 0 0 0] 500

Solving for solid region topSolid
DICPCG:  Solving for h, Initial residual = 0.000180431, Final residual = 4.473332e-07, No Iterations 1
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 308.0211
ExecutionTime = 106.05 s  ClockTime = 106 s
Sergey
Attached Images
 channel2d_slow_temperature.jpg (47.7 KB, 60 views) channel2d_velocity.jpg (85.5 KB, 49 views) channel2d_slow_p_rgh.jpg (47.7 KB, 35 views)
Attached Files
 curvedChannel_slow.tar.gz (6.9 KB, 9 views)

 March 4, 2014, 14:15 #34 Retired Super Moderator   Bruno Santos Join Date: Mar 2009 Location: Lisbon, Portugal Posts: 10,969 Blog Entries: 45 Rep Power: 126 Hi Sergey, I believe I've referred to comparing to analytical data a few times before, but it seems to have been for nothing. So this time I've done some online researching to give you some more basis. If you have a look into this section on Heat Transfer Coefficient at Wikipedia: http://en.wikipedia.org/wiki/Heat_tr...turbulent_flow - you'll find a usual expression for calculating the convection factor. Using Wolfram Alpha: http://www.wolframalpha.com - with the following expression: Code: h= {0.023} {k^{1-n} j^{0.8} c^n \over \mu^{0.8-n} d^{0.2} }, where n=0.4, c=4181, mu=959e-6, k=0.58 You'll see the expression for convection, dependent on the hydraulic diameter of the pipe and of the mass flux. Note: The values for "n", "c" (cp), "mu" and "k" are for water, based on the settings in the case and a bit of online searching. The final expression was: Code: h = (7.50878 j^0.8)/d^0.2 Therefore, if the diameter is fixed to "1.0" and we do a plot of the convection factor depending on the mass flux, we can use Wolfram Alpha again, with this expression: Code: Plot[7.50878 j^0.8, {j, 0.0, 0.5}] You'll see this: http://www.wolframalpha.com/share/cl...427e7esopn6lmu As you can see, by increasing the mass flux of water from 0.1 to 0.5, you get a convection increase from 1 to 4. If we plot against you 0.01 flow speed... well, see for yourself: http://www.wolframalpha.com/input/?i=Plot[7.50878+j^0.8%2C+{j%2C+0.0%2C+0.01}] Now, there are a few other factors that you have to take into account, which I did not with this example: The water properties vary with temperature, therefore closer to the wall, the heat convection factor might be even a bit higher or lower. This means that the convection factor should be calculated dynamically, depending on the current temperature on each cell. As mentioned before, the mesh resolution near the wall, on the fluid side, is very important for properly seeing the heat being exchanged. And this only takes the analytical part only up to the heat convection factor, because we're still missing the transient solution. For that, search for "transient heat conduction", which should give you several results online. If I'm not mistaken, the basic expression is this: Code: (T(t) - T_inf)/(T_0 - T_inf) = exp(-b*t) where b= (h*A)/(rho*V*Cp) V is for fluid volume, A is area of contact surface with the wall. The idea here is that "t" is the time of exposure to the heat source, which in this case, is basically the time a certain streamline of fluid is near the wall. For example, at 0.01 m/s, it means that in 1 second the fluid travels 0.01 metre. Therefore, that's one point of measurement. I'm too tired now to do more graphs and math, but basically this gets you started on how to prove whether the solution gotten with the "chtMultiRegion*Foam" solvers is correct or not. Best regards, Bruno __________________ OpenFOAM: FAQ | Getting started Forum: How to get help, to post code/output and forum guide Read this before sending me PM

 March 7, 2014, 11:39 #35 Member   Sergey Join Date: Nov 2013 Posts: 87 Rep Power: 11 Bruno: Thank you so much for such a detailed reply! I will try to use this information for my case.

March 20, 2014, 10:56
chtmultregionfoam crashed
#36
New Member

zhichao
Join Date: Jun 2012
Posts: 3
Rep Power: 12
Dear Sergey and Bruno,

I've been tried to modified Sergey's example (fin2,at 19#) to chtMultiRegionFoam for a transient situation simulation for several days.
Unfortunately,the program crashed after several time steps.Could you give me some help?I've upload my package.
Thanks so much for your kind help.

Code:
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.1.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : 2.1.1-221db2718bbb
Exec   : chtMultiRegionFoam
Date   : Mar 20 2014
Time   : 22:20:08
Host   : "localhost.localdomain"
PID    : 18099
Case   : /home/zhichao/OpenFOAM/OpenFOAM-2.1.1/run/heatTransfer/MSRRegonFoam/fin2
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations

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

Create fluid mesh for region fluidDomain for time = 0

Create solid mesh for region solidDomain for time = 0

*** Reading fluid mesh thermophysical properties for region fluidDomain

Selecting thermodynamics package hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<incompressible>>>>>

Selecting turbulence model type laminar

*** Reading solid mesh thermophysical properties for region solidDomain

Constructed constSolidThermo with
rho        : rho [1 -3 0 0 0 0 0] 8000
Cp         : Cp [0 2 -2 -1 0 0 0] 450
K          : K [1 1 -3 -1 0 0 0] 80
Hf         : Hf [0 2 -2 0 0 0 0] 1
emissivity : emissivity [0 0 0 0 0 0 0] 1
kappa      : kappa [0 -1 0 0 0 0 0] 0
sigmaS     : sigmaS [0 -1 0 0 0 0 0] 0

Region: fluidDomain Courant Number mean: 0.16666667 max: 0.16666667
Region: solidDomain Diffusion Number mean: 8.4931402e-05 max: 0.00011111111
deltaT = 0.17985612
Region: fluidDomain Courant Number mean: 0.29976019 max: 0.29976019
Region: solidDomain Diffusion Number mean: 0.00015275432 max: 0.00019984013
deltaT = 0.17985612
Time = 0.179856

Solving for fluid region fluidDomain
diagonal:  Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG:  Solving for Ux, Initial residual = 1, Final residual = 1.8044614e-08, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 2.3612832e-09, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 0.99999996, Final residual = 1.5631079e-08, No Iterations 2
DILUPBiCG:  Solving for h, Initial residual = 0.99999994, Final residual = 8.7134678e-10, No Iterations 2
Min/max T:299.99994 300
GAMG:  Solving for p_rgh, Initial residual = 1, Final residual = 0.0042877256, No Iterations 8
diagonal:  Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (fluidDomain): sum local = 0.0030054054, global = 4.8786781e-07, cumulative = 4.8786781e-07
GAMG:  Solving for p_rgh, Initial residual = 0.94468661, Final residual = 102.55324, No Iterations 1000
diagonal:  Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (fluidDomain): sum local = 17.56586, global = 2.0763789e-05, cumulative = 2.1251657e-05

Solving for solid region solidDomain
DICPCG:  Solving for T, Initial residual = 1, Final residual = 1.1180367e-08, No Iterations 2
DICPCG:  Solving for T, Initial residual = 3.0395743e-09, Final residual = 3.0395743e-09, No Iterations 0
Min/max T:min(T) [0 0 0 1 0 0 0] 300 max(T) [0 0 0 1 0 0 0] 350
ExecutionTime = 15.03 s  ClockTime = 15 s

Region: fluidDomain Courant Number mean: 287.02986 max: 543.83794
Region: solidDomain Diffusion Number mean: 0.00015275432 max: 0.00019984013
deltaT = 9.9214854e-05
Time = 0.179955

Solving for fluid region fluidDomain
diagonal:  Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG:  Solving for Ux, Initial residual = 0.0074809029, Final residual = 8.5987093e-08, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 0.003465942, Final residual = 4.2461954e-09, No Iterations 3
DILUPBiCG:  Solving for Uz, Initial residual = 0.0029413719, Final residual = 4.0638087e-08, No Iterations 2
DILUPBiCG:  Solving for h, Initial residual = 1, Final residual = 3.7695281e-08, No Iterations 3
Min/max T:300 20075.046
GAMG:  Solving for p_rgh, Initial residual = 0.99999669, Final residual = 1.9534598e+115, No Iterations 1000
diagonal:  Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (fluidDomain): sum local = -1.1630494e+15, global = 1, cumulative = 1.0000213
#0  Foam::error::printStack(Foam::Ostream&) in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1  Foam::sigFpe::sigHandler(int) in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2
at sigaction.c:0
#3  Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#4  Foam::GAMGSolver::solveCoarsestLevel(Foam::Field<double>&, Foam::Field<double> const&) const in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#5  Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#6  Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#7  Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/lib/libfiniteVolume.so"
#8
in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/bin/chtMultiRegionFoam"
#9  __libc_start_main in "/lib64/libc.so.6"
#10
in "/home/zhichao/OpenFOAM/OpenFOAM-2.1.1/platforms/linux64GccDPOpt/bin/chtMultiRegionFoam"
Attached Files
 fin2mod.tar.gz (21.6 KB, 11 views)

Last edited by wyldckat; March 23, 2014 at 17:26. Reason: Added [CODE][/CODE]

March 23, 2014, 17:29
#37
Retired Super Moderator

Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,969
Blog Entries: 45
Rep Power: 126
Quote:
 Originally Posted by jameszhan I've been tried to modified Sergey's example (fin2,at 19#) to chtMultiRegionFoam for a transient situation simulation for several days.
1. I don't have time to diagnose something that was derived from a case that probably wasn't working properly in the first place.
2. Do not jump directly into solving a bigger problem than you're able to do. Start with something small, which is known to work and has at least some documentation, such as this tutorial: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D

March 23, 2014, 23:45
#38
Member

Sergey
Join Date: Nov 2013
Posts: 87
Rep Power: 11
Hi Zhichao!

Please find attached my latest attempt to do conjugate heat transfer in OpenFOAM. It is a transient case and uses STL geometry and snappyhexmesh utility.
It runs ok, but I'm not sure if the results are correct. The velocity and pressure distributions seems ok, but temperature distribution doesn't look correct to me. It seems that heat doesn't flow well enough into the fluid region.

Please let me know if you have any ideas about it or if you see any mistakes in me case.

Sergey
Attached Images
 Ufluid.jpg (44.9 KB, 136 views) Tsolid.jpg (39.0 KB, 128 views) Tfluid.jpg (40.7 KB, 97 views)
Attached Files
 UCsnappyW_run.tar.gz (83.3 KB, 35 views)

March 24, 2014, 04:07
chtMultiRegionFoam problem
#39
New Member

zhichao
Join Date: Jun 2012
Posts: 3
Rep Power: 12
Quote:
 Originally Posted by skuznet Hi Zhichao! Please find attached my latest attempt to do conjugate heat transfer in OpenFOAM. It is a transient case and uses STL geometry and snappyhexmesh utility. It runs ok, but I'm not sure if the results are correct. The velocity and pressure distributions seems ok, but temperature distribution doesn't look correct to me. It seems that heat doesn't flow well enough into the fluid region. Please let me know if you have any ideas about it or if you see any mistakes in me case. Sergey
Dear Sergy,

Thanks a lot for you reply and kind help.
which version of OF did you use?Since the project you've attached crashed on the step surfaceFeatureExtract.

Best Regards
Zhichao

March 24, 2014, 07:15
multiregionFoam
#40
New Member

zhichao
Join Date: Jun 2012
Posts: 3
Rep Power: 12
Quote:
 Originally Posted by wyldckat Quick answer: I don't have time to diagnose something that was derived from a case that probably wasn't working properly in the first place. Do not jump directly into solving a bigger problem than you're able to do. Start with something small, which is known to work and has at least some documentation, such as this tutorial: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D
Dear Bruno,

Thanks a lot for you reply and help.
In my opinion,the problem should be in the OF version and deltT setup.
I've succeed the modificaion of multiRegionLiquidHeater to my application, although the result should not be completely correct.Later I will post my project and the construction tutorial from Gambit to chtmultiRegionFoam.
Thanks to Mojtaba's tutorial and sergey's and you posts here.
BTW,That's an interesting process to learn multi-region simulation on OF,it takes me around 3 weeks upto now.

Best Regards
zhichao

 Tags cht, solid-fluid interface