Suggestions for a multi region conjugate heat transfer problem
1 Attachment(s)
Hello everybody,
I am going to simulate a conduction + convection problem in a multi region case, thus including solid regions and fluid regions. I am using OF 1.6.x, June update. As a first step, I modified the standard solveSolid.H to include heat generation. I tested this approach on multiRegionHeater tutorial: I set all the temperatures to 300 K and waiting for the heat generation having its effect. That worked. Than I created a simple model to understand how to proper set up the solver for a case similar to what I want to investigate. In that case, I have a slice 1 cell thick, with a cyclic boundary condition on the sides (see the attachment). There are different regions, corresponding to different materials: A to E are solids, G is fluid (laminar). The solid mesh is hexa, while the fluid is made of prisms. checkMesh did not complain: Code:
... However, all my run were not successful: different maxCo and maxDi always bring to a sudden divergence on h or Uz equation on fluid region, while the solid regions did not get a sensible temperature increase. For example: at time 7.30839 the log file for F says: Code:
Solving for fluid region F Code:
Solving for fluid region F Code:
0 2 Code:
Min/max T:263.3284 300.0309 I am thinking that all my problems may be due to the model itself:
Now, I am almost out of ideas... any suggestion is really welcome. maddalena 
Some answers
Hello,
I think it is a good idea to post some of the answer I have found up to now.
I have not find a good reference for cht simulations. Still waiting for your suggestions. Cheers, mad 
multi region with heat source
Hy Maddalena,
I am simulating a conductionconvection case, similar to your test setup in post 1. It's an axissymmetric case with a solid cylinder in the middle and some kind of heater band (solid) around the cylinder. Around the cylinder and the heater band is a fluid region. I added a heat source to the solver for the solid regions. The heat source is set to zero in the inner cylinder and nonzero in the heater band. The case is initialized with T=300K. After a about 10s the Temperature in the fluide region ranges from about Tmin=270K to Tmax=305K, so there is some mystic cooling :(. I found in your post above that you have had the same problem some time ago and that you solved it using a pressure waveTransmissive boundary condition on the top boundary. I implemented this BC in my case but it didn't solve the problem at all. What's about the other BC's in your case. Or do you have some other suggestions how to solve this problem? Thanks for your help in advance. Cheers, Klaus 
Quote:
due to the geometry, there are not other bc to fix, since everything else is cyclic. Unfortunately, I completely changed approach (deleted the G region) and I cannot help you more than this... Sorry. mad 
Hy Maddalena,
no problem, thanks for your answer. Klaus 
1 Attachment(s)
Hi Maddalena, hi Klaus,
I look for some experts for cyclic CHT problems: I have a periodic geometry and would like to define cyclic patches between different regions. Please see attached picture: The right side of fluid region1 should be coupled with the left side of fluid region 2. As the CHT models the meshes complete separate for each region I wonder if such a cyclic case can be generated (and solved). So I think cyclic conditions can be possible with the same region but not across different regions (?). Any suggestions? Thanks in advance. Ulrich 
Hallo,
do the two regions have the same properties? If so, than you can merge them (using mergeMesh) even if they do not touch each other, thus they become a single region. At this point, you can create the cyclics. hope to be clear... btw, have you had this problem when exporting mesh from an external mesh generator? mad 
Thanks a lot Mads,
great idea. I will check this out. I just came to the problem when I tried to prepare my mesh generator for these kinds of problems. I looked up the options in createPatch to generate cyclic patches for identical mesh faces. But there was no region option... This of course wouldn't make sense, because a mesh face can only belong to a single region. So another kind of coupling would be needed, I think. But your idea sounds great and will most likely work for my case. Best regards Ulrich 
Quote:
please, cold you report if you meet any problem when exporting from a mesh generator? thank you! mad 
Hi Mad,
I can confirm that all is true: I used createPatch to generate the cyclic patches for the complete domain first. Than I used splitMeshRegion to separate the fluid from the solid regions. This works pretty well. Thanks once more for your help! Ulrich 
Question
Hello,
I am relatively new to OpenFOAM still, so I apologize if I end up asking some questions that seem too simple. I am trying to set up a simulation in chtMultiRegionFoam that will consist of a solid cylinder containing a heat source (in W/m^3), surrounded by a gap that is filled with a gas, and then that is going to be surrounded by another solid, so it'll be: solid cylinder, gas annulus, and solid annulus. Outside that, I wanted to have a fluid flowing past. The purpose is to see how the fluid cools the materials from the volumetric heat source in the center. I realize that you all have been talking about modifying code to incorporate the heat source, but seeing as how I'm still new to most of this, I don't really understand how to go about doing any of it. Also, if anyone knows how to get the chtMultiRegionFoam to run with cylinders and annuli that would be great! (I think I set them up correctly, but they won't mesh very well and aren't all being counted as "regions" after I run it). Thanks, ~ Denise :) 
Denise,
you would have to add a source term to the Temperature/Energy equation. The first step here would be to derive the Temperature/Energy equation that you will be solving. I would advise you to take a look at the works of I Tiselj, R Monod & G Brillant and Kasagi. they have dealt mainly with turbulent channels channels but I guess the principle is more of less the same. I reckon that the first steps would be to decide what kind of simulation you will be running and boggle down on defining your governing equation in the context of finite volume methods. your proposal is doable, but there are many variables to be considered. In order to gain experience with tinkering in openfoam I would recommend you restrict yourself to simpler geometries with fewer regions. At most 2. Once you get the hang of that, then moving on to more complex geometry would be a lot simpler. I wish you good luck and don't hesitate to ask for help. 
Quote:
Leonardo, I appreciateyour response. I have an equation relating the temperature to the heat source (in W/cm^3) already, I guess my main problem is trying to incorporate that into OpenFOAM. I don't know if there is a certain program I need to put it into or what? If so, how? I know a bit about programming, but not enough that I would feel confident just guessing how to go about doing that. Also, I have been tinkering around with the simpler geometries as well. The solver chtMultiRegionFoam has an example called "multiRegionHeater", but when I look at the blockMeshDict and then the makeCellSets.setSet, the size in the blockMesh is much smaller than the domain in the makeCellSets.setSet. I think this is where I'm going wrong in my meshing with the solids: I don't understand why the vertices were chosen, etc. especially since in the first tutorials, the blockMesh was over the whole domain. Thanks, ~ Denise 
Quote:
well, I understand where you are coming from, but there is no way to make an omelet without cracking a few eggs. I started with openfoam doing channel flows using the default solver channelFoam. Then I modified modifying the pressure source term in the momentum equation so it would use a constant pressure source rather than a constant mass flow. Consequently I modified the solver so it would calculate turbulent energy budget terms. Once I was comfortable with all that I move on to multiregion solvers. Comparing the differences between the momentum equations in pisoFoam and channelFoam should give you an idea about how source terms are add. In this case in channelFoam the source term is at the RHS of the momentum equation. I don't know yet what solver you are going to use, but in case chtMultiRegionFoam there are two files containing the energy equations for the fluid and solid, namely fluid/HEqn.H and solid/HEqn.H . There is another version in the forums called chtIcoMultiRegionFoam that was made by Brazilian guy called Fabio Canesin and that version replaces HEqn.H by TEqn.H. There are a bunch of slides and documents from the chalmers university on openfoam that you may find helpful. As for your other question the parameters in makeCellSets.setSet sometimes go over the computational domain defined in the blockMeshDict. OpenFoam does not care if you go over the domain on makeCellSets.setSet, if is going to limit itself to the area inside the domain. Say I have a domain composed by a 2D square defined by the diagonal {(0,0)(1,1) }, If I want to select just the lower half of the square I can use {(1,1)(1,0.5)} just as well as I could have used {(0,0)(1,0.5)}, openfoam is only going to care about the part of your selection that is inside the computational domain. In any case good luck. 
Thanks! I will give all of those a shot. I appreciate the help.

All times are GMT 4. The time now is 15:17. 