From 952c47215c1585251870b0cdc5f6e46a37063bad Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 4 Aug 2021 09:48:54 -0700 Subject: [PATCH] made changes based on feedback --- src/libs/blueprint/conduit_blueprint_mesh.cpp | 50 +++++++++++------- .../t_blueprint_mesh_generate_map_fields.cpp | 51 ++++++++++--------- 2 files changed, 57 insertions(+), 44 deletions(-) diff --git a/src/libs/blueprint/conduit_blueprint_mesh.cpp b/src/libs/blueprint/conduit_blueprint_mesh.cpp index 8999f484b..e545e3c2b 100644 --- a/src/libs/blueprint/conduit_blueprint_mesh.cpp +++ b/src/libs/blueprint/conduit_blueprint_mesh.cpp @@ -3191,7 +3191,8 @@ namespace detail const Node &field_src, int num_new_shapes, const T *tri_to_poly, - float64 *volume_ratio) + float64 *volume_ratio, + bool vol_dep) { // a pointer to the destination for field values U *values_array = field_out["values"].value(); @@ -3208,7 +3209,7 @@ namespace detail // which we then assign to the destination field values. // if our field is volume dependent - if (volume_ratio) + if (vol_dep) { values_array[i] = poly_field_data[tri_to_poly[i]] * volume_ratio[i]; } @@ -3259,7 +3260,7 @@ namespace detail const T *tri_to_poly = d2smap["values"].value(); - Node &original_elements = fields_dest["original_element_ids"]; + Node &original_elements = fields_dest[field_prefix + "original_element_ids"]; original_elements["topology"] = topo_name; original_elements["association"] = "element"; original_elements["volume_dependent"] = "false"; @@ -3338,10 +3339,11 @@ namespace detail } // handle volume dependent fields - if (vol_dep) + // if the field is volume dependent and we have not already calculated the volumes + if (vol_dep && !volumes_info.has_child("poly")) { // make volume into a field - Node &volumes_field = fields_dest["volume"]; + Node &volumes_field = fields_dest[field_prefix + "volume"]; volumes_field["topology"] = topo_name; volumes_field["association"] = "element"; volumes_field["volume_dependent"] = "true"; @@ -3408,7 +3410,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3417,7 +3420,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else if (field["values"].dtype().is_uint32()) @@ -3429,7 +3433,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3438,7 +3443,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else if (field["values"].dtype().is_int64()) @@ -3450,7 +3456,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3459,7 +3466,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else if (field["values"].dtype().is_int32()) @@ -3471,7 +3479,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3480,7 +3489,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else if (field["values"].dtype().is_float64()) @@ -3492,7 +3502,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3501,7 +3512,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else if (field["values"].dtype().is_float32()) @@ -3513,7 +3525,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } else { @@ -3522,7 +3535,8 @@ namespace detail field, num_new_shapes, tri_to_poly, - volume_ratio); + volume_ratio, + vol_dep); } } else @@ -3532,8 +3546,6 @@ namespace detail if (vol_dep) { - volume_ratio = NULL; - volumes_info.reset(); vol_dep = false; } if (vert_assoc) diff --git a/src/tests/blueprint/t_blueprint_mesh_generate_map_fields.cpp b/src/tests/blueprint/t_blueprint_mesh_generate_map_fields.cpp index 161d31732..b4f0f0381 100644 --- a/src/tests/blueprint/t_blueprint_mesh_generate_map_fields.cpp +++ b/src/tests/blueprint/t_blueprint_mesh_generate_map_fields.cpp @@ -325,13 +325,13 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_options_field_pr } } - EXPECT_EQ(side_mesh["fields/original_element_ids/topology"].as_string(), "topo"); - EXPECT_EQ(side_mesh["fields/original_element_ids/association"].as_string(), "element"); - EXPECT_EQ(side_mesh["fields/original_element_ids/volume_dependent"].as_string(), "false"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/topology"].as_string(), "topo"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/association"].as_string(), "element"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/volume_dependent"].as_string(), "false"); - EXPECT_EQ(side_mesh["fields/original_element_ids/values"].dtype().number_of_elements(), num_field_values); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/values"].dtype().number_of_elements(), num_field_values); - uint32 *id_values = side_mesh["fields/original_element_ids/values"].value(); + uint32 *id_values = side_mesh["fields/my_prefix_original_element_ids/values"].value(); int i = 0; for (int j = 0; j < num_polygons; j ++) @@ -456,6 +456,7 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_vol_dep) Node &side_topo = side_mesh["topologies/topo"]; Node &side_fields = side_mesh["fields"]; Node options; + options["field_prefix"] = "my_prefix_"; blueprint::mesh::topology::unstructured::generate_sides(n["topologies/topo"], side_topo, @@ -468,15 +469,15 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_vol_dep) EXPECT_TRUE(verify(side_mesh, info)); // check level field - EXPECT_EQ(side_mesh["fields/level/topology"].as_string(), "topo"); - EXPECT_EQ(side_mesh["fields/level/association"].as_string(), "element"); - EXPECT_EQ(side_mesh["fields/level/volume_dependent"].as_string(), "false"); + EXPECT_EQ(side_mesh["fields/my_prefix_level/topology"].as_string(), "topo"); + EXPECT_EQ(side_mesh["fields/my_prefix_level/association"].as_string(), "element"); + EXPECT_EQ(side_mesh["fields/my_prefix_level/volume_dependent"].as_string(), "false"); index_t num_field_values = 56; index_t num_polygons = 9; - EXPECT_EQ(side_mesh["fields/level/values"].dtype().number_of_elements(), num_field_values); + EXPECT_EQ(side_mesh["fields/my_prefix_level/values"].dtype().number_of_elements(), num_field_values); - uint32 *level_values = side_mesh["fields/level/values"].value(); + uint32 *level_values = side_mesh["fields/my_prefix_level/values"].value(); for (int i = 0; i < num_field_values; i ++) { @@ -491,12 +492,12 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_vol_dep) } // check level_vol field - EXPECT_EQ(side_mesh["fields/level_vol/topology"].as_string(), "topo"); - EXPECT_EQ(side_mesh["fields/level_vol/association"].as_string(), "element"); - EXPECT_EQ(side_mesh["fields/level_vol/volume_dependent"].as_string(), "true"); - EXPECT_EQ(side_mesh["fields/level_vol/values"].dtype().number_of_elements(), num_field_values); + EXPECT_EQ(side_mesh["fields/my_prefix_level_vol/topology"].as_string(), "topo"); + EXPECT_EQ(side_mesh["fields/my_prefix_level_vol/association"].as_string(), "element"); + EXPECT_EQ(side_mesh["fields/my_prefix_level_vol/volume_dependent"].as_string(), "true"); + EXPECT_EQ(side_mesh["fields/my_prefix_level_vol/values"].dtype().number_of_elements(), num_field_values); - float64 *level_vol_values = side_mesh["fields/level_vol/values"].value(); + float64 *level_vol_values = side_mesh["fields/my_prefix_level_vol/values"].value(); for (int i = 0; i < num_field_values; i ++) { @@ -539,12 +540,12 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_vol_dep) } // check volume field - EXPECT_EQ(side_mesh["fields/volume/topology"].as_string(), "topo"); - EXPECT_EQ(side_mesh["fields/volume/association"].as_string(), "element"); - EXPECT_EQ(side_mesh["fields/volume/volume_dependent"].as_string(), "true"); - EXPECT_EQ(side_mesh["fields/volume/values"].dtype().number_of_elements(), num_field_values); + EXPECT_EQ(side_mesh["fields/my_prefix_volume/topology"].as_string(), "topo"); + EXPECT_EQ(side_mesh["fields/my_prefix_volume/association"].as_string(), "element"); + EXPECT_EQ(side_mesh["fields/my_prefix_volume/volume_dependent"].as_string(), "true"); + EXPECT_EQ(side_mesh["fields/my_prefix_volume/values"].dtype().number_of_elements(), num_field_values); - float64 *volume_values = side_mesh["fields/volume/values"].value(); + float64 *volume_values = side_mesh["fields/my_prefix_volume/values"].value(); for (int i = 0; i < num_field_values; i ++) { @@ -587,13 +588,13 @@ TEST(conduit_blueprint_generate_unstructured, generate_sides_2D_vol_dep) } // check original element ids - EXPECT_EQ(side_mesh["fields/original_element_ids/topology"].as_string(), "topo"); - EXPECT_EQ(side_mesh["fields/original_element_ids/association"].as_string(), "element"); - EXPECT_EQ(side_mesh["fields/original_element_ids/volume_dependent"].as_string(), "false"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/topology"].as_string(), "topo"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/association"].as_string(), "element"); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/volume_dependent"].as_string(), "false"); - EXPECT_EQ(side_mesh["fields/original_element_ids/values"].dtype().number_of_elements(), num_field_values); + EXPECT_EQ(side_mesh["fields/my_prefix_original_element_ids/values"].dtype().number_of_elements(), num_field_values); - uint32 *id_values = side_mesh["fields/original_element_ids/values"].value(); + uint32 *id_values = side_mesh["fields/my_prefix_original_element_ids/values"].value(); int i = 0; for (int j = 0; j < num_polygons; j ++)