Collections

In theory, all nodes, edges, faces, elements, blocks, materials, processor pieces etc. are just sets. See saf_declare_set for more of a description of sets. In practice, we have a need to distinguish between two kinds of sets: primitive ones such as the elements of a mesh, and aggregate ones, such as material or block sets. We call these two classes of sets, Cells and Sets respectively. Cells are primitive sets such as the nodes or elements of a mesh. What makes them primitive? They are not decomposed into any other sets, whose union can form them. In lattice theory terms, cells are Join Irreducible Members (or JIMS) of the subset inclusion lattice.

Sets are aggregate sets such as a processor piece or a block. In lattice theory terms, sets are Join Reducible Members (or JRMS pronounced “germs”). The key point here is that cells are never instantiated as first class sets in this API (e.g. using the saf_declare_set call). Instead cells only ever exist as members of collections.

On the other hand, collections themselves may be composed of either cells or sets. When a collection is declared, the client either specifies a cell-type for the members, implying the collection is composed of cells, or not, implying the collection is composed of sets.

Since collections are defined by their containing set and a collection category, this pair serves to define a collection and there is no specific SAF__Xxxx handle explicitly for collections.