Heavily based off of the existing custom source test.
Creates a simple class that can be deserialized from XML as use a
serialized XML representation to provide the energy value in the source.
Builds the source and runs the model in the test routine.
In the get_pandas_dataframe function of SurfaceMGXS, I removed all by_nuclide and micro options.
I also ordered the dataframe so that results would be ordered reliably.
This was necessary for tests to pass. Since the domain object is a little different for current than for the other classes,
I had to treat the reorder uniquely for the SurfaceMGXS class because of the presence of the mesh surface filter.
While other classes assume all meshes have a x, y, and z component, regardless of the dimension, this is not true in SurfaceMGXS. Therefore, I added an if statement for each dimension.
Since the inherted get_pandas_dataframe sorted values by x, y, z, and the current has a different labelling system
(doesn't include z if only 2 dimensional, and then also includes x-in, x-out, y-in, y-out, z-in z-out...)
I had to redefine get_pandas_dataframe in the SurfaceMGXS class and remove the sorting.
I had to put domain properties back into the SurfaceMGXS class to perform a checktype on the domain_type.
I updated the regression test mgxs_library_mesh to expect the correct input.
However, now the test fails for a 2-dimensional mesh. In 3D, the Current MGXS fails because it does not contain a 'z' dimension.
Meanwhile, all the other classes contain a 'z' dimension, equal to 1.
I need to figure out why the mesh used by SurfaceMGXS doesn't contain the same information as the other classes, even though it is the same mesh used in all.
1) Kept by_nuclide, num_nuclides, and nuclides in the docstrings because when building a mgxs library for all mgxs_types, the variables should be the same accross all classes.
However, I noted that they were unused for a SurfaceMGXS.
2) Removed all code related to nuclides and micro xs since they were unused anyway.
3) Removed the possibility of computing a Current with any domain other than mesh.
Included an error message if a current mgxs object is instantiated with any domain other than mesh.
Since mesh domains and by_nuclide features are uncompatible, an existing message is already raised when mesh and by_nuclide are used together.
4) Changed estimator type to analog.
These tests had to skip 'current' because current operates only with a mesh domain.
However, these tests impose a material domain. Therefore, they should not be run with current.