Best Practices for Coupled Analyses

Hi all

Can anybody suggest the best way to go around performing coupled openmc / thermal hydraulic (sub-channel) analysis? More specifically, how to handle temperature variaton in fuel (axially for one pin and radially for different pins present) while density/temperature variation also.

Should we use distribmat for fuel temperature variation? Would be much appreciated if a simple example for two fuel pin model with two axial nodes can be provided.

I actually plan to do this eventually in my GUI.

You obviously need to define a new openmc material that is bounded by appropriate surfaces. Thus you could parametrize material definitions by creating a function whose argument might be an array of temperatures i.e. np.linspace(temperature_start, temperature_stop, temperatute_steps). You would then be left with len(openmc.materials) == temperature_steps. At this point you will need to parametrize surface definitions by creating a creating a function whose argument might be an array of boundaries that would characterize the variation in your geometry i.e. for temperature variation axially, you might segment your geometry into a number of regions bounded by 2 Z-Planes. You would then need to assign all your materials to the corresponding regions bounded by the surfaces you created in your surface definitions.

Thanks @Sterling for a detailed answer.

Few small queries are that would I need a different material in materials.xml for each axial node of all the fuel rods. The thing is for a large PWR case, with multiple axial nodes, going for like pin-by-pin coupling (something like this https://www.sciencedirect.com/science/article/pii/S0029549318303121), the number of materials can be hugggggeeeeee …

So my question being, with current capabilities of OpenMC is it possible to use a single material (say in a fuel assembly) with different temperatures ?

Mmmm it might appear that way however if use the openmc.RectLattice, for both assembly and core lattices it shouldn’t be that many materials still. The only way it would be an insanely large amount is if you wanted to vary the temperature axially for every .01 cm or something crazy that would result in many materials. As far as the difference between full-core and cell model, material definition should not change in amount i.e. there would be the same number of materials.

As far as I know there is no way to define temperature variation in a single material. It would be difficult to make sense of this too, I think, based on the way things are defined spatially using cells and universes

Hi Khurrum,

We have a distributed temperature functionality that works just like the distributed materials. For an example, look at the tests/regression_tests/multipole/test.py file. In there, you will find cell c11 that uses just one material but has a different temperature everywhere it appears in the geometry. This will work fine when temperature is the only thing that changes across cell instances, but adding density variations means you’ll need to revert to distributed materials. Be aware that the distributed temperatures (without distributed materials) feature has some bugs in 0.10.0, so please only use it with the develop branch (or any versions >0.10.0 that we may release in the future).

Let us know if that example gives you enough information to figure out the distribtemp feature. If not, I’ll try to make a more illustrative example.

Thanks @Sterling Harper. That sure helps :slight_smile: