Skip to content

to_silo supports a non-idiomatic volume fraction presentation case. Should we remove it? #1470

@JustinPrivitera

Description

@JustinPrivitera

to_silo supports this non-idiomatic case that does not conform to the Blueprint:

      volume_fractions:
        Material1:
          values: [1.0, 1.0, 1.0, ..., 0.53, 0.53]
        Material2:
          values: [1.0, 1.0, 1.0, ..., 0.14, 0.14]

https://github.com/LLNL/conduit/blob/dffc5a6c7b433665399231aa537469be32bce865/src/libs/blueprint/conduit_blueprint_mesh_matset_xforms.cpp#L277-L285

The cases we support everywhere are these:

# full (element_dominant and multi_buffer)

# matset: 
#   topology: "topo"
#   volume_fractions: 
#     background: [1.0, 1.0, 1.0, ..., 1.0, 1.0]
#     circle_a: [0.0, 0.0, 0.0, ..., 0.0, 0.0]
#     circle_b: [0.0, 0.0, 0.0, ..., 0.0, 0.0]
#     circle_c: [0.0, 0.0, 0.0, ..., 0.0, 0.0]

# sparse_by_material (material_dominant and multi_buffer)

# matset: 
#   volume_fractions: 
#     background: [1.0, 1.0, 1.0, ..., 1.0, 1.0]
#     circle_a: [1.0, 1.0, 0.5, ..., 1.0, 1.0]
#     circle_b: [0.333333333333333, 0.5, 1.0, ..., 1.0, 1.0]
#     circle_c: [1.0, 1.0, 1.0, ..., 0.333333333333333, 0.5]
#   element_ids: 
#     background: [0, 1, 2, ..., 98, 99]
#     circle_a: [52, 53, 54, ..., 93, 94]
#     circle_b: [55, 56, 57, ..., 96, 97]
#     circle_c: [15, 23, 24, ..., 55, 56]
#   topology: "topo"

# sparse_by_element (uni_buffer and element_dominant)

# matset: 
#   topology: "topo"
#   material_map: 
#     circle_a: 1
#     circle_b: 2
#     circle_c: 3
#     background: 0
#   volume_fractions: [1.0, 1.0, 1.0, ..., 1.0, 1.0]
#   material_ids: [0, 0, 0, ..., 0, 0]
#   sizes: [1, 1, 1, ..., 1, 1]
#   offsets: [0, 1, 2, ..., 105, 106]

We never usually have a values child underneath a specific material volume fraction. Because this case is in to_silo, this case is supported in VisIt and in Conduit Relay's Silo I/O features.

This came to light here: Alpine-DAV/ascent#1620

Removing this extra case in to_silo caused no tests to fail across the entire test suite.

I would like to remove this as it does not conform to the Blueprint and it is generally unsupported, so any matset operations other than to_silo will fail if your data looks like this. I would imagine that eventually the matset transforms will come to be used in other tools like Ascent, at which point we will either need to disallow this case or add it to the Blueprint and force all matset operations to support it.

@cyrush will investigate if there are other places that are relying on this case or if we can just remove support for it.

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions