Build (and memoise) the model-wide index of base material → using elements,
with per-element volume weights. Element enumeration comes from the forward
onDemandMaterialMap (element → definition list) that the parser already
builds, falling back to the relationship graph's AssociatesMaterial edges
(server-loaded models). Each element's definition list is preferentially
resolved from the graph (rel-express-id order, deduped) so multiple
IfcRelAssociatesMaterial per element all surface deterministically. Keyed
by base IfcMaterial express id.
Build (and memoise) the model-wide index of base material → using elements, with per-element volume weights. Element enumeration comes from the forward
onDemandMaterialMap(element → definition list) that the parser already builds, falling back to the relationship graph's AssociatesMaterial edges (server-loaded models). Each element's definition list is preferentially resolved from the graph (rel-express-id order, deduped) so multiple IfcRelAssociatesMaterial per element all surface deterministically. Keyed by base IfcMaterial express id.