-
Notifications
You must be signed in to change notification settings - Fork 565
Tally spectrum of secondary particles #3547
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Currently (in the new approach), the example problem from #3453 gives: ![]() Which looks the same as in #3453. The script to run this is:
|
So, to accomplish the functionality I was shooting for in the original PR, the goal would be to use a matrix for group-to-group production of different particle types. For example columns might be photon energy groups and rows neutron groups so that the multigroup spectrum of photons given neutrons could be obtained. With this PR, it's not clear to me how that could be obtained in a tensor product fashion like that, although it may be able to calculate the overall secondary spectrum. You need to capture the correlation between neutron E and photon E, and with this approach where tallying seems to not take place until the secondary is revived and treated as an active particle, I'm not seeing how that correlation could be preserved for output in a tally since the parent particle's energy long gone after the secondary is revived. |
You're right, to do that I will need to store the original particle energy in E_last... I think afterward you will get your matrices by using a combination of EnergyFilter, EnergyoutFilter, ParticleFilter and ParticleOutFilter. |
9e92b49
to
09b9e90
Compare
OK, I see what you're getting at. But suppose in particular we want the photon-from-neutron production matrices' Legendre moments. In that case you have to go and start saving the pre-collision direction of the original particle that made the source site. On the other hand, a SecondaryDirectionCosine could be filtered instead. If other quantities were needed (I can't think of any at the moment), the data saved on the source site (a struct whose size is important to keep small) again has to be increased further. So, for these reasons, my opinion is that the modified filters on secondaries are superior because they never require storing extra data -- the tallying gets done when the sites are created. It's more code, but we don't have to add any transport-time data tied to source sites. |
Thanks for your feedback @gridley. Based on your comments: I will try the new approach and will get back to you. |
In the new approach the tallying gets done when creating secondaries. |
Now that is a very interesting and effective approach! I would counter this by pointing out that putting a At this point, I'd like to leave it to someone else to decide on which implementation, if any, they'd like to merge into the code. |
Fair enough @gridley. @paulromano, @pshriwise, @jtramm. What do you think? |
Description
This PR enable tallying spectrum of secondary particles.
This PR is a different approach to #3453 .
Checklist