-
Notifications
You must be signed in to change notification settings - Fork 563
Moving surface #3491
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?
Moving surface #3491
Conversation
Thanks for this interesting addition @ilhamv. Can you clarify what time scales of movement this is meant to support? Specifically, are movements expected to be relevant in the time scale of an individual neutron history? Or is this intended for problems in which a snapshot of the geometry is used for a given simulation (set of histories)? |
Thanks for the interest, @gonuke! It should support arbitrary time scales, even those comparable to neutron speed, as long as it is within OpenMC's precision tolerance. It is achieved by making both "surface evaluation" and "distance to surface" functions time-dependent, respecting the relative position and the relative velocity of the neutron and the surface. |
Do we worry about motion/source location in k-eigenvalue problems, esp. for delayed neutrons? |
That's a great point. Delayed products should be drifted along with the containing, moving cell. This can be implemented by adding a This PR, |
This is very interesting—thank you so much for all your work! I’m wondering: could I also use this feature to model a moving detector? For example, would it work if I define an absorption or pulse-height tally in a moving cell? Or is the mechanism that I tally a mesh? |
Thanks, @cfichtlscherer! It should be able to support moving detectors. To get the tally moving, we can filter by material or cell ( |
Description
This PR introduces a continuously moving surface capability for time-dependent simulations. The
Surface
class now has the methodmove
that takesvelocities
anddurations
to support piecewise continuous linear movement. As an example:The example above shows how we move a rod region by moving the top and bottom bounding surfaces. In the example, the rod region moves upward at the speed of 1 cm/s for 4 seconds, and then downward at the speed of 2 cm/s for 2 seconds, returning to the initial position.
The implementation in this PR is an extension of this conference paper.
Verification: Moving absorber
Let us consider a boron pellet, placed at a distance from a point source and moving in the air. Below is the resulting absorption reaction rate map over time, followed by the Python input script for the model.
Verification: Four-phase C5G7
Another form of verification is presented by the code-to-code comparison of the Four-phase C5G7 transient benchmark, which involves the movement of the control rod banks, exercising a range of transients.
Checklist