CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

chtMultiRegionFoam laminar heat exchanger non converging

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   October 9, 2009, 12:56
Default chtMultiRegionFoam laminar heat exchanger non converging
  #1
New Member
 
Join Date: Apr 2009
Posts: 10
Rep Power: 17
Pierpaolo is on a distinguished road
Hi all,
I have a problem with a plane heat exchanger (HE) whose performances I would like to evaluate.
The convergence is never reached and I get the error reported at the end of this post.
I see that the Courant number kind of explodes but I own up to it that despite the efforts in rummaging through the configurations files and changing several different values of the timestep, grid coarsenes and BC, I am not able to find a way out without the help of someone more experienced.
Attached is the case dir and all needed is to type in:
Allrun 0.0001

Thanks for any help and suggestion.

The HE is composed of 4 layers (dx=1mm;dy=180mm;dz=10.2mm):
1 topFluid (hot air incoming at 340K)
1 topSolid
1 bottomFluid (cold air incoming at 300K)
1 bottomSolid
Bottom face of the bottom solid has cyclic bc with top face of the top fluid.

Error:
---- snip ----
Solving for fluid region bottomFluid
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG: Solving for Uy, Initial residual = 0.03538927, Final residual = 1.971183e-11, No Iterations 3
DILUPBiCG: Solving for Uz, Initial residual = 0.00460497, Final residual = 9.836213e-09, No Iterations 2
DILUPBiCG: Solving for h, Initial residual = 0.004765986, Final residual = 9.041913e-12, No Iterations 3
Min/max T:299.7815 340.039
GAMG: Solving for p, Initial residual = 0.05313307, Final residual = 0.0004813086, No Iterations 27
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (bottomFluid): sum local = 2.280073e-06, global = 1.180403e-07, cumulative = -4.329433e-06
GAMG: Solving for p, Initial residual = 0.000516105, Final residual = 9.573149e-09, No Iterations 129
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (bottomFluid): sum local = 4.981507e-11, global = -3.992155e-12, cumulative = -4.329437e-06

Solving for fluid region topFluid
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG: Solving for Uy, Initial residual = 0.02129376, Final residual = 5.564677e+08, No Iterations 1001
DILUPBiCG: Solving for Uz, Initial residual = 0.02065763, Final residual = 5.061882e-09, No Iterations 5
DILUPBiCG: Solving for h, Initial residual = 0.004138133, Final residual = 7.869983e-09, No Iterations 3
Min/max T:299.9864 380
GAMG: Solving for p, Initial residual = 1, Final residual = 0.009861178, No Iterations 55
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (topFluid): sum local = -0.1170467, global = -0.007092308, cumulative = -0.00708989
GAMG: Solving for p, Initial residual = 0.8161496, Final residual = 0.263601, No Iterations 1000
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (topFluid): sum local = -43.27072, global = 0.9988777, cumulative = 0.9917878

Solving for solid region bottomSolid
DICPCG: Solving for T, Initial residual = 0.002423304, Final residual = 7.526829e-09, No Iterations 1
DICPCG: Solving for T, Initial residual = 7.488132e-09, Final residual = 7.488132e-09, No Iterations 0
Min/max T:min(T) [0 0 0 1 0 0 0] 339.9409 max(T) [0 0 0 1 0 0 0] 340

Solving for solid region topSolid
DICPCG: Solving for T, Initial residual = 0.005851229, Final residual = 4.241606e-07, No Iterations 1
DICPCG: Solving for T, Initial residual = 4.215058e-07, Final residual = 4.215058e-07, No Iterations 0
Min/max T:min(T) [0 0 0 1 0 0 0] 339.9823 max(T) [0 0 0 1 0 0 0] 340
ExecutionTime = 56.08 s ClockTime = 56 s

Region: bottomFluid Courant Number mean: 0.004116788 max: 0.1663119
Region: topFluid Courant Number mean: -318763 max: 7.685058e+08
#0 Foam::error:rintStack(Foam::Ostream&) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#2 Uninterpreted:
#3 Foam::Time::adjustDeltaT() in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#4 Foam::Time::setDeltaT(double) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#5 main in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/applications/bin/linuxGccDPOpt/chtMultiRegionFoam"
#6 __libc_start_main in "/lib/libc.so.6"
#7 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/pier/Op
M/OpenFOAM-1.6.x/applications/bin/linuxGccDPOpt/chtMultiRegionFoam"
------------------------------------------------------

Last edited by Pierpaolo; October 12, 2009 at 11:50.
Pierpaolo is offline   Reply With Quote

Old   October 16, 2009, 17:27
Default
  #2
Member
 
toto
Join Date: Jun 2009
Posts: 71
Rep Power: 16
ronaldo is on a distinguished road
Quote:
Originally Posted by Pierpaolo View Post
Hi all,
I have a problem with a plane heat exchanger (HE) whose performances I would like to evaluate.
The convergence is never reached and I get the error reported at the end of this post.
I see that the Courant number kind of explodes but I own up to it that despite the efforts in rummaging through the configurations files and changing several different values of the timestep, grid coarsenes and BC, I am not able to find a way out without the help of someone more experienced.
Attached is the case dir and all needed is to type in:
Allrun 0.0001

Thanks for any help and suggestion.

The HE is composed of 4 layers (dx=1mm;dy=180mm;dz=10.2mm):
1 topFluid (hot air incoming at 340K)
1 topSolid
1 bottomFluid (cold air incoming at 300K)
1 bottomSolid
Bottom face of the bottom solid has cyclic bc with top face of the top fluid.

Error:
---- snip ----
Solving for fluid region bottomFluid
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG: Solving for Uy, Initial residual = 0.03538927, Final residual = 1.971183e-11, No Iterations 3
DILUPBiCG: Solving for Uz, Initial residual = 0.00460497, Final residual = 9.836213e-09, No Iterations 2
DILUPBiCG: Solving for h, Initial residual = 0.004765986, Final residual = 9.041913e-12, No Iterations 3
Min/max T:299.7815 340.039
GAMG: Solving for p, Initial residual = 0.05313307, Final residual = 0.0004813086, No Iterations 27
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (bottomFluid): sum local = 2.280073e-06, global = 1.180403e-07, cumulative = -4.329433e-06
GAMG: Solving for p, Initial residual = 0.000516105, Final residual = 9.573149e-09, No Iterations 129
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (bottomFluid): sum local = 4.981507e-11, global = -3.992155e-12, cumulative = -4.329437e-06

Solving for fluid region topFluid
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
DILUPBiCG: Solving for Uy, Initial residual = 0.02129376, Final residual = 5.564677e+08, No Iterations 1001
DILUPBiCG: Solving for Uz, Initial residual = 0.02065763, Final residual = 5.061882e-09, No Iterations 5
DILUPBiCG: Solving for h, Initial residual = 0.004138133, Final residual = 7.869983e-09, No Iterations 3
Min/max T:299.9864 380
GAMG: Solving for p, Initial residual = 1, Final residual = 0.009861178, No Iterations 55
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (topFluid): sum local = -0.1170467, global = -0.007092308, cumulative = -0.00708989
GAMG: Solving for p, Initial residual = 0.8161496, Final residual = 0.263601, No Iterations 1000
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors (topFluid): sum local = -43.27072, global = 0.9988777, cumulative = 0.9917878

Solving for solid region bottomSolid
DICPCG: Solving for T, Initial residual = 0.002423304, Final residual = 7.526829e-09, No Iterations 1
DICPCG: Solving for T, Initial residual = 7.488132e-09, Final residual = 7.488132e-09, No Iterations 0
Min/max T:min(T) [0 0 0 1 0 0 0] 339.9409 max(T) [0 0 0 1 0 0 0] 340

Solving for solid region topSolid
DICPCG: Solving for T, Initial residual = 0.005851229, Final residual = 4.241606e-07, No Iterations 1
DICPCG: Solving for T, Initial residual = 4.215058e-07, Final residual = 4.215058e-07, No Iterations 0
Min/max T:min(T) [0 0 0 1 0 0 0] 339.9823 max(T) [0 0 0 1 0 0 0] 340
ExecutionTime = 56.08 s ClockTime = 56 s

Region: bottomFluid Courant Number mean: 0.004116788 max: 0.1663119
Region: topFluid Courant Number mean: -318763 max: 7.685058e+08
#0 Foam::error:rintStack(Foam::Ostream&) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#2 Uninterpreted:
#3 Foam::Time::adjustDeltaT() in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#4 Foam::Time::setDeltaT(double) in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
#5 main in "/home/pier/OpenFOAM/OpenFOAM-1.6.x/applications/bin/linuxGccDPOpt/chtMultiRegionFoam"
#6 __libc_start_main in "/lib/libc.so.6"
#7 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/pier/Op
M/OpenFOAM-1.6.x/applications/bin/linuxGccDPOpt/chtMultiRegionFoam"
------------------------------------------------------
could you send please your case "heat exchanger"
I would try to silmulate an Heat exchanger!

Thank you in advance
ronaldo is offline   Reply With Quote

Old   October 17, 2009, 12:50
Default
  #3
New Member
 
Join Date: Apr 2009
Posts: 10
Rep Power: 17
Pierpaolo is on a distinguished road
Quote:
Originally Posted by ronaldo View Post
could you send please your case "heat exchanger"
I would try to silmulate an Heat exchanger!

Thank you in advance
Refer to:

http://pier.unirc.eu/cestino/scambia...ano_cyclic.tgz

to download the 4 layers not converging one with cyclic bc, and
http://pier.unirc.eu/cestino/scambia..._1sol_prof.tgz

to a 3 layers seemingly converging one. The latter being a solid layer and two halves fluid layers with symmetry bc.

I have not been able to run parallel both of them.
Pierpaolo is offline   Reply With Quote

Old   October 21, 2009, 03:12
Default
  #4
Member
 
toto
Join Date: Jun 2009
Posts: 71
Rep Power: 16
ronaldo is on a distinguished road
Hi Pierpaolo,

could you please explain me how to configure the makeCellSets file and tell me what i would like to do step by step (not all ...)?

What about the changeDictionaryDict?

Thanks in advance!
ronaldo is offline   Reply With Quote

Old   October 21, 2009, 05:07
Default
  #5
New Member
 
Join Date: Apr 2009
Posts: 10
Rep Power: 17
Pierpaolo is on a distinguished road
Quote:
Originally Posted by ronaldo View Post
Hi Pierpaolo,

could you please explain me how to configure the makeCellSets file and tell me what i would like to do step by step (not all ...)?

What about the changeDictionaryDict?

Thanks in advance!
I think $casedir/makeCellSets is the file needed by setSet command in order to define the zones (solid and fluid) inside the domain you prepared in $casedir/constant/polyMesh/blockMeshDict.

If you have a look, for example at the makeCellSets in the tutorial case chtMultiRegionHeater, you will see that the syntax is quite self explanatory:
-----------------------------------------------------------------------
cellSet heater new boxToCell (-0.01 0 -100 )(0.01 0.01 100)
cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
cellSet bottomAir clear
cellSet bottomAir add cellToCell heater
cellSet bottomAir add cellToCell leftSolid
cellSet bottomAir add cellToCell rightSolid
cellSet bottomAir add cellToCell topAir
cellSet bottomAir invert
-----------------------------------------------------------------------
In the first three lines you define three new solids (you can tell it by their names which reasonably contain the word "solid") by giving the coordinates of two opposite corners. In the fourth line you do the same but with a fluid region (you name it in a convenient way by including the word "air", in this case). In the sixth line you make sure the zone you are about to build is cleared an then you proceed in a reverse way first building the bottomAir zone (or region ... the difference is not clear to me) as thought it were a solid region, adding all the solid pieces you have just declared. Finally in the last line you invert the selection taking the complement of the zone you have just set from the domain you have in blockMeshDict.
The command setToZones and splitMeshRegions do the rest.

About changeDictionaryDict: they are files of boundary conditions in which you have to set the proper bcs for each zone (region).
Once the regions have been prepared (giving in order the above
mentioned commands (being blockMesh the first not being cited)) you have a $dircase/firstTimeStep dir in which you will find the dirs with the names of the zones you have just defined. In these dirs you find the polyMesh dirs in which the boundary files report the new created patches (e.g. bottomAir_to_heater in $casedir/firststepdir/bottomAir/polyMesh/boundary and heater_to_bottomAir in $casedir/firststepdir/heater/polyMesh/boundary) of separation between the regions. In changeDictionary you have to set the boundary conditions for each patch of each zone.

Hope this helps
Pierpaolo is offline   Reply With Quote

Old   October 21, 2009, 05:40
Default Thank you so much Pierpaolo
  #6
Member
 
toto
Join Date: Jun 2009
Posts: 71
Rep Power: 16
ronaldo is on a distinguished road
Quote:
Originally Posted by Pierpaolo View Post
I think $casedir/makeCellSets is the file needed by setSet command in order to define the zones (solid and fluid) inside the domain you prepared in $casedir/constant/polyMesh/blockMeshDict.

If you have a look, for example at the makeCellSets in the tutorial case chtMultiRegionHeater, you will see that the syntax is quite self explanatory:
-----------------------------------------------------------------------
cellSet heater new boxToCell (-0.01 0 -100 )(0.01 0.01 100)
cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
cellSet bottomAir clear
cellSet bottomAir add cellToCell heater
cellSet bottomAir add cellToCell leftSolid
cellSet bottomAir add cellToCell rightSolid
cellSet bottomAir add cellToCell topAir
cellSet bottomAir invert
-----------------------------------------------------------------------
In the first three lines you define three new solids (you can tell it by their names which reasonably contain the word "solid") by giving the coordinates of two opposite corners. In the fourth line you do the same but with a fluid region (you name it in a convenient way by including the word "air", in this case). In the sixth line you make sure the zone you are about to build is cleared an then you proceed in a reverse way first building the bottomAir zone (or region ... the difference is not clear to me) as thought it were a solid region, adding all the solid pieces you have just declared. Finally in the last line you invert the selection taking the complement of the zone you have just set from the domain you have in blockMeshDict.
The command setToZones and splitMeshRegions do the rest.

About changeDictionaryDict: they are files of boundary conditions in which you have to set the proper bcs for each zone (region).
Once the regions have been prepared (giving in order the above
mentioned commands (being blockMesh the first not being cited)) you have a $dircase/firstTimeStep dir in which you will find the dirs with the names of the zones you have just defined. In these dirs you find the polyMesh dirs in which the boundary files report the new created patches (e.g. bottomAir_to_heater in $casedir/firststepdir/bottomAir/polyMesh/boundary and heater_to_bottomAir in $casedir/firststepdir/heater/polyMesh/boundary) of separation between the regions. In changeDictionary you have to set the boundary conditions for each patch of each zone.

Hope this helps

Please Pierpaolo make an example relevant for this case thereby i understand it perfect! I would like to simulate an Heat exchanger and it is very very important for fin, air and so on..

Thank you in advance!
Attached Files
File Type: doc geaom.doc (67.5 KB, 27 views)
ronaldo is offline   Reply With Quote

Old   October 26, 2009, 03:26
Default
  #7
Member
 
toto
Join Date: Jun 2009
Posts: 71
Rep Power: 16
ronaldo is on a distinguished road
Quote:
Originally Posted by Pierpaolo View Post
I think $casedir/makeCellSets is the file needed by setSet command in order to define the zones (solid and fluid) inside the domain you prepared in $casedir/constant/polyMesh/blockMeshDict.

If you have a look, for example at the makeCellSets in the tutorial case chtMultiRegionHeater, you will see that the syntax is quite self explanatory:
-----------------------------------------------------------------------
cellSet heater new boxToCell (-0.01 0 -100 )(0.01 0.01 100)
cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
cellSet bottomAir clear
cellSet bottomAir add cellToCell heater
cellSet bottomAir add cellToCell leftSolid
cellSet bottomAir add cellToCell rightSolid
cellSet bottomAir add cellToCell topAir
cellSet bottomAir invert
-----------------------------------------------------------------------
In the first three lines you define three new solids (you can tell it by their names which reasonably contain the word "solid") by giving the coordinates of two opposite corners. In the fourth line you do the same but with a fluid region (you name it in a convenient way by including the word "air", in this case). In the sixth line you make sure the zone you are about to build is cleared an then you proceed in a reverse way first building the bottomAir zone (or region ... the difference is not clear to me) as thought it were a solid region, adding all the solid pieces you have just declared. Finally in the last line you invert the selection taking the complement of the zone you have just set from the domain you have in blockMeshDict.
The command setToZones and splitMeshRegions do the rest.

About changeDictionaryDict: they are files of boundary conditions in which you have to set the proper bcs for each zone (region).
Once the regions have been prepared (giving in order the above
mentioned commands (being blockMesh the first not being cited)) you have a $dircase/firstTimeStep dir in which you will find the dirs with the names of the zones you have just defined. In these dirs you find the polyMesh dirs in which the boundary files report the new created patches (e.g. bottomAir_to_heater in $casedir/firststepdir/bottomAir/polyMesh/boundary and heater_to_bottomAir in $casedir/firststepdir/heater/polyMesh/boundary) of separation between the regions. In changeDictionary you have to set the boundary conditions for each patch of each zone.

Hope this helps

Hi Pierpaolo,

could you tell me please what this error message means?
(I have tried to run chtMultiRegionFoam)
Could i send you my case to Mail? just to check out why it doesnīt work. I made all steps!
Itīs very important.

Thank you in advance!

Thank you in advance
Attached Files
File Type: pdf chtMultiregionFoam.pdf (25.4 KB, 73 views)
ronaldo is offline   Reply With Quote

Old   October 26, 2009, 09:06
Default
  #8
New Member
 
Join Date: Apr 2009
Posts: 10
Rep Power: 17
Pierpaolo is on a distinguished road
Send your case to:

pier@unirc.eu

I am just at the beginning with OF and I doubt I will be of any help with the error you reported in the attached pdf file.
Pierpaolo is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Concentric tube heat exchanger (Air-Water) Young CFX 5 October 6, 2008 23:17
Pressure drop in a heat exchanger Diana FLUENT 5 December 13, 2007 09:33
Heat Exchanger Model - urgent JSM FLUENT 6 September 22, 2007 04:25
Heat Exchanger...TWO Walid CFX 2 July 11, 2005 19:04
Convective Heat Transfer - Heat Exchanger Mark CFX 6 November 15, 2004 15:55


All times are GMT -4. The time now is 12:09.