fix capi: make sure capi.nuclides works after calling capi.load_nuclide

This commit is contained in:
Jingang Liang 2019-02-08 12:02:51 -08:00
parent 6935433737
commit 0adad96bf0
2 changed files with 11 additions and 0 deletions

View file

@ -893,6 +893,8 @@ void check_data_version(hid_t file_id)
//==============================================================================
extern "C" void extend_nuclides();
extern "C" void nuclide_from_hdf5(hid_t group, const Nuclide* ptr,
const double* temps, int n, int n_nuclide);
extern "C" int openmc_load_nuclide(const char* name)
{
@ -917,6 +919,11 @@ extern "C" int openmc_load_nuclide(const char* name)
int i_nuclide = data::nuclides.size();
data::nuclides.push_back(std::make_unique<Nuclide>(
group, temperature, i_nuclide));
// Read from Fortran too
nuclide_from_hdf5(group, data::nuclides.back().get(),
&temperature.front(), temperature.size(), i_nuclide + 1);
close_group(group);
file_close(file_id);

View file

@ -390,7 +390,11 @@ def test_restart(capi_init):
def test_load_nuclide(capi_init):
# load multiple nuclides
openmc.capi.load_nuclide('H3')
assert 'H3' in openmc.capi.nuclides
openmc.capi.load_nuclide('Pu239')
assert 'Pu239' in openmc.capi.nuclides
# load non-existent nuclide
with pytest.raises(exc.DataError):
openmc.capi.load_nuclide('Pu3')