Skip to content

Commit deaf623

Browse files
merge develo
2 parents df88df3 + 68164af commit deaf623

2 files changed

Lines changed: 95 additions & 101 deletions

File tree

src/libs/blueprint/conduit_blueprint_mesh_matset_accessor.cpp

Lines changed: 90 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -124,73 +124,69 @@ MatsetAccessor::MatsetAccessor(const Node &matset,
124124
}
125125

126126
//---------------------------------------------------------------------------//
127-
MatsetAccessor::MatsetAccessor(const MatsetAccessor &m_acc)
128-
: m_get_mat_id(m_acc.m_get_mat_id),
129-
m_get_mat_order_id(m_acc.m_get_mat_order_id),
130-
m_get_elem_id(m_acc.m_get_elem_id),
131-
m_get_vol_frac(m_acc.m_get_vol_frac),
132-
m_get_mset_val(m_acc.m_get_mset_val),
133-
m_get_mass_frac(m_acc.m_get_mass_frac),
134-
m_get_nmats_for_elem(m_acc.m_get_nmats_for_elem),
135-
m_get_nelems_for_mat(m_acc.m_get_nelems_for_mat),
136-
m_get_nspec_for_mat(m_acc.m_get_nspec_for_mat),
137-
m_is_uni_buffer(m_acc.m_is_uni_buffer),
138-
m_is_element_dominant(m_acc.m_is_element_dominant),
139-
m_num_elems(m_acc.m_num_elems),
140-
m_num_mats(m_acc.m_num_mats),
141-
m_has_field(m_acc.m_has_field),
142-
m_has_specset(m_acc.m_has_specset),
143-
m_nmatspec(m_acc.m_nmatspec),
144-
m_multi_vol_fracs(m_acc.m_multi_vol_fracs),
145-
m_multi_mset_vals(m_acc.m_multi_mset_vals),
146-
m_multi_mat_idx_map(m_acc.m_multi_mat_idx_map),
147-
m_multi_mass_fracs(m_acc.m_multi_mass_fracs),
148-
m_sbm_elem_ids(m_acc.m_sbm_elem_ids),
149-
m_sbe_material_ids(m_acc.m_sbe_material_ids),
150-
m_sbe_mat_order_ids(m_acc.m_sbe_mat_order_ids),
151-
m_sbe_vol_fracs(m_acc.m_sbe_vol_fracs),
152-
m_sbe_mset_vals(m_acc.m_sbe_mset_vals),
153-
m_sbe_o2m_idx(m_acc.m_sbe_o2m_idx),
154-
m_sbe_mass_fracs(m_acc.m_sbe_mass_fracs),
155-
m_sbe_specset_o2m_idx(m_acc.m_sbe_specset_o2m_idx)
127+
MatsetAccessor::MatsetAccessor(const MatsetAccessor &other_matset_accessor)
128+
: m_get_mat_id(other_matset_accessor.m_get_mat_id),
129+
m_get_mat_order_id(other_matset_accessor.m_get_mat_order_id),
130+
m_get_elem_id(other_matset_accessor.m_get_elem_id),
131+
m_get_vol_frac(other_matset_accessor.m_get_vol_frac),
132+
m_get_mset_val(other_matset_accessor.m_get_mset_val),
133+
m_get_mass_frac(other_matset_accessor.m_get_mass_frac),
134+
m_get_nmats_for_elem(other_matset_accessor.m_get_nmats_for_elem),
135+
m_get_nelems_for_mat(other_matset_accessor.m_get_nelems_for_mat),
136+
m_get_nspec_for_mat(other_matset_accessor.m_get_nspec_for_mat),
137+
m_is_uni_buffer(other_matset_accessor.m_is_uni_buffer),
138+
m_is_element_dominant(other_matset_accessor.m_is_element_dominant),
139+
m_num_elems(other_matset_accessor.m_num_elems),
140+
m_num_mats(other_matset_accessor.m_num_mats),
141+
m_has_field(other_matset_accessor.m_has_field),
142+
m_has_specset(other_matset_accessor.m_has_specset),
143+
m_internal_data(other_matset_accessor.m_internal_data),
144+
m_multi_vol_fracs(other_matset_accessor.m_multi_vol_fracs),
145+
m_multi_mset_vals(other_matset_accessor.m_multi_mset_vals),
146+
m_multi_mass_fracs(other_matset_accessor.m_multi_mass_fracs),
147+
m_sbm_elem_ids(other_matset_accessor.m_sbm_elem_ids),
148+
m_sbe_material_ids(other_matset_accessor.m_sbe_material_ids),
149+
m_sbe_vol_fracs(other_matset_accessor.m_sbe_vol_fracs),
150+
m_sbe_mset_vals(other_matset_accessor.m_sbe_mset_vals),
151+
m_sbe_o2m_idx(other_matset_accessor.m_sbe_o2m_idx),
152+
m_sbe_mass_fracs(other_matset_accessor.m_sbe_mass_fracs),
153+
m_sbe_specset_o2m_idx(other_matset_accessor.m_sbe_specset_o2m_idx)
156154
{
157155
rebind_internal_accessors();
158156
}
159157

160158
//---------------------------------------------------------------------------//
161159
MatsetAccessor &
162-
MatsetAccessor::operator=(const MatsetAccessor &m_acc)
160+
MatsetAccessor::operator=(const MatsetAccessor &other_matset_accessor)
163161
{
164-
if (this != &m_acc)
162+
if (this != &other_matset_accessor)
165163
{
166-
m_get_mat_id = m_acc.m_get_mat_id;
167-
m_get_mat_order_id = m_acc.m_get_mat_order_id;
168-
m_get_elem_id = m_acc.m_get_elem_id;
169-
m_get_vol_frac = m_acc.m_get_vol_frac;
170-
m_get_mset_val = m_acc.m_get_mset_val;
171-
m_get_mass_frac = m_acc.m_get_mass_frac;
172-
m_get_nmats_for_elem = m_acc.m_get_nmats_for_elem;
173-
m_get_nelems_for_mat = m_acc.m_get_nelems_for_mat;
174-
m_get_nspec_for_mat = m_acc.m_get_nspec_for_mat;
175-
m_is_uni_buffer = m_acc.m_is_uni_buffer;
176-
m_is_element_dominant = m_acc.m_is_element_dominant;
177-
m_num_elems = m_acc.m_num_elems;
178-
m_num_mats = m_acc.m_num_mats;
179-
m_has_field = m_acc.m_has_field;
180-
m_has_specset = m_acc.m_has_specset;
181-
m_nmatspec = m_acc.m_nmatspec;
182-
m_multi_vol_fracs = m_acc.m_multi_vol_fracs;
183-
m_multi_mset_vals = m_acc.m_multi_mset_vals;
184-
m_multi_mat_idx_map = m_acc.m_multi_mat_idx_map;
185-
m_multi_mass_fracs = m_acc.m_multi_mass_fracs;
186-
m_sbm_elem_ids = m_acc.m_sbm_elem_ids;
187-
m_sbe_material_ids = m_acc.m_sbe_material_ids;
188-
m_sbe_mat_order_ids = m_acc.m_sbe_mat_order_ids;
189-
m_sbe_vol_fracs = m_acc.m_sbe_vol_fracs;
190-
m_sbe_mset_vals = m_acc.m_sbe_mset_vals;
191-
m_sbe_o2m_idx = m_acc.m_sbe_o2m_idx;
192-
m_sbe_mass_fracs = m_acc.m_sbe_mass_fracs;
193-
m_sbe_specset_o2m_idx = m_acc.m_sbe_specset_o2m_idx;
164+
m_get_mat_id = other_matset_accessor.m_get_mat_id;
165+
m_get_mat_order_id = other_matset_accessor.m_get_mat_order_id;
166+
m_get_elem_id = other_matset_accessor.m_get_elem_id;
167+
m_get_vol_frac = other_matset_accessor.m_get_vol_frac;
168+
m_get_mset_val = other_matset_accessor.m_get_mset_val;
169+
m_get_mass_frac = other_matset_accessor.m_get_mass_frac;
170+
m_get_nmats_for_elem = other_matset_accessor.m_get_nmats_for_elem;
171+
m_get_nelems_for_mat = other_matset_accessor.m_get_nelems_for_mat;
172+
m_get_nspec_for_mat = other_matset_accessor.m_get_nspec_for_mat;
173+
m_is_uni_buffer = other_matset_accessor.m_is_uni_buffer;
174+
m_is_element_dominant = other_matset_accessor.m_is_element_dominant;
175+
m_num_elems = other_matset_accessor.m_num_elems;
176+
m_num_mats = other_matset_accessor.m_num_mats;
177+
m_has_field = other_matset_accessor.m_has_field;
178+
m_has_specset = other_matset_accessor.m_has_specset;
179+
m_internal_data = other_matset_accessor.m_internal_data;
180+
m_multi_vol_fracs = other_matset_accessor.m_multi_vol_fracs;
181+
m_multi_mset_vals = other_matset_accessor.m_multi_mset_vals;
182+
m_multi_mass_fracs = other_matset_accessor.m_multi_mass_fracs;
183+
m_sbm_elem_ids = other_matset_accessor.m_sbm_elem_ids;
184+
m_sbe_material_ids = other_matset_accessor.m_sbe_material_ids;
185+
m_sbe_vol_fracs = other_matset_accessor.m_sbe_vol_fracs;
186+
m_sbe_mset_vals = other_matset_accessor.m_sbe_mset_vals;
187+
m_sbe_o2m_idx = other_matset_accessor.m_sbe_o2m_idx;
188+
m_sbe_mass_fracs = other_matset_accessor.m_sbe_mass_fracs;
189+
m_sbe_specset_o2m_idx = other_matset_accessor.m_sbe_specset_o2m_idx;
194190
rebind_internal_accessors();
195191
}
196192
return *this;
@@ -201,21 +197,21 @@ void
201197
MatsetAccessor::rebind_internal_accessors()
202198
{
203199
// Rebind accessors that point into Nodes owned by this accessor instance.
204-
if (m_nmatspec.has_child("nmatspec"))
200+
if (m_internal_data.has_child("nmatspec"))
205201
{
206-
m_nmatspec_acc = m_nmatspec["nmatspec"].value();
202+
m_internal_nmatspec = m_internal_data["nmatspec"].value();
207203
}
208-
if (m_nmatspec.has_child("nmatspec_offsets"))
204+
if (m_internal_data.has_child("nmatspec_offsets"))
209205
{
210-
m_nmatspec_offsets_acc = m_nmatspec["nmatspec_offsets"].value();
206+
m_internal_nmatspec_offsets = m_internal_data["nmatspec_offsets"].value();
211207
}
212-
if (! m_multi_mat_idx_map.dtype().is_empty())
208+
if (m_internal_data.has_child("multi_mat_idx_map"))
213209
{
214-
m_multi_mat_idx_map_acc = m_multi_mat_idx_map.value();
210+
m_internal_multi_mat_idx_map = m_internal_data["multi_mat_idx_map"].value();
215211
}
216-
if (! m_sbe_mat_order_ids.dtype().is_empty())
212+
if (m_internal_data.has_child("sbe_mat_order_ids"))
217213
{
218-
m_sbe_mat_order_ids_acc = m_sbe_mat_order_ids.value();
214+
m_internal_sbe_mat_order_ids = m_internal_data["sbe_mat_order_ids"].value();
219215
}
220216
}
221217

@@ -278,8 +274,8 @@ MatsetAccessor::init(const Node &matset,
278274
// save material order ids
279275
//
280276
const index_t num_vol_fracs = matset["volume_fractions"].dtype().number_of_elements();
281-
m_sbe_mat_order_ids.set(DataType::index_t(num_vol_fracs));
282-
m_sbe_mat_order_ids_acc = m_sbe_mat_order_ids.value();
277+
m_internal_data["sbe_mat_order_ids"].set(DataType::index_t(num_vol_fracs));
278+
m_internal_sbe_mat_order_ids = m_internal_data["sbe_mat_order_ids"].value();
283279
// create a map from material id to material order id
284280
std::map<index_t, index_t> mat_id_to_order_id;
285281
for (index_t mat_idx = 0; mat_idx < m_num_mats; mat_idx ++)
@@ -292,7 +288,7 @@ MatsetAccessor::init(const Node &matset,
292288
{
293289
const index_t mat_id = m_sbe_material_ids[vf_elem];
294290
const index_t mat_order_id = mat_id_to_order_id.at(mat_id);
295-
m_sbe_mat_order_ids_acc.set(vf_elem, mat_order_id);
291+
m_internal_sbe_mat_order_ids.set(vf_elem, mat_order_id);
296292
}
297293

298294
if (nullptr != field)
@@ -473,10 +469,10 @@ MatsetAccessor::init(const Node &matset,
473469
// We pay a price at the start when creating these arrays, but we enable quick
474470
// access of species mass fraction data.
475471

476-
m_nmatspec["nmatspec"].set(DataType::index_t(num_vol_fracs));
477-
m_nmatspec_acc = m_nmatspec["nmatspec"].value();
478-
m_nmatspec["nmatspec_offsets"].set(DataType::index_t(num_vol_fracs));
479-
m_nmatspec_offsets_acc = m_nmatspec["nmatspec_offsets"].value();
472+
m_internal_data["nmatspec"].set(DataType::index_t(num_vol_fracs));
473+
m_internal_nmatspec = m_internal_data["nmatspec"].value();
474+
m_internal_data["nmatspec_offsets"].set(DataType::index_t(num_vol_fracs));
475+
m_internal_nmatspec_offsets = m_internal_data["nmatspec_offsets"].value();
480476

481477
// create a map from material id to nmatspec
482478
std::map<index_t, index_t> mat_id_to_nmatspec;
@@ -506,8 +502,8 @@ MatsetAccessor::init(const Node &matset,
506502
const index_t mat_id = m_sbe_material_ids[data_index];
507503
const index_t nmatspec_for_mat = mat_id_to_nmatspec.at(mat_id);
508504

509-
m_nmatspec_acc.set(data_index, nmatspec_for_mat);
510-
m_nmatspec_offsets_acc.set(data_index, nmatspec_offset);
505+
m_internal_nmatspec.set(data_index, nmatspec_for_mat);
506+
m_internal_nmatspec_offsets.set(data_index, nmatspec_offset);
511507
nmatspec_offset += nmatspec_for_mat;
512508
}
513509
}
@@ -543,16 +539,16 @@ MatsetAccessor::init(const Node &matset,
543539
// we save an indirection array from material order id (the order materials appear
544540
// in the matset) to actual material id. Not all material sets are numbered from
545541
// 0 to N-1, so we must support this case.
546-
m_multi_mat_idx_map.set(DataType::index_t(m_num_mats));
547-
m_multi_mat_idx_map_acc = m_multi_mat_idx_map.value();
542+
m_internal_data["multi_mat_idx_map"].set(DataType::index_t(m_num_mats));
543+
m_internal_multi_mat_idx_map = m_internal_data["multi_mat_idx_map"].value();
548544

549545
if (nullptr != specset)
550546
{
551547
// number of material species map
552548
// we save an array from the material order id (the order materials appear
553549
// in the matset) to the number of species for that material.
554-
m_nmatspec["nmatspec"].set(DataType::index_t(m_num_mats));
555-
m_nmatspec_acc = m_nmatspec["nmatspec"].value();
550+
m_internal_data["nmatspec"].set(DataType::index_t(m_num_mats));
551+
m_internal_nmatspec = m_internal_data["nmatspec"].value();
556552

557553
// we save an additional offsets array so we can quickly get the index
558554
// of our desired species array since we are flattening:
@@ -570,8 +566,8 @@ MatsetAccessor::init(const Node &matset,
570566
// [3, 2]
571567
// and the nmatspec offsets array is
572568
// [0, 3]
573-
m_nmatspec["nmatspec_offsets"].set(DataType::index_t(m_num_mats));
574-
m_nmatspec_offsets_acc = m_nmatspec["nmatspec_offsets"].value();
569+
m_internal_data["nmatspec_offsets"].set(DataType::index_t(m_num_mats));
570+
m_internal_nmatspec_offsets = m_internal_data["nmatspec_offsets"].value();
575571
}
576572

577573
index_t nmatspec_offset = 0;
@@ -586,7 +582,7 @@ MatsetAccessor::init(const Node &matset,
586582
const index_t mat_id = matmap_entry.to_index_t();
587583

588584
// save material map entry
589-
m_multi_mat_idx_map_acc.set(mat_idx, mat_id);
585+
m_internal_multi_mat_idx_map.set(mat_idx, mat_id);
590586

591587
// save volume fraction array
592588
m_multi_vol_fracs.push_back(matset["volume_fractions"][matname].value());
@@ -605,10 +601,10 @@ MatsetAccessor::init(const Node &matset,
605601
{
606602
nmatspec = (*specset)["matset_values"][matname].number_of_children();
607603
}
608-
m_nmatspec_acc.set(mat_idx, nmatspec);
604+
m_internal_nmatspec.set(mat_idx, nmatspec);
609605

610606
// save nmatspec offset value
611-
m_nmatspec_offsets_acc.set(mat_idx, nmatspec_offset);
607+
m_internal_nmatspec_offsets.set(mat_idx, nmatspec_offset);
612608
nmatspec_offset += nmatspec;
613609

614610
for (index_t spec_idx = 0; spec_idx < nmatspec; spec_idx ++)
@@ -672,7 +668,7 @@ index_t
672668
MatsetAccessor::get_full_mat_id(const index_t elem_idx, const index_t mat_idx) const
673669
{
674670
(void) elem_idx;
675-
return m_multi_mat_idx_map_acc[mat_idx];
671+
return m_internal_multi_mat_idx_map[mat_idx];
676672
}
677673

678674
//-----------------------------------------------------------------------------
@@ -711,7 +707,7 @@ MatsetAccessor::get_full_mass_frac(const index_t elem_idx,
711707
const index_t mat_idx,
712708
const index_t spec_idx) const
713709
{
714-
const index_t spec_data_index = m_nmatspec_offsets_acc[mat_idx] + spec_idx;
710+
const index_t spec_data_index = m_internal_nmatspec_offsets[mat_idx] + spec_idx;
715711
return m_multi_mass_fracs[spec_data_index][elem_idx];
716712
}
717713

@@ -720,7 +716,7 @@ index_t
720716
MatsetAccessor::get_full_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const
721717
{
722718
(void) elem_idx;
723-
return m_nmatspec_acc[mat_idx];
719+
return m_internal_nmatspec[mat_idx];
724720
}
725721

726722
//-----------------------------------------------------------------------------
@@ -733,7 +729,7 @@ index_t
733729
MatsetAccessor::get_sbm_mat_id(const index_t elem_idx, const index_t mat_idx) const
734730
{
735731
(void) elem_idx;
736-
return m_multi_mat_idx_map_acc[mat_idx];
732+
return m_internal_multi_mat_idx_map[mat_idx];
737733
}
738734

739735
//-----------------------------------------------------------------------------
@@ -771,7 +767,7 @@ MatsetAccessor::get_sbm_mass_frac(const index_t elem_idx,
771767
const index_t mat_idx,
772768
const index_t spec_idx) const
773769
{
774-
const index_t spec_data_index = m_nmatspec_offsets_acc[mat_idx] + spec_idx;
770+
const index_t spec_data_index = m_internal_nmatspec_offsets[mat_idx] + spec_idx;
775771
return m_multi_mass_fracs[spec_data_index][elem_idx];
776772
}
777773

@@ -787,7 +783,7 @@ index_t
787783
MatsetAccessor::get_sbm_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const
788784
{
789785
(void) elem_idx;
790-
return m_nmatspec_acc[mat_idx];
786+
return m_internal_nmatspec[mat_idx];
791787
}
792788

793789
//-----------------------------------------------------------------------------
@@ -808,7 +804,7 @@ index_t
808804
MatsetAccessor::get_sbe_mat_order_id(const index_t elem_idx, const index_t mat_idx) const
809805
{
810806
const index_t data_index = m_sbe_o2m_idx.index(elem_idx, mat_idx);
811-
return m_sbe_mat_order_ids_acc[data_index];
807+
return m_internal_sbe_mat_order_ids[data_index];
812808
}
813809

814810
//-----------------------------------------------------------------------------
@@ -842,7 +838,7 @@ MatsetAccessor::get_sbe_mass_frac(const index_t elem_idx,
842838
const index_t spec_idx) const
843839
{
844840
const index_t data_index = m_sbe_o2m_idx.index(elem_idx, mat_idx);
845-
const index_t nmatspec_offset = m_nmatspec_offsets_acc[data_index];
841+
const index_t nmatspec_offset = m_internal_nmatspec_offsets[data_index];
846842

847843
// We need an index that is between 0 and the number of species in this element.
848844
// The way to calculate this is to add out num material species offset
@@ -872,7 +868,7 @@ index_t
872868
MatsetAccessor::get_sbe_nspec_for_mat(const index_t elem_idx, const index_t mat_idx) const
873869
{
874870
const index_t data_index = m_sbe_o2m_idx.index(elem_idx, mat_idx);
875-
return m_nmatspec_acc[data_index];
871+
return m_internal_nmatspec[data_index];
876872
}
877873

878874
//-----------------------------------------------------------------------------

src/libs/blueprint/conduit_blueprint_mesh_matset_accessor.hpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -353,24 +353,22 @@ using GetNMatSpecPtr = index_t (MatsetAccessor::*)(index_t, index_t) const;
353353

354354
// universal members
355355
// these are members that are useful for all layout types
356-
Node m_nmatspec;
357-
index_t_accessor m_nmatspec_acc;
358-
index_t_accessor m_nmatspec_offsets_acc;
356+
Node m_internal_data;
357+
index_t_accessor m_internal_nmatspec; // points to internal data
358+
index_t_accessor m_internal_nmatspec_offsets; // points to internal data
359359

360360
// multi-buffer (full AND sparse by material) members
361361
std::vector<float64_accessor> m_multi_vol_fracs;
362362
std::vector<float64_accessor> m_multi_mset_vals;
363-
Node m_multi_mat_idx_map; // multi-buffer material index map
364-
index_t_accessor m_multi_mat_idx_map_acc;
363+
index_t_accessor m_internal_multi_mat_idx_map; // points to internal data
365364
std::vector<float64_accessor> m_multi_mass_fracs;
366365

367366
// multi-buffer material dominant (sparse by material) members
368367
std::vector<index_t_accessor> m_sbm_elem_ids;
369368

370369
// uni-buffer element-dominant (sparse by element) members
371370
index_t_accessor m_sbe_material_ids;
372-
Node m_sbe_mat_order_ids;
373-
index_t_accessor m_sbe_mat_order_ids_acc;
371+
index_t_accessor m_internal_sbe_mat_order_ids; // points to internal data
374372
float64_accessor m_sbe_vol_fracs;
375373
float64_accessor m_sbe_mset_vals;
376374
o2mrelation::O2MIndex m_sbe_o2m_idx;

0 commit comments

Comments
 (0)