diff --git a/AGENTS.md b/AGENTS.md
index 6ffb24a85f8..d663c09e579 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -213,6 +213,7 @@ Regression tests compare OpenMC output against reference data. **Prefer using ex
- **PyAPITestHarness**: Standard harness for Python API tests. Compares `inputs_true.dat` (XML hash) and `results_true.dat` (statepoint k-eff and tally values). Requires `model.xml` generation.
- **HashedPyAPITestHarness**: Like PyAPITestHarness but hashes the results for compact comparison
- **TolerantPyAPITestHarness**: For tests with floating-point non-associativity (e.g., random ray solver with single precision). Uses relative tolerance comparisons.
+- **VTKTestHarness**: Like TolerantPyAPITestHarness but keeps one voxel plot and also compares the flux and source arrays of the random ray VTK files
- **WeightWindowPyAPITestHarness**: Compares weight window bounds from `weight_windows.h5`
- **CollisionTrackTestHarness**: Compares collision track data from `collision_track.h5` against `collision_track_true.h5`
- **TestHarness**: Base harness for XML-based tests (no Python model building)
diff --git a/tests/regression_tests/random_ray_vtk/__init__.py b/tests/regression_tests/random_ray_vtk/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/regression_tests/random_ray_vtk/eigen_flat/inputs_true.dat b/tests/regression_tests/random_ray_vtk/eigen_flat/inputs_true.dat
new file mode 100644
index 00000000000..aa0a03f11e3
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/eigen_flat/inputs_true.dat
@@ -0,0 +1,119 @@
+
+
+
+ mgxs.h5
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+ 0.126 0.126
+ 10 10
+ -0.63 -0.63
+
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+
+
+ 1.26 1.26
+ 2 2
+ -1.26 -1.26
+
+2 2
+2 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ eigenvalue
+ 100
+ 15
+ 10
+ multi-group
+
+ 100.0
+ 20.0
+
+
+
+ -1.26 -1.26 -1 1.26 1.26 1
+
+
+
+ true
+ flat
+
+
+
+
+ 2 2
+ -1.26 -1.26
+ 1.26 1.26
+
+
+ 1
+
+
+ 1e-05 0.0635 10.0 100.0 1000.0 500000.0 1000000.0 20000000.0
+
+
+ 1 2
+ flux fission nu-fission
+ analog
+
+
+
+
+ 4 4 1
+ 0.0 0.0 0.0
+ 2.52 2.2 1.0
+
+
+
diff --git a/tests/regression_tests/random_ray_vtk/eigen_flat/results_true.dat b/tests/regression_tests/random_ray_vtk/eigen_flat/results_true.dat
new file mode 100644
index 00000000000..806a63f8f24
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/eigen_flat/results_true.dat
@@ -0,0 +1,307 @@
+k-combined:
+8.385858E-01 7.961547E-03
+tally 1:
+9.997473E-01
+1.999080E-01
+3.647422E-01
+2.660938E-02
+8.877096E-01
+1.576175E-01
+6.596313E-01
+8.733599E-02
+9.645251E-02
+1.866649E-03
+2.347461E-01
+1.105687E-02
+5.265210E-01
+5.588004E-02
+1.678151E-02
+5.674313E-05
+4.084283E-02
+3.361112E-04
+7.255342E-01
+1.058319E-01
+2.372143E-02
+1.130924E-04
+5.773322E-02
+6.698897E-04
+2.034631E+00
+8.302433E-01
+2.353203E-02
+1.110302E-04
+5.727296E-02
+6.576904E-04
+5.001687E+00
+5.005258E+00
+7.579105E-03
+1.149177E-05
+1.875397E-02
+7.036183E-05
+2.834778E+00
+1.607414E+00
+3.834521E-02
+2.941615E-04
+1.066553E-01
+2.275769E-03
+1.611723E+00
+5.196217E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.194565E-01
+1.347809E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+5.714128E-01
+6.575095E-02
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.153101E-01
+1.335408E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+2.091192E+00
+8.767382E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+4.453434E+00
+3.968333E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+2.431845E+00
+1.183113E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.905758E-01
+1.586353E-01
+3.331207E-01
+2.220078E-02
+8.107490E-01
+1.315037E-01
+6.268509E-01
+7.885079E-02
+9.396812E-02
+1.771993E-03
+2.286996E-01
+1.049619E-02
+5.173457E-01
+5.394832E-02
+1.688778E-02
+5.749804E-05
+4.110147E-02
+3.405828E-04
+7.124040E-01
+1.020387E-01
+2.388444E-02
+1.147159E-04
+5.812995E-02
+6.795059E-04
+2.032381E+00
+8.284515E-01
+2.403817E-02
+1.159107E-04
+5.850482E-02
+6.866001E-04
+5.067094E+00
+5.137271E+00
+7.796326E-03
+1.216304E-05
+1.929146E-02
+7.447189E-05
+2.841004E+00
+1.614651E+00
+3.867346E-02
+2.993412E-04
+1.075683E-01
+2.315842E-03
+1.015547E+00
+2.062759E-01
+3.838848E-01
+2.947687E-02
+9.342987E-01
+1.746028E-01
+6.672749E-01
+8.936443E-02
+1.006583E-01
+2.034231E-03
+2.449822E-01
+1.204953E-02
+5.291946E-01
+5.643268E-02
+1.734659E-02
+6.066244E-05
+4.221813E-02
+3.593267E-04
+7.290085E-01
+1.068312E-01
+2.454848E-02
+1.212049E-04
+5.974609E-02
+7.179431E-04
+2.036377E+00
+8.317006E-01
+2.418100E-02
+1.173001E-04
+5.885242E-02
+6.948306E-04
+4.962731E+00
+4.927955E+00
+7.669319E-03
+1.176788E-05
+1.897719E-02
+7.205244E-05
+2.786561E+00
+1.553086E+00
+3.814412E-02
+2.910337E-04
+1.060959E-01
+2.251570E-03
+plot_1.vtk flux_group_0:
+6.047841E-01
+5.711319E-01
+4.951928E-01
+4.590153E-01
+5.740759E-01
+5.561564E-01
+4.807656E-01
+4.824558E-01
+5.537308E-01
+5.480924E-01
+5.269392E-01
+5.310346E-01
+5.827065E-01
+5.973359E-01
+5.721900E-01
+5.726148E-01
+plot_1.vtk flux_group_1:
+1.038274E+00
+1.001371E+00
+8.932310E-01
+8.592597E-01
+1.014427E+00
+9.978791E-01
+8.974706E-01
+8.882848E-01
+1.005788E+00
+9.980367E-01
+9.658100E-01
+9.644631E-01
+1.033631E+00
+1.037318E+00
+1.016194E+00
+1.013432E+00
+plot_1.vtk flux_group_2:
+4.011087E-01
+4.046554E-01
+4.185627E-01
+4.192794E-01
+4.057611E-01
+4.070032E-01
+4.190576E-01
+4.184709E-01
+4.070420E-01
+4.075695E-01
+4.095736E-01
+4.090147E-01
+4.023955E-01
+4.013609E-01
+4.036887E-01
+4.033708E-01
+plot_1.vtk flux_group_3:
+1.387600E-01
+1.443710E-01
+1.629735E-01
+1.672593E-01
+1.424673E-01
+1.447999E-01
+1.620244E-01
+1.634913E-01
+1.430857E-01
+1.444860E-01
+1.497037E-01
+1.500004E-01
+1.381710E-01
+1.383021E-01
+1.410722E-01
+1.416524E-01
+plot_1.vtk flux_group_4:
+1.030079E-01
+1.056793E-01
+1.141604E-01
+1.170721E-01
+1.040339E-01
+1.052448E-01
+1.130806E-01
+1.144893E-01
+1.038706E-01
+1.045272E-01
+1.077177E-01
+1.080884E-01
+1.021949E-01
+1.021573E-01
+1.042055E-01
+1.046197E-01
+plot_1.vtk flux_group_5:
+1.253927E-01
+1.329089E-01
+1.632254E-01
+1.749505E-01
+1.277737E-01
+1.309657E-01
+1.572222E-01
+1.647295E-01
+1.257295E-01
+1.277221E-01
+1.384313E-01
+1.400886E-01
+1.214211E-01
+1.218412E-01
+1.281489E-01
+1.294892E-01
+plot_1.vtk flux_group_6:
+1.785199E-01
+2.003826E-01
+3.198731E-01
+3.642592E-01
+1.850330E-01
+1.936853E-01
+2.944633E-01
+3.248951E-01
+1.762112E-01
+1.817605E-01
+2.155434E-01
+2.207258E-01
+1.637172E-01
+1.660025E-01
+1.839652E-01
+1.880769E-01
+plot_1.vtk total_fission_source:
+6.118426E-02
+6.643250E-02
+0.000000E+00
+0.000000E+00
+6.266493E-02
+6.472900E-02
+0.000000E+00
+0.000000E+00
+6.045268E-02
+6.181088E-02
+6.998502E-02
+7.127898E-02
+5.747691E-02
+5.810902E-02
+6.241708E-02
+6.343340E-02
diff --git a/tests/regression_tests/random_ray_vtk/eigen_linear/inputs_true.dat b/tests/regression_tests/random_ray_vtk/eigen_linear/inputs_true.dat
new file mode 100644
index 00000000000..608ff1bc6cf
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/eigen_linear/inputs_true.dat
@@ -0,0 +1,119 @@
+
+
+
+ mgxs.h5
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+ 0.126 0.126
+ 10 10
+ -0.63 -0.63
+
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3
+
+
+ 1.26 1.26
+ 2 2
+ -1.26 -1.26
+
+2 2
+2 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ eigenvalue
+ 100
+ 15
+ 10
+ multi-group
+
+ 100.0
+ 20.0
+
+
+
+ -1.26 -1.26 -1 1.26 1.26 1
+
+
+
+ true
+ linear
+
+
+
+
+ 2 2
+ -1.26 -1.26
+ 1.26 1.26
+
+
+ 1
+
+
+ 1e-05 0.0635 10.0 100.0 1000.0 500000.0 1000000.0 20000000.0
+
+
+ 1 2
+ flux fission nu-fission
+ analog
+
+
+
+
+ 4 4 1
+ 0.0 0.0 0.0
+ 2.52 2.2 1.0
+
+
+
diff --git a/tests/regression_tests/random_ray_vtk/eigen_linear/results_true.dat b/tests/regression_tests/random_ray_vtk/eigen_linear/results_true.dat
new file mode 100644
index 00000000000..1a20c887823
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/eigen_linear/results_true.dat
@@ -0,0 +1,307 @@
+k-combined:
+8.362993E-01 7.089862E-03
+tally 1:
+9.982469E-01
+1.993123E-01
+3.629452E-01
+2.634853E-02
+8.833361E-01
+1.560724E-01
+6.610630E-01
+8.773367E-02
+9.648461E-02
+1.868159E-03
+2.348243E-01
+1.106582E-02
+5.286568E-01
+5.635827E-02
+1.683119E-02
+5.710288E-05
+4.096374E-02
+3.382421E-04
+7.281968E-01
+1.066429E-01
+2.376548E-02
+1.135417E-04
+5.784044E-02
+6.725512E-04
+2.042363E+00
+8.367791E-01
+2.359067E-02
+1.116125E-04
+5.741567E-02
+6.611399E-04
+5.024800E+00
+5.052234E+00
+7.615466E-03
+1.160383E-05
+1.884394E-02
+7.104796E-05
+2.849940E+00
+1.624483E+00
+3.866901E-02
+2.990759E-04
+1.075559E-01
+2.313789E-03
+1.615789E+00
+5.222584E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.199362E-01
+1.349369E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+5.710679E-01
+6.566403E-02
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.146887E-01
+1.333216E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+2.088724E+00
+8.745693E-01
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+4.445622E+00
+3.954188E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+2.424612E+00
+1.176092E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+8.840636E-01
+1.563342E-01
+3.302232E-01
+2.181821E-02
+8.036972E-01
+1.292376E-01
+6.234645E-01
+7.797306E-02
+9.348579E-02
+1.752971E-03
+2.275257E-01
+1.038352E-02
+5.151708E-01
+5.348019E-02
+1.683613E-02
+5.712506E-05
+4.097576E-02
+3.383735E-04
+7.094735E-01
+1.011788E-01
+2.381337E-02
+1.139961E-04
+5.795699E-02
+6.752424E-04
+2.025112E+00
+8.224179E-01
+2.398002E-02
+1.153308E-04
+5.836330E-02
+6.831651E-04
+5.054745E+00
+5.112307E+00
+7.788949E-03
+1.214049E-05
+1.927321E-02
+7.433384E-05
+2.837465E+00
+1.610789E+00
+3.870822E-02
+2.999072E-04
+1.076649E-01
+2.320221E-03
+1.013940E+00
+2.056244E-01
+3.835611E-01
+2.942756E-02
+9.335110E-01
+1.743106E-01
+6.671972E-01
+8.933817E-02
+1.007569E-01
+2.037810E-03
+2.452222E-01
+1.207073E-02
+5.291824E-01
+5.642729E-02
+1.736757E-02
+6.079292E-05
+4.226920E-02
+3.600996E-04
+7.288726E-01
+1.067939E-01
+2.457229E-02
+1.214184E-04
+5.980403E-02
+7.192073E-04
+2.036124E+00
+8.314782E-01
+2.421030E-02
+1.175686E-04
+5.892374E-02
+6.964209E-04
+4.963612E+00
+4.929709E+00
+7.685178E-03
+1.181662E-05
+1.901644E-02
+7.235086E-05
+2.788017E+00
+1.554738E+00
+3.829404E-02
+2.933400E-04
+1.065129E-01
+2.269413E-03
+plot_1.vtk flux_group_0:
+6.135822E-01
+5.766969E-01
+4.929469E-01
+4.575468E-01
+5.427457E-01
+5.450961E-01
+5.014247E-01
+4.775152E-01
+5.878641E-01
+5.531545E-01
+5.303654E-01
+5.529401E-01
+5.777719E-01
+5.962534E-01
+5.582408E-01
+5.788047E-01
+plot_1.vtk flux_group_1:
+1.049409E+00
+1.005407E+00
+8.861887E-01
+8.591006E-01
+9.513801E-01
+9.655758E-01
+9.444703E-01
+8.752556E-01
+1.070694E+00
+9.998374E-01
+9.542866E-01
+9.990454E-01
+1.023398E+00
+1.034621E+00
+9.883011E-01
+1.020755E+00
+plot_1.vtk flux_group_2:
+4.030177E-01
+4.034727E-01
+4.147695E-01
+4.193796E-01
+3.776413E-01
+3.936524E-01
+4.413809E-01
+4.112300E-01
+4.299764E-01
+4.052762E-01
+3.923634E-01
+4.152441E-01
+3.975131E-01
+3.985133E-01
+3.911380E-01
+4.041501E-01
+plot_1.vtk flux_group_3:
+1.391168E-01
+1.434767E-01
+1.614137E-01
+1.673567E-01
+1.319589E-01
+1.406866E-01
+1.706807E-01
+1.604016E-01
+1.502971E-01
+1.432738E-01
+1.405941E-01
+1.505952E-01
+1.363537E-01
+1.368419E-01
+1.363995E-01
+1.413892E-01
+plot_1.vtk flux_group_4:
+1.033682E-01
+1.051923E-01
+1.131509E-01
+1.171359E-01
+9.677517E-02
+1.025245E-01
+1.192859E-01
+1.123403E-01
+1.095666E-01
+1.040069E-01
+1.024106E-01
+1.093792E-01
+1.007961E-01
+1.011474E-01
+1.010806E-01
+1.046827E-01
+plot_1.vtk flux_group_5:
+1.255157E-01
+1.316047E-01
+1.620948E-01
+1.752836E-01
+1.188916E-01
+1.285926E-01
+1.655152E-01
+1.616158E-01
+1.310923E-01
+1.269314E-01
+1.283831E-01
+1.399191E-01
+1.194216E-01
+1.202196E-01
+1.242112E-01
+1.293034E-01
+plot_1.vtk flux_group_6:
+1.781728E-01
+1.966901E-01
+3.191125E-01
+3.668745E-01
+1.736182E-01
+1.926829E-01
+3.083634E-01
+3.181821E-01
+1.800892E-01
+1.803169E-01
+1.909680E-01
+2.149939E-01
+1.604806E-01
+1.631400E-01
+1.777440E-01
+1.866138E-01
+plot_1.vtk total_fission_source:
+6.121743E-02
+6.553713E-02
+0.000000E+00
+0.000000E+00
+5.867833E-02
+6.399824E-02
+0.000000E+00
+0.000000E+00
+6.241830E-02
+6.142482E-02
+6.348286E-02
+7.028735E-02
+5.647763E-02
+5.728260E-02
+6.039946E-02
+6.315384E-02
diff --git a/tests/regression_tests/random_ray_vtk/fs_flat/inputs_true.dat b/tests/regression_tests/random_ray_vtk/fs_flat/inputs_true.dat
new file mode 100644
index 00000000000..7789abc0e6d
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/fs_flat/inputs_true.dat
@@ -0,0 +1,254 @@
+
+
+
+ mgxs.h5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+
+ 2.5 2.5 2.5
+ 12 12 12
+ 0.0 0.0 0.0
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+
+
+
+
+ fixed source
+ 90
+ 15
+ 10
+
+
+ 100.0 1.0
+
+
+ universe
+ 1
+
+
+ multi-group
+
+ 500.0
+ 100.0
+
+
+
+ 0.0 0.0 0.0 30.0 30.0 30.0
+
+
+
+ true
+ flat
+
+
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 3
+ flux
+ tracklength
+
+
+ 2
+ flux
+ tracklength
+
+
+ 1
+ flux
+ tracklength
+
+
+
+
+ 3 3 3
+ 12.75 12.75 12.75
+ 24.9 24.9 24.9
+
+
+
diff --git a/tests/regression_tests/random_ray_vtk/fs_flat/results_true.dat b/tests/regression_tests/random_ray_vtk/fs_flat/results_true.dat
new file mode 100644
index 00000000000..ea29082605b
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/fs_flat/results_true.dat
@@ -0,0 +1,65 @@
+tally 1:
+5.364815E-01
+5.764087E-02
+tally 2:
+2.635573E-02
+1.416744E-04
+tally 3:
+1.885527E-03
+7.311352E-07
+plot_1.vtk flux_group_0:
+6.418241E-02
+1.419061E-02
+9.031969E-03
+1.839697E-02
+1.202567E-02
+1.742808E-04
+3.554224E-03
+8.094981E-03
+8.074061E-03
+5.722762E-03
+4.668543E-03
+4.913739E-03
+4.790228E-04
+2.782001E-03
+1.315225E-02
+5.422677E-03
+5.534124E-03
+1.325063E-04
+3.570325E-03
+4.067021E-03
+2.472544E-04
+1.422230E-02
+4.703243E-03
+4.056020E-04
+2.093527E-03
+1.636336E-04
+1.685014E-03
+plot_1.vtk external_source:
+3.140000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
diff --git a/tests/regression_tests/random_ray_vtk/fs_linear/inputs_true.dat b/tests/regression_tests/random_ray_vtk/fs_linear/inputs_true.dat
new file mode 100644
index 00000000000..bdccc415599
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/fs_linear/inputs_true.dat
@@ -0,0 +1,254 @@
+
+
+
+ mgxs.h5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+
+ 2.5 2.5 2.5
+ 12 12 12
+ 0.0 0.0 0.0
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+1 1 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+2 2 2 2 2 2 2 2 2 2 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+
+
+
+
+ fixed source
+ 90
+ 15
+ 10
+
+
+ 100.0 1.0
+
+
+ universe
+ 1
+
+
+ multi-group
+
+ 500.0
+ 100.0
+
+
+
+ 0.0 0.0 0.0 30.0 30.0 30.0
+
+
+
+ true
+ linear
+
+
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 3
+ flux
+ tracklength
+
+
+ 2
+ flux
+ tracklength
+
+
+ 1
+ flux
+ tracklength
+
+
+
+
+ 3 3 3
+ 12.75 12.75 12.75
+ 24.9 24.9 24.9
+
+
+
diff --git a/tests/regression_tests/random_ray_vtk/fs_linear/results_true.dat b/tests/regression_tests/random_ray_vtk/fs_linear/results_true.dat
new file mode 100644
index 00000000000..df8a6b1253d
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/fs_linear/results_true.dat
@@ -0,0 +1,65 @@
+tally 1:
+5.422753E-01
+5.888788E-02
+tally 2:
+2.666460E-02
+1.448679E-04
+tally 3:
+1.874218E-03
+7.240497E-07
+plot_1.vtk flux_group_0:
+9.133315E-03
+2.470312E-02
+8.639651E-03
+2.068152E-02
+1.821846E-02
+3.879083E-04
+3.972599E-03
+1.556799E-02
+1.563231E-03
+6.325816E-03
+6.817768E-03
+8.863986E-03
+5.132107E-04
+2.907239E-03
+2.343546E-02
+7.046433E-03
+1.158762E-02
+2.694198E-04
+2.483241E-03
+8.822081E-04
+2.509553E-04
+1.298585E-02
+1.076230E-03
+1.506452E-03
+5.795310E-03
+3.468050E-04
+2.400703E-03
+plot_1.vtk external_source:
+3.140000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
+0.000000E+00
diff --git a/tests/regression_tests/random_ray_vtk/test.py b/tests/regression_tests/random_ray_vtk/test.py
new file mode 100644
index 00000000000..1b78e1777c7
--- /dev/null
+++ b/tests/regression_tests/random_ray_vtk/test.py
@@ -0,0 +1,42 @@
+import os
+
+import openmc
+from openmc.examples import random_ray_lattice, random_ray_three_region_cube
+from openmc.utility_funcs import change_directory
+import pytest
+
+from tests.testing_harness import VTKTestHarness
+
+
+class MGXSTestHarness(VTKTestHarness):
+ def _cleanup(self):
+ super()._cleanup()
+ f = 'mgxs.h5'
+ if os.path.exists(f):
+ os.remove(f)
+
+
+@pytest.mark.parametrize("shape", ["flat", "linear"])
+@pytest.mark.parametrize("run_mode", ["eigen", "fs"])
+def test_random_ray_vtk(run_mode, shape):
+ with change_directory(f'{run_mode}_{shape}'):
+ openmc.reset_auto_ids()
+ plot = openmc.VoxelPlot()
+ if run_mode == 'eigen':
+ model = random_ray_lattice()
+ # Voxel centers off the azimuthal planes and rings of the pins
+ plot.width = (2.52, 2.2, 1.0)
+ plot.pixels = (4, 4, 1)
+ else:
+ model = random_ray_three_region_cube()
+ # Voxel centers off the 2.5 cm lattice planes
+ plot.origin = (12.75, 12.75, 12.75)
+ plot.width = (24.9, 24.9, 24.9)
+ plot.pixels = (3, 3, 3)
+ model.settings.random_ray['source_shape'] = shape
+ # The linear source keeps its gradients at zero for the first ten
+ # batches, so put all the active batches after them
+ model.settings.inactive = 10
+ model.settings.batches = 15
+ harness = MGXSTestHarness('statepoint.15.h5', model, plot)
+ harness.main()
diff --git a/tests/testing_harness.py b/tests/testing_harness.py
index 40c436b55a5..f4717c1c3a4 100644
--- a/tests/testing_harness.py
+++ b/tests/testing_harness.py
@@ -30,6 +30,21 @@ def colorize(diff):
yield line
+def read_vtk_arrays(path):
+ """Read the point data arrays from a legacy binary VTK file."""
+ arrays = {}
+ with open(path, 'rb') as fh:
+ while line := fh.readline():
+ if line.startswith(b'POINT_DATA'):
+ n = int(line.split()[1])
+ elif line.startswith(b'SCALARS'):
+ _, name, dtype = line.decode().split()
+ fh.readline() # LOOKUP_TABLE default
+ dtype = {'float': '>f4', 'int': '>i4'}[dtype]
+ arrays[name] = np.frombuffer(fh.read(4*n), dtype)
+ return arrays
+
+
class TestHarness:
"""General class for running OpenMC regression tests."""
@@ -455,6 +470,40 @@ def _compare_results(self):
assert compare, 'Results do not agree'
+class VTKTestHarness(TolerantPyAPITestHarness):
+ """Specialized harness for random ray tests that also check the flux and
+ source written to VTK files for a voxel plot.
+
+ """
+
+ def __init__(self, statepoint_name, model, plot):
+ super().__init__(statepoint_name, model)
+ # The base class removes all plots, so add back the one being tested
+ self._model.plots = [plot]
+
+ def _get_results(self):
+ """Digest the statepoint and VTK files and return as a string."""
+ outstr = super()._get_results()
+ # Adjoint runs also write the forward solve, to a .forward.vtk file
+ for vtk_file in sorted(glob.glob('*.vtk')):
+ for name, values in read_vtk_arrays(vtk_file).items():
+ # Compare the flux and source fields. The other arrays are
+ # random colors (FSRs, rank_subdomains), timings
+ # (measured_load), or not under test (Materials,
+ # weight_window_lower)
+ if name.startswith('flux_group_') or name in (
+ 'total_fission_source', 'external_source'):
+ outstr += f'{vtk_file} {name}:\n'
+ outstr += ''.join(f'{x:12.6E}\n' for x in values)
+ return outstr
+
+ def _cleanup(self):
+ """Delete the VTK files."""
+ super()._cleanup()
+ for f in glob.glob('*.vtk'):
+ os.remove(f)
+
+
class WeightWindowPyAPITestHarness(PyAPITestHarness):
def _get_results(self):
"""Digest info in the weight window file and return as a string."""
diff --git a/tests/unit_tests/test_random_ray_vtk_normalization.py b/tests/unit_tests/test_random_ray_vtk_normalization.py
deleted file mode 100644
index b6fa527bdc3..00000000000
--- a/tests/unit_tests/test_random_ray_vtk_normalization.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import math
-import struct
-
-import openmc
-from openmc.examples import random_ray_three_region_cube
-from tests.regression_tests import config
-
-
-def _read_vtk_flux(path, group, count):
- with open(path, 'rb') as fh:
- data = fh.read()
-
- marker = (f'SCALARS flux_group_{group} float\n'
- 'LOOKUP_TABLE default\n').encode()
- start = data.index(marker) + len(marker)
- end = start + count * struct.calcsize('>f')
- return struct.unpack(f'>{count}f', data[start:end])
-
-
-def test_random_ray_vtk_normalization(run_in_tmpdir):
- openmc.reset_auto_ids()
- model = random_ray_three_region_cube()
- model.settings.random_ray['source_shape'] = 'linear'
- model.settings.inactive = 5
- model.settings.batches = 10
-
- plot = openmc.VoxelPlot()
- plot.filename = 'random_ray_vtk_normalization.h5'
- plot.origin = (2.5, 2.5, 2.5)
- plot.width = (5.0, 5.0, 5.0)
- plot.pixels = (2, 2, 2)
- model.plots = [plot]
-
- model.run(openmc_exec=config['exe'])
-
- with openmc.StatePoint('statepoint.10.h5') as statepoint:
- source_tally = statepoint.get_tally(name='Source Tally')
- tally_flux = source_tally.mean.ravel()[0]
-
- vtk_flux = _read_vtk_flux(
- 'random_ray_vtk_normalization.vtk', group=0, count=8)
- plot_flux = sum(vtk_flux) / len(vtk_flux)
-
- assert math.isclose(plot_flux, tally_flux, rel_tol=0.15)