41 #ifndef DTK_PARALLELSEARCH_HPP 42 #define DTK_PARALLELSEARCH_HPP 44 #include <unordered_map> 48 #include "DTK_EntityIterator.hpp" 49 #include "DTK_EntityLocalMap.hpp" 51 #include "DTK_Types.hpp" 53 #include <Teuchos_Comm.hpp> 54 #include <Teuchos_RCP.hpp> 80 ParallelSearch(
const Teuchos::RCP<
const Teuchos::Comm<int>> &comm,
81 const int physical_dimension,
83 const Teuchos::RCP<EntityLocalMap> &domain_local_map,
84 const Teuchos::ParameterList ¶meters );
91 const Teuchos::RCP<EntityLocalMap> &range_local_map,
92 const Teuchos::ParameterList ¶meters );
100 Teuchos::Array<EntityId> &range_ids )
const;
108 Teuchos::Array<EntityId> &domain_ids )
const;
126 Teuchos::ArrayView<const double> ¶metric_coords )
const;
139 Teuchos::RCP<const Teuchos::Comm<int>> d_comm;
151 Teuchos::RCP<CoarseGlobalSearch> d_coarse_global_search;
154 Teuchos::RCP<CoarseLocalSearch> d_coarse_local_search;
157 Teuchos::RCP<FineLocalSearch> d_fine_local_search;
160 std::unordered_map<EntityId, int> d_range_owner_ranks;
163 std::unordered_map<EntityId, int> d_domain_owner_ranks;
166 std::unordered_multimap<EntityId, EntityId> d_domain_to_range_map;
169 std::unordered_multimap<EntityId, EntityId> d_range_to_domain_map;
175 std::unordered_map<EntityId, Teuchos::Array<double>>>
179 bool d_track_missed_range_entities;
183 mutable Teuchos::Array<EntityId> d_missed_range_entity_ids;
192 #endif // end DTK_PARALLELSEARCH_HPP FineLocalSearch declaration.
void getRangeEntitiesFromDomain(const EntityId domain_id, Teuchos::Array< EntityId > &range_ids) const
Given a domain entity id on a domain process, get the ids of the range entities that mapped to it...
CoarseGlobalSearch declaration.
int rangeEntityOwnerRank(const EntityId range_id) const
Get the owner rank of a given range entity on a domain process.
Entity iterator interface.
int domainEntityOwnerRank(const EntityId domain_id) const
Get the owner rank of a given domain entity on a rank process.
void rangeParametricCoordinatesInDomain(const EntityId domain_id, const EntityId range_id, Teuchos::ArrayView< const double > ¶metric_coords) const
Get the parametric coordinates of the range entities in the domain entities on a domain process...
unsigned long int EntityId
Entity id type.
void getDomainEntitiesFromRange(const EntityId range_id, Teuchos::Array< EntityId > &domain_ids) const
Given a range entity id on a range process, get the ids of the domain entities that it mapped to...
ParallelSearch(const Teuchos::RCP< const Teuchos::Comm< int >> &comm, const int physical_dimension, const EntityIterator &domain_iterator, const Teuchos::RCP< EntityLocalMap > &domain_local_map, const Teuchos::ParameterList ¶meters)
Constructor.
CoarseLocalSearch declaration.
Teuchos::ArrayView< const EntityId > getMissedRangeEntityIds() const
Return the ids of the range entities that were not during the last search (i.e. those that are guaran...