Open DanShort12 opened 4 years ago
I should mention I'm using v0.3.0 of OpenMOC and v0.11.0 of OpenMC
Hi Dan
The process is right but the angular dependence of group cross sections and scattering kernels are not supported in OpenMOC. I will fix the error message to make it more clear. You are right that the user's guide doesn't seem to be clear about this either, only the theory guide mentions sources are isotropic.
To model anisotropic scattering, the only supported option is the transport correction, which works really great for LWRs in the absence of control rods. I don't know how good it is for your system. This needs to be enabled before generating group cross sections in openmc, as additional tallies are required, with:
mgxs_lib.correction = 'P0'
This will modify the total group cross section (which becomes the transport group cross section) and adjust the inscatter group cross section accordingly. The current implementation uses the flux-limited approximation. If this works for you, that's great because there is no extra steps.
If not, a much better method to obtain transport group cross sections is the cumulative migration method (CMM), described in this masters or this paper Issue https://github.com/openmc-dev/openmc/issues/1541 mentions a branch that you can use to obtain the migration area of neutrons, from which you can obtain both diffusion coefficients (for diffusion calculations) and transport cross sections.
However, there is no heterogeneous tally of CMM implemented yet, so you'll have to obtain the transport correction ratio (=transport / total group cross section) for each material independently, with homogeneous medium calculations. For LWRs, it was sufficient to only do this for the water.
Guillaume
Hi Guillaume,
Thanks for the detailed notes. I'll loop back with the team to see what approach we'd like to take - from a quick test the P0 correction didn't seem to give a good match between the CE cross sections and MGXS for our use case. We may take a look at the CMM implementation to see if we can make use of that.
An update to the docs and tweak to the error message seems like a reasonable approach here for now.
Thanks again, Dan
I have an OpenMC MGXS library that has been generated with a Legendre order of 3. That setting is being used to ensure a good relationship between the total MGXS and CE cross section, and gives me a scattering matrix with shape 40 x 40 x 4 ([# groups in] x [# groups out] x [# angular bins]). However, when OpenMOC loads that library the scattering cross section is expected to have shape 40 x 40 (seemingly missing the [# angular bins] dimension). This results in an error raised from
Material::setSigmaS
because the expected number of energy groups (40) does not match the square root of the number of entries in the contiguous array being passed into the C++ method (in my case 80). This raises two questions to me:Material::setSigmaS
seems to imply that OpenMOC only handles isotropic scattering - is that a correct observation, or am I missing something there? Section 3.3 of the user guide mentions isotropic concentrations, which is understandable, but does not suggest that the scattering has to be isotropic from my reading.I've stripped down how I'm generating the MGXS and included below. It should be possible to run by extracting the OpenMC run files from openmc_run_files.zip and pointing the
openmc_rundir
variable to the directory that the zip has been unpacked into.Results in this error: