Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
There has been a known tallying issue in using a combination of
TimeFilter
andMeshFilter
with the track-length estimator (for example, as mentioned in [1], [2], and [3]). This is because neutron tracks span 4 dimensions (x, y, z, and t), so filtering both in time and space needs to be done simultaneously, not separately, as in the case of usingTimeFilter
+MeshFilter
.This PR adds
TimedMeshFilter
that accurately filters events with respect to a given time grid and a given mesh, even with the track-length estimator.Verification
The 1D 1G AZURV1 problem (a supercritical version, input script attached below) is used for verification. Note that there are known bugs in the OpenMC's time-dependent MG mode (see [3]), so to make it works correctly, some of the fixes in [3] are implemented in this PR as well.
Below are OpenMC results (10 batches, 100k particles/batch) for
(1) TimeFilter + MeshFilter with collision estimator,
(2) TimeFilter + MeshFilter with track-length estimator, and
(3) TimedMeshFilter with track-length estimator.
TimeFilter + MeshFilter results in an accurate solution if used with collition estimator, but it gives a wrong solution if used with track-length estimator. In particular, note that TimeFilter + MeshFilter with tracklength estimator produces nonphysical solution (non-zero flux beyond the physical wavefront of the neutrons)! TimedMeshFilter with track-lengh estimator, however, produces accurate results.
To drive home the verification, here are the error convergences of the three cases as a function of the number of particles per batch$N$ :
Here is the input script for the verification test:
Checklist