hyperion-rt / hyperion

Hyperion Radiative Transfer Code
http://www.hyperion-rt.org
BSD 2-Clause "Simplified" License
52 stars 26 forks source link

HDF5 error when a large number of point sources are added #115

Open azimuthal opened 10 years ago

azimuthal commented 10 years ago

The following errors are encountered after "[sources] setting up sources" when a large number of point sources are added, each having its own spectrum:

HDF5-DIAG: Error detected in HDF5 (1.8.13) MPI-process 0:

000: H5Tnative.c line 122 in H5Tget_native_type(): unable to register data type

major: Datatype
minor: Unable to register new atom

001: H5I.c line 895 in H5I_register(): can't insert ID node into skip list

major: Object atom
minor: Unable to insert object

002: H5SL.c line 995 in H5SL_insert(): can't create new skip list node

major: Skip Lists
minor: Unable to insert object

003: H5SL.c line 687 in H5SL_insert_common(): can't insert duplicate key

major: Skip Lists
minor: Unable to insert object
astrofrog commented 10 years ago

@azimuthal - if you want to add more than a few hundred sources, you should try using a point source collection instead:

http://docs.hyperion-rt.org/en/stable/setup/setup_sources.html#point-source-collections

This can be used for many sources that share the same spectrum. Even if not all your sources are the same, you should be able to decompose them into main 'components' and add a point source collection for each. Does this make sense?

azimuthal commented 10 years ago

The upper limit of the number of point sources in this problem appears to be 95943. The option of using point source collections does not apply in our case because all our sources have different spectra. The problem can be avoided by using HDF5 1.8.5 instead of the current release 1.8.13.

astrofrog commented 10 years ago

@azimuthal - I guess what I meant is that even if all the spectra are different, if you have that many they can likely be decomposed into a linear superposition of different components, and then you would add one point source collection per component. But in any case, if using HDF5 1.8.5 works for you, then that's fine :)