CFD Online Discussion Forums

CFD Online Discussion Forums (
-   CFX (
-   -   Periodic BC: Load results as Starting Condition? (

subsemitonium August 4, 2011 04:33

Periodic BC: Load results as Starting Condition?

I want to do some thermal research at a pipe. What I need for the simulation is a developed flow. Since I need a very detailed mesh I want to shorten the pipe by using periodic BC. The pipe wall is heated so I can't use constant heating for unlimited flow through the pipe - it would heat up to infinity.
What I planned to do is:
- Let the wall be isothermal and calculate the pipe with periodic BC until fully developed flow is reached
- Eliminate periodic BC and use the results from above (developed flow) as initial condictions for a 'once through' calculation of the thermal calculation

I know that in other CFD programs (OF,...) this is possible. Could anybody tell me how to load the results to my inlet in CFX ?
This would be really helpful to me. Thanks!

ghorrocks August 4, 2011 18:47

Or you could put a heat sink in the periodic boundary so the heat added by the walls equals the heat removed by the periodic boundary.

subsemitonium August 5, 2011 04:32

Wow, that's far easier than the method I was thinking about!
I checked the wall surface(it's not a straigth pipe) and multiplied with the constant heat flow through the wall I'd need to have a heat sink of 5.1211 W at the Periodic BC.

Edit: I correct my question. I want to set my periodic BC as follows: A constant mass flow of 1.25 kg/s shall flow through the pipe constantly. To substract the induced heat I want to have a heat sink of 5.1211W at the interface. How exactly do I set these to options? I'm trying but always getting an overflow error, so I think I do not set the mass flow correclty.

ghorrocks August 5, 2011 07:40

I think in V13 they added the ability to put a sources and sinks on periodic boundaries.

Otherwise you can put your own source/sink region on the periodic boundary or a solid region just before it and achieve the same effect.

And if you have specified 5.1211W heat input at the walls you cannot specify 5.1211W heat sink at the boundary and expect to converge. There will always be a small numerical imbalance between the two meaning it will continuously heat or cool and never converge. You are going to have to specify something to fix the temperature, maybe a convective BC.

subsemitonium August 11, 2011 07:37

I tried to set this boundary conditions but simply could not complete the expression for the heat sink in the periodic bc. I thought that I could set up the heat sink and set the the option
-> boundary source -> sources -> Energy -> total source -> expression:
AreaInt(Heat Flux to Liquid)@(wall)

I already tried with sum, areaint, int, ... but obviously I'm messing up the units. Or I didn't understand the expression fiel properly.
What I'm trying to enter is an expression that sums up the heat flux that flows from the wall to the fluid (something like surface*heat flux) and substract it in the heat sink.
Can anyone help?

ghorrocks August 11, 2011 07:52

As I mentioned before, I do not think this is a good approach. You need to specify a temperature somewhere to keep it bounded. Rather than make the exit heat loss equal the wall heat gain, I would make the exit reset the total flow enthalpy to a fixed value. This will allow you to build up a thermal profile, but keep things bounded.

Something along the lines of (InletHeat - massflowInt(enthalpy)@exit) - so when the outlet is below InletHeat it adds heat, and vice versa when the outlet is too hot. It might need some constants for convergence.

subsemitonium August 11, 2011 09:12

Thanks for you answer! I hope I got you right:

What I did now is: one side of the interface -> Source -> Energy

(massflowInt(static enthalpy)@inlet - massflowInt(static enthalpy)@outlet)

This should return a negative value. Since my heat flux is into the domain, the source substracts this heat. I hope this is what you explained to me.

I tried a run and set up monitor for the average wall temperature and aborted the run at 10 e9 C ... did I get something wrong?

ghorrocks August 11, 2011 19:18

Yes, as I have been saying all along this approach is not bounded and you will get temperatures like 1e9C!

You need to give it a reference temperature condition or temperature to keep it bounded. Replace massflowInt(static ent)@inlet with a constant value. This will keep it bounded.

subsemitonium August 15, 2011 04:47

I replaced as you said, though I could not figure out how CFX calculates the static enthalpy. As I would have chosen 0K as reference temperature I calculated
and set it as the constant value. The temperature diverged again.
Then I let one simulation run isothermal at 298.15 and evaluated
massflowint for static enthalpy at the inlet. The value showed surprisingly around 1e-3 W. I set that for the constant value CFX seems to use the 298.15K as reference temperature for the enthalpy calculation but again, the temperature raises to infinity. I already tried to move the source from outlet to inlet periodic BC but that didn't help.

aaronz July 12, 2013 10:48

I'm faced with a similar problem, I have flow through a channel and want to use periodic flow conditions for mass and momentum but not for energy.
I'm imposing a constant heat flux from the walls between 20-30% of the channel length, while the rest of the length of the domain is adiabatic.
The goal is to measure the effect of this "thermal trace" downstream. I need the enthalpy to reset to initial conditions (water at 298 K) at the inlet.
However, I need the inlet flow to have uniform enthalpy, not just average enthalpy, as the observed downstream temperature profile is crucial. If I used an energy sink, I would maintain average inlet enthalpy
but I don't believe it would be uniformly averaged.

What I'm wondering is if there's a way of resetting the inlet to initial conditions (water at 298 K) at each timestep, either by bounding the inlet to uniform enthalpy, or by letting
the solver solve the whole domain and prescribes the outlet flow to the inlet, and then writing a script to override this new inlet to the initial conditions. Is this possible?


ghorrocks July 13, 2013 07:32


However, I need the inlet flow to have uniform enthalpy, not just average enthalpy, as the observed downstream temperature profile is crucial. If I used an energy sink, I would maintain average inlet enthalpy
but I don't believe it would be uniformly averaged
I do not understand this comment. Why does an energy sink result in not uniform averaging? And what is uniform avergaing anyway?

aaronz July 14, 2013 22:10

Thanks for responding and let me clarify.
I shouldn't say uniformly averaged, I should say I want to maintain a uniform temperature of 298 K at the inlet of my domain.

My concern is that the fluid temperature at my outlet would not be uniform. If this were the case, even though the sink would apply uniformly to the periodic boundary, it would not result in a uniform inlet temperature at my inlet.

Thus I'm wondering if there's a way to make sure the inlet temperature is uniform at 298 K at each time step.

ghorrocks July 14, 2013 22:51

Then this is easy. You can fix the fluid to a defined temperature with a source term. Either put the source term on the inlet side of the periodic boundary (not sure if you can do this, but worth a try), alternately put a subdomain just inside the domain next to the inlet side and use a source term to pull the temperature to 298K.

aaronz July 24, 2013 11:04

Hi Ghorrocks, thank you for the reply. Thus far I haven't been able to implement this correctly.
The source does lower the temperature, but it is not bounded to the desired value.
My current expression is:
(Density * Velocity w * Specific Heat Capacity / length of subdomain) * (298.15 [K] - Temperature)
Similarly, I have tried:
(Mass Flow * Specific Heat Capacity / (Cross-sectional Area * length of subdomain)) * (298.15 [K] - Temperature)
The expression is placed in a subdomain just inside the inlet.
I have tried increasing the convergence criteria but that did not alter the results. I've been running the simulation to 100s (2.5 domain passes)
Here are temperature contour plots before and after the subdomain at 100s run-time:

aaronz July 24, 2013 11:11

The outlet temperature ranges from 298.5 to 299.9
After the subdomain, it ranges from 298.3 to 298.7

ghorrocks July 25, 2013 02:55

Your source term is wrong.

Source = -C*(298.15[K] - Temperature)
and a source term coefficient (if required) of -C.

C is a constant which needs to be large compared to the other terms. 1E6 should be OK.

aaronz July 30, 2013 10:40

Thank you Glenn for the reply. I've gotten this to work now.


All times are GMT -4. The time now is 23:48.