Unexpected behaviour of the SimpleReactor example
Hello again, I'm Francisco Alderete, I'm currently doing an internship in the group of Reactor Physics of the LPSC Grenoble directed by Adrien Bidaud.
I have noticed some strange behaviour while analyzing the data output of the example SimpleReactor.cxx
I slightly modified the file by adding a pool between the reactor and the storage. My goal was to obtain the Uranium vector that was coming out of the pool each time it's sent to the storage. The used fuel from the PWR is supposed to rest in the pool for three years before it's sent to the storage (There is never more that one badge of used fuel in the pool at the same time).
I used a small timestep (year*15/512) for the simulation and I found out that the uranium vector coming out of the pool each time the fuel in the pool was sent to the storage was varying slightly. This variation is linear for all the isotopes of Uranium. I would have expected to obtain no changes in the uranium vector that comes out of the pool each time it's sent to storage.
Could this changes be due to the timestep used? I have tried with different timesteps and the linear variation still appears but the slope changes.
Thanks in advance!
SimpleReactorMT.cxx - The modified file I used for the scenario simulation (4.14 KB)
Uranium232.png - Example of how the mass of Uranium 232 varies amongst the badges of uranium vectors that come out of the pool in different years (192 KB)
Uranium238.png - Example of how the mass of Uranium 238 varies amongst the badges of uranium vectors that come out of the pool in different years (201 KB)
Thank you for reporting this.
My first guess is that the behaviour you observed comes from the way the depletion (without neutron flux) is interpolated between two calculated values of the decay data base. That explain why when you change the time step (and so the number of interpolation and their time coordinates) it is changing the slop.
To check if I am right would you mind do the same but replacing the Decay data base part in your cxx by :
/*===Decay data base===*/
//The decay data base is taken from the file Decay.idx
DecayDataBank* DecayDB = new DecayDataBank(gCLASS->GetLog(), PATH_TO_DATA + "DECAY/ALL/Decay.idx");
gCLASS->SetDecayDataBase(DecayDB);//This decay data base will be used for all the decay calculations in this Scenario
The calculation will be slower. With this method (
DecayDB->SetFastCalculation(false);) there is no interpolations (until your time step is above 1 second).
Then you can also try to use SetFastCalculation(true) (which is the default) but changing the interpolation method in the sources.
To do so open the file $CLASS_PATH/source/src/EvolutionData.cxx and look for the function @Interpolate(double t, TGraph& EvolutionGraph)
Then replace its content by :
TString Option = "S";
double res = (double)EvolutionGraph.Eval(t,0,Option);
If Option is equal to "" a linear interpolation between the two points is used (that is what we used). If it's "S" this is a spleen function. You can look in the ROOT (cern) documentation if there is other interpolation methods (look for method Eval of the TGraph object)
Please report what you found,
RE: Unexpected behaviour of the SimpleReactor example - Added by Alderete Tommasi Francisco Martin over 2 years ago
I'm afraid I didn't get any good results:
First, I changed the timestep to year/24 (Because there's a maximum number of data I can paste in the .odc file).
Then I run the simulation of the modified Simple Reactor file (SimpleReactorMT.cxx) and saved the results for the fuel coming out of the pool every three years. (This time I extended the lifetime of the reactor to 55 Years).
Afterwards, I run the same simulation adding the changed you proposed: "DecayDB->SetFastCalculation(false);"
I obtained the EXACT same results as the previous simulation.
Finally, I set the fast calculation option to "true" again and I changed the interpolation method in the source file, choosing a Spline as you recommended. And, once again, The result didn't change at all.
Sorry for the bad news!
PD: I attached the results I obtained for the isotope U230. It's weird how in year 2045 it seems to restart from the initial value (year 2021) and repeat the same patern. The difference I found is that before that badge of used fuel is sent to the pool (in year 2042) the pool was empty for only ONE timestep, whereas in all the other cases the Pool is empty for TWO timesteaps before being reloaded with used fuel.
Capture d_écran de 2015-12-04 16_50_33.png - Results obtained in the three cases (205 KB)
Capture d_écran de 2015-12-04 16_59_23.png - The pool is empty for only one timestep in 2042 (185 KB)
Capture d_écran de 2015-12-04 16_59_15.png - In all the other cases the pool is empty for two timesteps (183 KB)
I don't really understand the issue you have from your second post.
But I can tell you for sure that what you are observing about the variation amount of plutonium is only a timestep synchronization issue...
you were using a 10 day timestep (365.25*15/512.).
Bur the discharge of you reactor is done at a precise second. Then you will have exactly 3600*24*365.25 *3 second of cooling inside the pool. and you are watching you inventory with a 10 day timestep, so you actually never got the exact image of the outgoing isotopic vector....
You have an image of your isotopic vector, with a 10day precision on the decay.... This explain the linear fluctuation ( you always shift of the same time your miss synchronization...) , after enough iteration it should be up again and restart a linear decrease...
Actually the decay should be use in the standard evolution with fast calculation enable, I really doubt you will get anything by disable it.
If you dis-activate the fast calculation, then no interpolations occurs... you will have an exact decay calculation with a 1sec precision (I don't really remember the precision...), so changing the linear to spleen interpolation will have no effect....
the spleen interpolation could (not sure it will) ONLY have an effect on decay with using the fast-calculation mode...
If it solve your problem that's cool, Otherwise, please give more detail on your second issue (input file...) !