14 const auto& sdm = ref_ff.GetSpatialDiscretization();
15 const auto& grid = sdm.Grid();
17 const auto& uk_man = ref_ff.GetUnknownManager();
21 const auto field_data = ref_ff.GetGhostedFieldVector();
25 const auto& cell = grid.local_cells[cell_intersection.ref_cell_local_id];
26 const auto& cell_mapping = sdm.GetCellMapping(cell);
27 const size_t num_nodes = cell_mapping.NumNodes();
29 std::vector<double> dof_values(num_nodes, 0.0);
30 for (
size_t i=0; i<num_nodes; ++i)
32 const int64_t imap = sdm.MapDOFLocal(cell, i, uk_man, uid, cid);
33 dof_values[i] = field_data[imap];
36 std::vector<double> shape_values(num_nodes, 0.0);
37 for (
auto& edge_intersection : cell_intersection.intersections)
39 cell_mapping.ShapeValues(edge_intersection.point, shape_values);
40 double point_value = 0.0;
41 for (
size_t i=0; i<num_nodes; ++i)
42 point_value += dof_values[i]*shape_values[i];
44 edge_intersection.point_value = point_value;
std::vector< chi_physics::FieldFunctionGridBasedPtr > field_functions_
unsigned int ref_component_
std::vector< FFICellIntersection > cell_intersections_