1) In mdgxs.py, DecayRate, get_xs(). There is no need to reverse the order
since there isn't an energy group filter anymore. Also, the new_shape
addition formats the cross section like all the others. I updated
mgxs_library_hdf5 test results accordingly.
2) In material.cpp. If you use a macroscopic dnesity other than 1.0,
the code still pushed back '1.0'. My change fixes that. Using a macro
density other than 1.0 wasn't tested anywhere, so I modifed mg_convert
to take a density of 1.1. The default macro density of 1.0 is used in
many other tests.
3) tally_scoring.cpp. Notice that the score is accumulated, then sent
to the function score_fission_delayed_dg where the tally is accumulated.
This amounts to "double accumulation". It makes sense to accumulate the score
over the delayed groups if there is no delayed group filter, but in this
case, when delayed group filter is not None, the score needs to reset
each time.
In other parts of SCORE_DECAY_RATE, I think the distinction between
accumulating and resetting the score is correct. The only place I wasn't
sure was line 1057 (and its equivalent in multi-group, line 1962).
It's too bad the decay-rate isn't tested very thoroughly. Although I
don't have time to do it myself, I think adding a DelayedGroups filter
to the mg_tallies test would be a good start.
To continue in the effort of merging Sam Shaner's transient capability,
this next PR adds the class DiffusionCoefficient to mgxs.py. It uses
the TransportXS class, but has some unique features in get_condensed_xs()
requiring its own function. There won't be any other MGXS classes added
after this.
I updated the docstrings and the appropriate regression tests.
Since my system outputs different formatting for the
mgxs_library_distribcell test, it is possible this test will continue
to fail. However, I did my best to modify it by hand so that it will pass.
Manually removed the "group" variable from the results as to not
mess up the formatting of the results. This might still require
trial and error to get it to pass exactly right.
This test often fails due to the formating of the results.
Now, I checked manually, and all these results are identical,
except of course for removing the "group" variable on the penultimate
chunk of results which is decay-rate.
So hopefully this formatting I get on my machine passes the other systems as well.
Rename sample_source -> sample.
Use std::string as type of argument to openmc_create_source.
Use reinterpret_cast when accessing dlsym.
Also moves check for dlerror to be before the attempt to create the
source (avoids null reference if fails) and capture error message
before dlclose, so that the error message is still available.
Formatting updates and some refactoring for examples and tests.
Custom sources are now created only through the new class-based method,
which supports parameterization.
New method also slightly adjusted to create the source as managed by a
unique_ptr.
Examples and tests updated to align with this approach.
Documentation updated.
Doc string updates to exclusively list openmc.RegularMesh as a domain type.
I removed an if-statement related to domain == mesh, since mesh is the only allowable domain.
Other minor edits.
Previously used MGXS_TYPES[:-1] but to be explicit, I instead looped over all MGXS_TYPES and excluded current.
These tests cannot run with current because:
-distribcell is not a valid domain for current
-nuclide/no_nuclides option is not relevant for current
Changed the domain from 'material' to 'mesh' in mgxs_library_condense and mgxs_library_hdf5.
This way, current can be tested for those functionalities.
The other tests were not relevant to current.
The test mgxs_library_mesh was already includes current.
Updates to examples and tests to refer to parameterized sources rather
than serialized sources.
Small update to source.h to remove reference to serialized parameters.
In the existing custom_source implementation, the source will only be
created once. This is much more efficient than the custom serialized
source, where each sampling will create a new instance of the class.
As there could be many samples, this introduces an overhead,
particularly if the operations to instantiate the class are not trivial.
This implementation defines an abstract class, which is then used by the
custom classes to allow the custom serialized class to be created based
on the plugin, sampled from, and then destroyed.
Update documentation and test to reflect this.
Changes the implementation of the serialization to be on an attribute of
the source XML element within settings.xml. This removes the need for a
new file containing the serialization.
Parameters are provided as a key-value string, separated by a comma and
a space, although the implementation can change this is required.
Change example values to align with existing custom_source to make
comparisons easier.
Update documentation to be consistent.