Comments (6)
these would simply be mcarrays named in a way that would allow us to understand they are density for each material
for example, if I have 3 materials, we could have an mcarray:
per_material_density:
{
den_mat_1: vals
den_mat_2: vals
den_mat_3: vals
}
and associated:
vol_fracs:
{
mat_1_vf:
mat_2_vf:
mat_3_vf:
}
of course in the future, we need to support sparse representations -- and would share indices across these type of mcarray reps
beyond this we can think about grouping via a hierarchy, having a special treatment for material fields
{
volume_fractions: { }
fields: {}
}
from conduit.
Storing per-material fields as an mcarray seems very sensible to me, and I like the idea of interpreting materials as a special type of field in Blueprint.
Given this information, I'd imagine that a Blueprint mesh with per-material fields would look like this:
mesh: {
domain0: {
/* coordsets, topologies */
fields: {
/* material is a reserved field name */
material: {
type: "scalar",
association: "element",
topology: "topology0",
values: {
material0: [ /* volume fractions for material 0 */ ],
...
materialN: [ /* volume fractions for material N */ ],
}
},
field0: {
type: "scalar",
association: "element",
topology: "topology0",
values: {
material0: [ /* per-material field values for material 0 */ ],
...
materialN: [ /* per-material field values for material N */ ],
}
},
/* other fields */
}
},
/* other domains */
}
Does this interpretation of Blueprint with materials seem correct, or is there something I'm missing? Thanks again for your help and I'm sorry if I'm missing anything obvious!
from conduit.
yes -- close to what I am thinking, lets chat in person to discuss using high bandwidth.
from conduit.
Based on our discussion, it seems like preliminary support for materials and per-material fields will look something like the following:
mesh: {
domain0: {
/* coordsets, topologies */
materials: {
association: "element",
topology: "topology0",
volume_fractions: {
material0: [ /* volume fractions for material 0 */ ],
...
materialN: [ /* volume fractions for material N */ ],
}
},
fields: {
field0: {
type: "scalar",
association: "element",
topology: "topology0",
values: {
material0: [ /* per-material field values for material 0 */ ],
...
materialN: [ /* per-material field values for material N */ ],
}
},
/* other fields */
}
},
/* other domains */
}
I'm going to close this issue for now, but we can reopen it when we refine the material and per-material field specifications in Blueprint.
from conduit.
that sounds good, I would just add that under "materials" we will want to have a name -- to support the possibility of multiple material volume fraction sets
from conduit.
Just a few quick examples for reference:
Multi-Material, Single-Component Fields
{
"coordsets":
{
"domain0":
{
"type": "explicit",
"values":
{
"x": [0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0],
"y": [0.0, 0.0, 0.0, 0.0, 0.333333343267441, 0.333333343267441, 0.333333343267441, 0.333333343267441, 0.666666686534882, 0.666666686534882, 0.666666686534882, 0.666666686534882, 1.0, 1.0, 1.0, 1.0]
}
}
},
"topologies":
{
"domain0":
{
"type": "unstructured",
"coordset": "domain0",
"elements":
{
"shape": "quad",
"connectivity": [0, 1, 4, 5, 1, 2, 5, 6, 2, 3, 6, 7, 4, 5, 8, 9, 5, 6, 9, 10, 6, 7, 10, 11, 8, 9, 12, 13, 9, 10, 13, 14, 10, 11, 14, 15]
}
}
},
"materials":
{
"LL":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [1.0, 0.5, 0.0, 0.5, 0.25, 0.0, 0.0, 0.0, 0.0]
},
"LR":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [0.0, 0.5, 1.0, 0.0, 0.25, 0.5, 0.0, 0.0, 0.0]
},
"UL":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [0.0, 0.0, 0.0, 0.5, 0.25, 0.0, 1.0, 0.5, 0.0]
},
"UR":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.0, 0.5, 1.0]
}
},
"fields":
{
"temp":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values":
{
"LL": [15.0, 15.0, 0.0, 15.0, 15.0, 0.0, 0.0, 0.0, 0.0],
"LR": [0.0, 5.0, 5.0, 0.0, 5.0, 5.0, 0.0, 0.0, 0.0],
"UL": [-0.0, -0.0, -0.0, -5.0, -5.0, -0.0, -5.0, -5.0, -0.0],
"UR": [-0.0, -0.0, -0.0, -0.0, -15.0, -15.0, -0.0, -15.0, -15.0]
}
}
}
}
Multi-Material, Multi-Component Fields
{
"coordsets":
{
"domain0":
{
"type": "explicit",
"values":
{
"x": [0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0, 0.0, 0.333333343267441, 0.666666686534882, 1.0],
"y": [0.0, 0.0, 0.0, 0.0, 0.333333343267441, 0.333333343267441, 0.333333343267441, 0.333333343267441, 0.666666686534882, 0.666666686534882, 0.666666686534882, 0.666666686534882, 1.0, 1.0, 1.0, 1.0]
}
}
},
"topologies":
{
"domain0":
{
"type": "unstructured",
"coordset": "domain0",
"elements":
{
"shape": "quad",
"connectivity": [0, 1, 4, 5, 1, 2, 5, 6, 2, 3, 6, 7, 4, 5, 8, 9, 5, 6, 9, 10, 6, 7, 10, 11, 8, 9, 12, 13, 9, 10, 13, 14, 10, 11, 14, 15]
}
}
},
"materials":
{
"L":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [0.0, 0.5, 1.0, 0.0, 0.5, 1.0, 0.0, 0.5, 1.0]
},
"R":
{
"type": "scalar",
"association": "element",
"topology": "domain0",
"values": [1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0]
}
},
"fields":
{
"velo":
{
"type": "vector",
"association": "element",
"topology": "domain0",
"values":
{
"L":
{
"x": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],
"y": [-2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0]
},
"R":
{
"x": [4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0],
"y": [-4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0]
}
}
}
}
}
from conduit.
Related Issues (20)
- remove braid `quads_and_tris` and `hexs_and_tets` from braid in `blueprint_mesh_examples` HOT 1
- What is `generate_sides` doing? HOT 1
- Strange normals for braid 3d mixed case HOT 2
- `relay::io::blueprint::load_mesh()` recognizes yaml as json HOT 3
- target MPI::MPI_CXX not found for CATALYST_WITH_EXTERNAL_CONDUIT=ON HOT 3
- CMake FindMPI Logic, look for C components instead of CXX components? HOT 1
- trailing space in yaml output for object of objects case HOT 3
- use some sort of `self` construct to allow blueprint index to survive renames?
- windows {write|read}_mesh abs path round trip issue
- partitioner should support implicit points topologies
- prefer const options for strided_structued
- update mesh utils iterator to support shape_map style mixed element meshes
- flatten test occasional testing failure culprit HOT 1
- hdf5 related asan issues HOT 3
- Compilation failure on Ubuntu 22.04 with OpenMPI on recent commit HOT 2
- use new top level mesh bp generate in conduit_generate_data util
- save mesh needs to put relative path in root file
- Parallel CGNS file i/o support
- YAML schema TODOs
- data type equals does not take into account the stride
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from conduit.