Rajeshwari, The purpose of FEFieldFunction is that you don't have to loop through the cells yourself, but that you can just ask for the value at any given point (in global coordinates) as long as the cell the point is contained in is not artifical. Internally, FEFieldFunction::gradient_list() calls FEFieldFunction::compute_point_locations() which also fails if there is a point contained in artifical cell. Because of that and since the points you are trying to evaluate your solution at are the same for all processes, it is to be expected that your code throws an exception.
If I were you, I would call GridTools::distributed_compute_point_locations_try_all(https://www.dealii.org/current/doxygen/deal.II/namespaceGridTools.html#a5a845642f4d205352931267b58055d62) first to get the set of points which are contained in locally owned or ghosted cells and then pass this subset to FEFieldFunction::gradient_list(). Of course, this means that some information GridTools::distributed_compute_point_locations_try_all() provides are not used and recomputed inside FEFieldFunction::gradient_list(). In case this turns to be too costly, you could replicate the implementation of the latter function to use GridTools::distributed_compute_point_locations_try_all() directly instead. Then, you could also make use of the fact that all the points you are interested in are located at the boundary. I would definitely try if the first approach is sufficient first, though. Best, Daniel -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to dealii+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/2a88bc91-c032-4276-b257-5902c0327c4a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.