Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
f1a1c6d
start
JustinPrivitera Jan 28, 2026
64630ed
generalized to silo method
JustinPrivitera Jan 28, 2026
b9469dd
new content
JustinPrivitera Jan 29, 2026
f0c1997
end for now
JustinPrivitera Jan 29, 2026
1f25e5b
new world of field-supported new to_silo + separated data collection …
JustinPrivitera Jan 29, 2026
c07937e
add test for create or reuse material map
JustinPrivitera Jan 30, 2026
4052e15
renumber mat ids and test
JustinPrivitera Jan 30, 2026
31c5dc9
fix mistakes in to_silo
JustinPrivitera Jan 30, 2026
158c1b0
refactored to_silo again, now supports fields and is elegant
JustinPrivitera Jan 30, 2026
558f9c1
works, just needs to compile
JustinPrivitera Jan 30, 2026
91f5f36
fix a week of compiler errors
JustinPrivitera Jan 30, 2026
0fab39d
fix all tests
JustinPrivitera Jan 30, 2026
1da0b56
move away from cpp containers
JustinPrivitera Jan 30, 2026
9707ce5
create or copy material map
JustinPrivitera Jan 30, 2026
5021520
MESS
JustinPrivitera Jan 30, 2026
d2c8721
o brave new world
JustinPrivitera Jan 31, 2026
dc610f8
wired up walk full matset
JustinPrivitera Jan 31, 2026
54866ea
general refactor with my new walkers
JustinPrivitera Jan 31, 2026
9b25785
new world with context
JustinPrivitera Jan 31, 2026
a5257f4
I may have gone too far in a few places
JustinPrivitera Jan 31, 2026
ce21135
note to eld
JustinPrivitera Jan 31, 2026
75b9793
revert back to before walk zone with context
JustinPrivitera Feb 2, 2026
b1d727d
walk by element logic for fields
JustinPrivitera Feb 2, 2026
06742f7
new paradigm for element-dom fields
JustinPrivitera Feb 2, 2026
5e913ca
check for material dependence for fields sooner
JustinPrivitera Feb 2, 2026
4df7080
use field walkers
JustinPrivitera Feb 2, 2026
2ff1143
walk by material for matsets
JustinPrivitera Feb 3, 2026
fa34462
use walk by material where applicable
JustinPrivitera Feb 4, 2026
7040e87
walk matset field by material
JustinPrivitera Feb 4, 2026
ab358c7
fully refactored to_silo
JustinPrivitera Feb 4, 2026
e4304c0
use walk matset field by material
JustinPrivitera Feb 4, 2026
34d3708
full adoption of matset and field walkers
JustinPrivitera Feb 4, 2026
2eb6f5a
pull accessors up a bit
JustinPrivitera Feb 4, 2026
7548941
intermediate work on specsets
JustinPrivitera Feb 6, 2026
df571bc
merge develop in for specset helpers
JustinPrivitera Feb 6, 2026
6825763
working is bad
JustinPrivitera Feb 7, 2026
249527b
progress for specset to silo
JustinPrivitera Feb 11, 2026
223adad
to silo for specsets is close; I might also remake the world
JustinPrivitera Feb 13, 2026
e308816
walk by element has been generalized
JustinPrivitera Feb 13, 2026
93c3b8d
working on walk by material generalization
JustinPrivitera Feb 14, 2026
a6d9c1b
port to new generalized walk by material
JustinPrivitera Feb 17, 2026
f339f50
refactored field walkers; works just doesn't compile yet
JustinPrivitera Feb 17, 2026
e3b7a40
cimpiles
JustinPrivitera Feb 17, 2026
9485d5f
tests pass once more
JustinPrivitera Feb 17, 2026
cfb31bf
inlined lowest level walking implementations
JustinPrivitera Feb 19, 2026
8255e95
walk specset by element is mostly there
JustinPrivitera Feb 19, 2026
b6e910c
add as_index_t
JustinPrivitera Feb 19, 2026
14ac726
matset accessor is born
JustinPrivitera Feb 20, 2026
0b4539a
matset accessor is mostly there now
JustinPrivitera Feb 21, 2026
b855199
default error cases
JustinPrivitera Feb 24, 2026
863799d
get size hints
JustinPrivitera Feb 24, 2026
2ea61bb
compilation
JustinPrivitera Feb 24, 2026
e50bb38
walkers now use the matset accessor
JustinPrivitera Feb 25, 2026
3ff2a8c
walk matset now uses accessor
JustinPrivitera Feb 25, 2026
4cdae42
progress on specsets; sbe case is hard
JustinPrivitera Feb 26, 2026
00e0665
crazy comments
JustinPrivitera Feb 27, 2026
a675e7c
sbe species set access
JustinPrivitera Feb 27, 2026
614cb4a
add matset type info to accessor
JustinPrivitera Feb 27, 2026
0fe211a
the great simplification of walking using accessors begins
JustinPrivitera Feb 27, 2026
2aa1764
walk matsets by material now uses accessors too
JustinPrivitera Feb 27, 2026
1255c51
get rid of walk field by material
JustinPrivitera Feb 27, 2026
56947de
notes for monday
JustinPrivitera Feb 28, 2026
ccb1c7d
solve to_silo for mat-det specsets
JustinPrivitera Mar 2, 2026
61c8899
fix critical walk by material bug
JustinPrivitera Mar 2, 2026
2da2c5e
fix game-breaking bugs with matset conversions
JustinPrivitera Mar 2, 2026
5be9991
first tests for matset accessor
JustinPrivitera Mar 3, 2026
5fd4a1a
full layout data retrieval test
JustinPrivitera Mar 3, 2026
85dbf56
sparse by element layout data retrieval
JustinPrivitera Mar 4, 2026
67c288f
sparse by material layout data retrieval
JustinPrivitera Mar 4, 2026
dc78af0
error test
JustinPrivitera Mar 4, 2026
ecc963a
tests done
JustinPrivitera Mar 4, 2026
b1fa9cf
merge develop
JustinPrivitera Mar 4, 2026
1bd0f4e
index_t
JustinPrivitera Mar 4, 2026
b3b0ac1
properly conclude merge
JustinPrivitera Mar 4, 2026
86f7b93
rename zone to elem using AI (#1530)
JustinPrivitera Mar 6, 2026
90bbc72
codex renames api uses (#1534)
JustinPrivitera Mar 6, 2026
27ac676
merge develop
JustinPrivitera Mar 6, 2026
07c905a
heal the merge damage
JustinPrivitera Mar 6, 2026
a03c9c4
API changes
JustinPrivitera Mar 6, 2026
aafa814
slight renaming
JustinPrivitera Mar 6, 2026
ae93449
working on updating species to silo tests
JustinPrivitera Mar 7, 2026
99c0de5
move to detail
JustinPrivitera Mar 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/libs/blueprint/conduit_blueprint_mesh.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -966,6 +966,7 @@ namespace specset
//-------------------------------------------------------------------------
bool CONDUIT_BLUEPRINT_API is_uni_buffer(const conduit::Node &specset);

//-------------------------------------------------------------------------
void CONDUIT_BLUEPRINT_API to_multi_buffer_full(const conduit::Node &src_matset,
const conduit::Node &src_specset,
const std::string &dest_matset_name,
Expand Down Expand Up @@ -1008,7 +1009,11 @@ namespace specset
// https://silo.readthedocs.io/en/latest/
void CONDUIT_BLUEPRINT_API to_silo(const conduit::Node &specset,
const conduit::Node &matset,
conduit::Node &dest);
conduit::Node &dest,
const float64 epsilon = CONDUIT_EPSILON);

//-------------------------------------------------------------------------
index_t CONDUIT_BLUEPRINT_API count_materials_from_specset(const conduit::Node &specset);

//-------------------------------------------------------------------------
// blueprint::mesh::specset::index protocol interface
Expand Down
10 changes: 5 additions & 5 deletions src/libs/blueprint/conduit_blueprint_mesh_matset_accessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ MatsetAccessor::init(const Node &matset,

// For sparse by element material sets, the matset accessor uses the following
// ranges:
// 0 <= elem_idx < num elems
// 0 <= elem_idx < num elements
// 0 <= mat_idx < num mats for element elem_idx
// 0 <= spec_idx < num species for material mat_idx in element elem_idx
// To know which species mass fraction to fetch for a given (elem_idx, mat_idx, spec_idx),
Expand Down Expand Up @@ -768,7 +768,7 @@ MatsetAccessor::get_sbe_mass_frac(const index_t elem_idx,
const index_t data_index = m_sbe_o2m_idx.index(elem_idx, mat_idx);
const index_t nmatspec_offset = m_nmatspec_offsets_acc[data_index];

// We need an index that is between 0 and the number of species in this elem.
// We need an index that is between 0 and the number of species in this element.
// The way to calculate this is to add out num material species offset
// with the current species value index, which ranges between 0 and the
// number of species for this material.
Expand Down Expand Up @@ -862,7 +862,7 @@ index_t
MatsetAccessor::get_error_nmats_for_elem(const index_t elem_idx) const
{
(void) elem_idx;
CONDUIT_ERROR("Impossible to fetch number of materials for elem from "
CONDUIT_ERROR("Impossible to fetch number of materials for element from "
"non-sparse by element material set.");
return 0;
}
Expand All @@ -872,7 +872,7 @@ index_t
MatsetAccessor::get_error_nelems_for_mat(const index_t mat_idx) const
{
(void) mat_idx;
CONDUIT_ERROR("Impossible to fetch number of elems for a material from "
CONDUIT_ERROR("Impossible to fetch number of elements for a material from "
"non-sparse by material material set.");
return 0;
}
Expand All @@ -886,7 +886,7 @@ MatsetAccessor::get_error_nspec_for_mat(const index_t elem_idx, const index_t ma
// CONDUIT_ERROR("Impossible to fetch number of species for a material from "
// "specset.");
// no need to error in this case, as we wish to support looping over
// elems/materials and then species in the case that species
// elements/materials and then species in the case that species
// do not exist. Then loops can be more general with minimal performance
// costs.
return 0;
Expand Down
16 changes: 8 additions & 8 deletions src/libs/blueprint/conduit_blueprint_mesh_matset_accessor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
//

// multi-buffer by element (full)
// 0 <= elem_idx < num elems
// 0 <= elem_idx < num elements
// 0 <= mat_idx < num mats
// 0 <= spec_idx < num species for material mat_idx
index_t get_full_mat_id(const index_t elem_idx, const index_t mat_idx) const;
Expand All @@ -256,12 +256,12 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
// materials to iterate over in a sparse representation
// index_t get_full_nmats_for_elem(const index_t elem_idx) const;
// omitted because this method is used for knowing how many
// elems to iterate over in a sparse representation
// elements to iterate over in a sparse representation
// index_t get_full_nelems_for_mat(const index_t mat_idx) const;
index_t get_full_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const;

// multi-buffer by material (sparse by material)
// 0 <= elem_idx < num elems for material mat_idx
// 0 <= elem_idx < num elements for material mat_idx
// 0 <= mat_idx < num mats
// 0 <= spec_idx < num species for material mat_idx
index_t get_sbm_mat_id(const index_t elem_idx, const index_t mat_idx) const;
Expand All @@ -278,9 +278,9 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
index_t get_sbm_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const;

// uni-buffer by element (sparse by element)
// 0 <= elem_idx < num elems
// 0 <= mat_idx < num mats for elem elem_idx
// 0 <= spec_idx < num species for material mat_idx in elem elem_idx
// 0 <= elem_idx < num elements
// 0 <= mat_idx < num mats for element elem_idx
// 0 <= spec_idx < num species for material mat_idx in element elem_idx
index_t get_sbe_mat_id(const index_t elem_idx, const index_t mat_idx) const;
index_t get_sbe_elem_id(const index_t elem_idx, const index_t mat_idx) const;
float64 get_sbe_vol_frac(const index_t elem_idx, const index_t mat_idx) const;
Expand All @@ -289,7 +289,7 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
const index_t mat_idx,
const index_t spec_idx) const;
// omitted because this method is used for knowing how many
// elems to iterate over in a sparse representation
// elements to iterate over in a sparse representation
// index_t get_sbe_nelems_for_mat(const index_t mat_idx) const;
index_t get_sbe_nmats_for_elem(const index_t elem_idx) const;
index_t get_sbe_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const;
Expand All @@ -305,7 +305,7 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
index_t get_error_elem_id(const index_t elem_idx, const index_t mat_idx) const;
float64 get_error_vol_frac(const index_t elem_idx, const index_t mat_idx) const;
float64 get_error_mset_val(const index_t elem_idx, const index_t mat_idx) const;
float64 get_error_mass_frac(const index_t elem_idx,
float64 get_error_mass_frac(const index_t elem_idx,
const index_t mat_idx,
const index_t spec_idx) const;
index_t get_error_nmats_for_elem(const index_t elem_idx) const;
Expand Down
Loading
Loading