|
[Sponsors] |
need help about double pipe heat exchanger with chtMultiRegionSimpleFoam |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
December 6, 2017, 19:09 |
need help about double pipe heat exchanger with chtMultiRegionSimpleFoam
|
#1 |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
hello everyone,
im a beginner of openfoam. I have already made a case about double pipe heat exchanger with chtMultiRegionSimpleFoam. my case can run, but the result looks not good. i know there must be some mistakes in my case and the simulation time is also particularly short, but i cant find it, can someone help me to check it. so many thanks. My case: inner pipe (bottomWater): inner diameter 0.01m, the hot water flows through the inner pipe from pipe right to pipe left, the inlet temperature of hot water is 333K, velosity of hot water is 0.177m/s, it is transitional flow in inner pipe. outer pipe (topWater): outer diameter 0.03m, the cold water flows through the outer pipe from pipe left to pipe right, the inlet temperature of cold water is 288K, velosity of cold water is 0.035m/s, it is laminar flow in outer pipe. the outer face of the outer pipe is insulated. copper (midCopper): copper is the material of the inner pipe that used as a wall separating hot water and cold water. thermal conductivity of copper is 380 w/mk, copper thickness of inner pipe is 0.002m. Length of pipe is 4.5m i have updated my case file. no matter what the problem of this case have, please tell me, i will be very grateful. |
|
December 7, 2017, 01:25 |
|
#2 |
Senior Member
Uwe Pilz
Join Date: Feb 2017
Location: Leipzig, Germany
Posts: 744
Rep Power: 15 |
What solver did you use? What happens if you run the simulation?
__________________
Uwe Pilz -- Die der Hauptbewegung überlagerte Schwankungsbewegung ist in ihren Einzelheiten so hoffnungslos kompliziert, daß ihre theoretische Berechnung aussichtslos erscheint. (Hermann Schlichting, 1950) |
|
December 7, 2017, 08:23 |
|
#3 |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
i use chtMultiRegionSimpleFoam. when i run the simulation, it goes well. but the simulation time is too short and the outlet temperature of hot water from the simulation is big difference with experimental data.
experimental data: inlet temperature of hot water: 333K, outlet temperature of hot water is 318K inlet temperature of cold water: 288K, outlet temperature of hot water is 298K simulation result: inlet temperature of hot water: 333K, outlet temperature of hot water is 299K inlet temperature of cold water: 288K, outlet temperature of hot water is 298K |
|
December 9, 2017, 05:49 |
|
#4 |
Senior Member
Join Date: Sep 2013
Posts: 353
Rep Power: 21 |
Attached is a cleaned up version of you case. I'll help you through this, since this is a good example case for heat transfer for many on here. The main things to do are:
Open the blockMesh file and edit the radii and length to your values. Play around with the mesh resolution. Afterwards set the T and U inlet conditions. Inlet velocity profile use flowRateInletVelocity and the extrapolatedProfile option or a fixedMean / fixedProfile option. fixedValue sets one constant value over the entire channel. The entry length will falsify your results. In reality the water will enter the heat exchanger with a velocity profile not a constant value. Again set up in the case attached. This is known as the Graetz Problem, make sure to read up on it. turbulence model Change your turbulence model to kOmegaSST. IMO this should give you better results for transitional flows. Calculate the inlet values of k and omega and set them accordingly. mesh to make sure your results are in good agreement with experimental data you need a resolved boundary layer. The attached blockMesh allows for this kind of refinement via grading. Eyeball the yPlus value and set your values accordingly. You can check with the yPlus function object if you are in the ballpark. For a well resolved boundary yPlus < 1 is a necessity. With values ~30 you should be able to reproduce the experiments. residuals and convergence check the residuals and outlet temperature for convergence. Additional function objects are attached. Use foamMonitor to check during run time if these are falling. Code:
foamMonitor -l residuals.dat Change to non constant thermal Properties. Values for water can be found in the NIST webbook. Change your thermoPhysicalProperties files to polynomials once you were able to create a good solution with constant ones Check back if there are other questions |
|
December 10, 2017, 10:20 |
|
#5 | |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
Quote:
1. first i edit the radius and length with my value but i cant understand the blockMeshdict that you have made. Code:
convertToMeters 0.001; // necessary variables radiusI 5; // inner solid radius in mm radiusM 7; // outer solid radius in mm radiusA 15; // outer fluid radius in mm length -4500; //mm xa 5; // Netzfeinheit radiale Richtung ya 10; // Netzfeinheit Umfangsrichtung za 100; // Netzfeinheit in Rohrrichtung // automatically calculated values (i cant understand this part, like 0.30*$radiusI*sin(degToRad(45.0)), what does it mean?) c1p #calc "0.30*$radiusI*sin(degToRad(45.0))"; c2p #calc "0.70*$radiusI*sin(degToRad(45.0))"; c3p #calc "1.00*$radiusI*sin(degToRad(45.0))"; c4p #calc "1.00*$radiusM*sin(degToRad(45.0))"; c5p #calc "1.00*$radiusA*sin(degToRad(45.0))"; c1n #calc "-1.0*$c1p"; c2n #calc "-1.0*$c2p"; c3n #calc "-1.0*$c3p"; c4n #calc "-1.0*$c4p"; c5n #calc "-1.0*$c5p"; PRI #calc "0.25*$radiusI"; NRI #calc "-1.0*$PRI"; PRM #calc "0.70*$radiusI"; NRM #calc "-1.0*$PRM"; PRA #calc "1.00*$radiusI"; NRA #calc "-1.0*$PRA"; PRS #calc "1.00*$radiusM"; NRS #calc "-1.0*$PRS"; PRB #calc "1.00*$radiusA"; NRB #calc "-1.0*$PRB"; vertices ( // fluidA ($c1n $c1n $length) // 0 ($c1p $c1n $length) // 1 ($c1p $c1p $length) // 2 ($c1n $c1p $length) // 3 ($c2n $c2n $length) // 4 ($c2p $c2n $length) // 5 ($c2p $c2p $length) // 6 ($c2n $c2p $length) // 7 ($c3n $c3n $length) // 8 ($c3p $c3n $length) // 9 ($c3p $c3p $length) // 10 ($c3n $c3p $length) // 11 ($c1n $c1n 0) // 12 ($c1p $c1n 0) // 13 ($c1p $c1p 0) // 14 ($c1n $c1p 0) // 15 ($c2n $c2n 0) // 16 ($c2p $c2n 0) // 17 ($c2p $c2p 0) // 18 ($c2n $c2p 0) // 19 ($c3n $c3n 0) // 20 ($c3p $c3n 0) // 21 ($c3p $c3p 0) // 22 ($c3n $c3p 0) // 23 //solid ($c4n $c4n $length) // 24 ($c4p $c4n $length) // 25 ($c4p $c4p $length) // 26 ($c4n $c4p $length) // 27 ($c4n $c4n 0) // 28 ($c4p $c4n 0) // 29 ($c4p $c4p 0) // 30 ($c4n $c4p 0) // 31 // fluidB ($c5n $c5n $length) // 32 ($c5p $c5n $length) // 33 ($c5p $c5p $length) // 34 ($c5n $c5p $length) // 35 ($c5n $c5n 0) // 36 ($c5p $c5n 0) // 37 ($c5p $c5p 0) // 38 ($c5n $c5p 0) // 39 ); blocks ( //fluidA Inner hex (0 1 2 3 12 13 14 15) fluidA ($ya $ya $za) simpleGrading (1 1 1) hex (0 4 5 1 12 16 17 13) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (2 6 7 3 14 18 19 15) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (1 5 6 2 13 17 18 14) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (3 7 4 0 15 19 16 12) fluidA ($xa $ya $za) simpleGrading (1 1 1) // fluidA Boundary Layer hex (9 5 4 8 21 17 16 20) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (11 7 6 10 23 19 18 22) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (10 6 5 9 22 18 17 21) fluidA ($xa $ya $za) simpleGrading (1 1 1) hex (8 4 7 11 20 16 19 23) fluidA ($xa $ya $za) simpleGrading (1 1 1) // solid hex (25 9 8 24 29 21 20 28) solid ($xa $ya $za) simpleGrading (1 1 1) hex (26 10 9 25 30 22 21 29) solid ($xa $ya $za) simpleGrading (1 1 1) hex (27 11 10 26 31 23 22 30) solid ($xa $ya $za) simpleGrading (1 1 1) hex (24 8 11 27 28 20 23 31) solid ($xa $ya $za) simpleGrading (1 1 1) // fluidB hex (33 25 24 32 37 29 28 36) fluidB ($ya $ya $za) simpleGrading (1 1 1) hex (34 26 25 33 38 30 29 37) fluidB ($ya $ya $za) simpleGrading (1 1 1) hex (35 27 26 34 39 31 30 38) fluidB ($ya $ya $za) simpleGrading (1 1 1) hex (32 24 27 35 36 28 31 39) fluidB ($ya $ya $za) simpleGrading (1 1 1) ); edges ( // fluidA arc 0 1 (0 $NRI $length) arc 1 2 ($PRI 0 $length) arc 2 3 (0 $PRI $length) arc 3 0 ($NRI 0 $length) arc 4 5 (0 $NRM $length) arc 5 6 ($PRM 0 $length) arc 6 7 (0 $PRM $length) arc 7 4 ($NRM 0 $length) arc 8 9 (0 $NRA $length) arc 9 10 ($PRA 0 $length) arc 10 11 (0 $PRA $length) arc 11 8 ($NRA 0 $length) arc 12 13 (0 $NRI 0) arc 13 14 ($PRI 0 0) arc 14 15 (0 $PRI 0) arc 15 12 ($NRI 0 0) arc 16 17 (0 $NRM 0) arc 17 18 ($PRM 0 0) arc 18 19 (0 $PRM 0) arc 19 16 ($NRM 0 0) arc 20 21 (0 $NRA 0) arc 21 22 ($PRA 0 0) arc 22 23 (0 $PRA 0) arc 23 20 ($NRA 0 0) // solid arc 28 29 (0 $NRS 0) arc 29 30 ($PRS 0 0) arc 30 31 (0 $PRS 0) arc 31 28 ($NRS 0 0) arc 24 25 (0 $NRS $length) arc 25 26 ($PRS 0 $length) arc 26 27 (0 $PRS $length) arc 27 24 ($NRS 0 $length) // fluidB arc 36 37 (0 $NRB 0) arc 37 38 ($PRB 0 0) arc 38 39 (0 $PRB 0) arc 39 36 ($NRB 0 0) arc 32 33 (0 $NRB $length) arc 33 34 ($PRB 0 $length) arc 34 35 (0 $PRB $length) arc 35 32 ($NRB 0 $length) ); defaultPatch { name walls; (here walls represent the outer face of pipe) type wall; } boundary ( inlet { type patch; faces ( (0 1 2 3 ) (4 5 1 0 ) (3 2 6 7 ) (4 0 3 7 ) (1 5 6 2 ) (10 6 7 11) (9 5 6 10) (8 9 5 4 ) (8 4 7 11) (39 31 30 38) (38 30 29 37) (37 29 28 36) (36 28 31 39) ); } outlet { type patch; faces ( (13 12 15 14) (17 16 12 13) (12 16 19 15) (17 13 14 18) (14 15 19 18) (23 19 18 22) (20 16 19 23) (21 17 16 20) (22 18 17 21) (35 27 24 32) (32 24 25 33) (33 25 26 34) (34 35 27 26) ); } ); Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1606+ | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0/fluidA"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 1 -1 0 0 0 0 ]; internalField uniform ( 0 0 0 ); boundaryField { inlet { type flowRateInletVelocity; volumetricFlowRate 0.000013889; extrapolateProfile yes; value $internalField; } outlet { type inletOutlet; inletValue $internalField; value $internalField; } wall { type fixedValue; value uniform (0 0 0); } } Code:
outlet { type inletOutlet; inletValue $internalField; value $internalField; } |
||
December 10, 2017, 11:21 |
|
#6 |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
Thank you very much for your time and help. i dont know why i cant reply with code file. the simulation is running., after it is finished, i will upload the result of the simulation.
fluidA: hot water flows through the inner pipe fluidB: cold water flows through the outer pipe Last edited by wuyangzhen; December 10, 2017 at 17:04. |
|
December 11, 2017, 09:19 |
|
#7 |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
hello Bloerb,
Thank you very much again. i cant understand what you have said about mesh mesh to make sure your results are in good agreement with experimental data you need a resolved boundary layer. The attached blockMesh allows for this kind of refinement via grading. Eyeball the yPlus value and set your values accordingly. You can check with the yPlus function object if you are in the ballpark. For a well resolved boundary yPlus < 1 is a necessity. With values ~30 you should be able to reproduce the experiments. it means i need change the simpleGrading in blockmeshdict, so that the yPlus can be < 1? |
|
December 11, 2017, 09:29 |
|
#8 |
Senior Member
Uwe Pilz
Join Date: Feb 2017
Location: Leipzig, Germany
Posts: 744
Rep Power: 15 |
At which distance of the boundary layer you have to cover by the mesh depends on the model you run. RAND usually models around 30*yPlus. LES models at the space you have covered by the mesh. DNS models nothing, you have to make a very fine mesh until the friction is so large that no smaller vortices can arise.
__________________
Uwe Pilz -- Die der Hauptbewegung überlagerte Schwankungsbewegung ist in ihren Einzelheiten so hoffnungslos kompliziert, daß ihre theoretische Berechnung aussichtslos erscheint. (Hermann Schlichting, 1950) |
|
December 11, 2017, 11:11 |
|
#9 |
New Member
Yangzhen Wu
Join Date: Sep 2017
Posts: 8
Rep Power: 9 |
Thank you for your help.
From the Simulation i get 2 pictures about yplus fluidA: 1.5<yPlus <2 fluidB: 2.25 <yPlus <2.3 it means i need to refine the mesh, so that the yPlus < 1? |
|
December 11, 2017, 13:26 |
|
#10 |
Senior Member
Join Date: Sep 2013
Posts: 353
Rep Power: 21 |
Not necessarily. CHT requires two things:
What i meant is simpleGrading. Change this in such a way that your fluid boundary layers are resolved without drastically increasing the cell size. The values you have right now are perfectly fine however. I also mentioned polynomial values for your fluid. After looking at your post again this is also overkill. The temperature range for your problem is simple to small for this to drastically effect your results. The biggest problem right now is probably that your residuals for h are not falling in one of the regions. Why and which region is that? You might have to check mesh quality and the schemes and solution files. |
|
December 12, 2017, 01:19 |
|
#11 |
Senior Member
Uwe Pilz
Join Date: Feb 2017
Location: Leipzig, Germany
Posts: 744
Rep Power: 15 |
> for turbulent flow these boundary layers are however often so small (or to put it more correctly, the sublayers and hence your gradient needed for the correct cht results)
The thickness of the layer of temperature changes is around 10% of the thickness of the Prandtl layer. To describe the temperature layer you should have a few cells there, for better accuracy around 10. Keep in mind that a refinement to the wall may destabilize your simulation.
__________________
Uwe Pilz -- Die der Hauptbewegung überlagerte Schwankungsbewegung ist in ihren Einzelheiten so hoffnungslos kompliziert, daß ihre theoretische Berechnung aussichtslos erscheint. (Hermann Schlichting, 1950) |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
No Display of Heat Transfer Graphs For Double Pipe Heat Exhanger in CFX Solver | Shomaz ul Haq | CFX | 17 | November 25, 2015 23:44 |
how to analysis double pipe heat exchanger in cfx | rammax8 | CFX | 12 | February 14, 2014 17:10 |
Question about heat transfer coefficient setting for CFX | Anna Tian | CFX | 1 | June 16, 2013 07:28 |
[ANSYS Meshing] double pipe heat exchanger meshing in ICEM CFD | chitra | ANSYS Meshing & Geometry | 0 | April 13, 2013 09:36 |
pipe in pipe heat exchanger | JohannV | FLUENT | 3 | December 3, 2009 03:53 |