|
Celeritas 0.7.0-dev.196+develop.8d0d9047c
|
Device-compatible map between physics surface IDs and models/indices. More...
#include <SurfacePhysicsMapData.hh>
Public Types | |
Type aliases | |
| template<class T > | |
| using | SurfaceItems = Collection< T, W, M, PhysSurfaceId > |
Public Member Functions | |
| CELER_FUNCTION | operator bool () const |
| True if assigned. | |
| template<Ownership W2, MemSpace M2> | |
| SurfacePhysicsMapData & | operator= (SurfacePhysicsMapData< W2, M2 > const &other) |
| Assign from another set of data. | |
Public Attributes | |
| SurfaceItems< SurfaceModelId > | surface_models |
| SurfaceItems< SubModelId > | internal_surface_ids |
Device-compatible map between physics surface IDs and models/indices.
One or more instances of these should be stored as member data inside a downstream ParamsData class. For instance, optical surface physics will have one map for roughness, one for reflectivity, and one for interaction.
If a SurfaceModel with ID 10 returns a list of surfaces {3, 1, 5} and another with ID 11 returns {6, 0, 4}, then this class will have a key-value mapping stored as two arrays:
With this setup, Collection data can be accessed locally by indexing on ModelSurfaceId .