Ensure criticality keff

Hi!

I’ve been using OpenMC for the last month to simulate a PWR model. I have done some depletion calculations but my keff starts at 1.10 and ends at 0.83.

Is there a way to keep the keff at 1 for all the depletion time?

I’m trying to use the boron ppm concentration and the search for keff function, but I’m not getting where I want.

How should I do it?

Thank you

I want to simulate a reactor critial operation, but I don’t know if there is a way to keep the keff at 1 during all depletion time.

Is It possible to keep keff at 1 during a long time depletion?

Can I control the boron concentration during depletion to achive It?

Hi!

You might be able to do some funky stuff with transfer rates (OpenMC Depletion Transfer Rate Docs), but it would require some playing. Or possibly, using the criticality search each step to update the boron ppm in the water, which may require using openmc.lib? I’m sorry I cannot give a definite answer, someone else may be able to…

In my experience with LWRs or HTGRs, you tend to start with excess reactivity (as you have, maybe even a bit more depending on how long you want to simulate) and then when you reach a minimum k-eff which you deem acceptable, you say that’s when you have to refuel. That way you can say that you are off setting the excess reactivity by using control rods, which are then removed which will help give a slight kick at EOL.

So it depends what exactly you are going for!

I try to change the boron concentration in every burnup step, but I have no idea. Critical Boron Concentration in Burnup Calculation Hope this will help you, and if you get it please guide me.
Richard

Hi Zeshak and Richard,
If you have some time to deep dive into some script, I think Onix had the capabilities to do the depletion calculation followed by changes in boron concentration using openmc to solve the transport calculation. So you can see its source code for the depletion with boron concentration routine.
https://onix-documentation.readthedocs.io/en/latest/examples/assembly_nb.html
It’s quite old code, so I recommend you check the source code to find the calculation routine that you need.

In general, as JustAnotherNeutron suggests, you could do some initial transport calculations to find the proper amount of boron needed to make sure that you could achieve a critical condition for some sort of burn duration. You might need some keff limit to make sure that your core can operate with an adequate amount of reactivity during that period. Then, you could do the depletion calculation with the material composition (fuel and soluble boron) for the first burnup steps. After that, you could extract the fuel composition as an input to the second transport calculation, which then you used to find the second boron concentration to achieve the keff above unity for the second burnup period. Then do the second burnup calculation with the fuel and boron concentration you find before. Then extract the fuel composition for step 3, and so on.

I think it will be a long script to make sure that your core has a proper amount of keff for power maneuver.

Thank you all for your responses.

@JustAnotherNeutron
I had understood that for the simulations it was advisable to do the keff = 1. According to what you tell me, I understand that it would be enough to do the normal simulation and justify the excess reactivity with the use of control rods?

What I want to obtain is the composition of the spent fuel at the end of the cycle.

@wahidluthfi
Thanks for the link, I’ll take a look at it and see if I can use Onix to do it.

@Richard
I took a look at the link you attached and that is what I want to do. I’ve made a python script that more or less does that, but I haven’t gotten around to it yet.
If I come up with a solution, I’ll post it here.

Depending on the context but more often than not, if the focus of the work isnt specifically reactivity control over a cycle I personally wouldnt worry about supressing reactivity. It shouldnt be too difficult to keep k > 0.95 for 5 years (or some other fuel cycle).

To follow up on the critical boron search, it sounds like the suggestion is to do seperate burn up calculations for however long you want to deplete for before updating B conc, then take the resultant materials and do a criticality search. So something like:

  1. Deplete for X days
  2. Get Material compositions and update the model used for criticality search
  3. Do crit search and update B conc
  4. Repeat 1.

You could probably do some funky stuff to make this more efficient and neater as a script, but I think the methodology wouldnt be too strenuous.