class FECollection;
} // namespace hp
template <class MeshType>
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
class InterGridMap;
template <int dim, int spacedim>
class Mapping;
// intermediate type. This is only used when using MS VC++ and uses
// the direct way of doing it otherwise
template <template <int, int> class MeshType, int dim, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
struct ExtractBoundaryMesh
{
using return_type =
*
*/
template <template <int, int> class MeshType, int dim, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifdef DOXYGEN
return_type
#else
typename ExtractBoundaryMesh<MeshType, dim, spacedim>::return_type
# endif
#endif
- extract_boundary_mesh(const MeshType<dim, spacedim> & volume_mesh,
- MeshType<dim - 1, spacedim> & surface_mesh,
- const std::set<types::boundary_id> &boundary_ids =
- std::set<types::boundary_id>());
+ extract_boundary_mesh(const MeshType<dim, spacedim> & volume_mesh,
+ MeshType<dim - 1, spacedim> & surface_mesh,
+ const std::set<types::boundary_id> &boundary_ids =
+ std::set<types::boundary_id>());
//** @} */
namespace internal
{
template <int dim, int spacedim, class MeshType>
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
class ActiveCellIterator
{
public:
* @return The index of the closest vertex found.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices = {});
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> & marked_vertices = {});
/**
* Find and return the index of the used vertex (or marked vertex) in a
* @return The index of the closest vertex found.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices = {});
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> & marked_vertices = {});
/**
* for this case.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<typename MeshType<dim, spacedim>::active_cell_iterator>
#else
typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type>
#endif
- find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &container,
- const unsigned int vertex_index);
+ find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &container,
+ const unsigned int vertex_index);
/**
* Find an active non-artificial cell that surrounds a given point @p p. The return type
* processor will return a locally owned cell and the other one a ghost cell.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator, Point<dim>>
#else
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>
#endif
- find_active_cell_around_point(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> &marked_vertices = {},
- const double tolerance = 1.e-10);
+ find_active_cell_around_point(const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices = {},
+ const double tolerance = 1.e-10);
/**
* A version of the above function that assumes straight boundaries and
* @return An iterator into the mesh that points to the surrounding cell.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
typename MeshType<dim, spacedim>::active_cell_iterator
#else
typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type
#endif
- find_active_cell_around_point(const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> &marked_vertices = {},
- const double tolerance = 1.e-10);
+ find_active_cell_around_point(const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices = {},
+ const double tolerance = 1.e-10);
/**
* Another version where we use that mapping on a given
* call the function above with argument `cache` in this case.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator, Point<dim>>
#else
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>
#endif
- find_active_cell_around_point(
- const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<
- std::set<typename MeshType<dim, spacedim>::active_cell_iterator>>
- & vertex_to_cell_map,
- const std::vector<std::vector<Tensor<1, spacedim>>> &vertex_to_cell_centers,
- const typename MeshType<dim, spacedim>::active_cell_iterator &cell_hint =
- typename MeshType<dim, spacedim>::active_cell_iterator(),
- const std::vector<bool> & marked_vertices = {},
- const RTree<std::pair<Point<spacedim>, unsigned int>> &used_vertices_rtree =
- RTree<std::pair<Point<spacedim>, unsigned int>>{},
- const double tolerance = 1.e-10,
- const RTree<
- std::pair<BoundingBox<spacedim>,
- typename Triangulation<dim, spacedim>::active_cell_iterator>>
- *relevant_cell_bounding_boxes_rtree = nullptr);
+ find_active_cell_around_point(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<
+ std::set<typename MeshType<dim, spacedim>::active_cell_iterator>>
+ &vertex_to_cell_map,
+ const std::vector<std::vector<Tensor<1, spacedim>>>
+ &vertex_to_cell_centers,
+ const typename MeshType<dim, spacedim>::active_cell_iterator &cell_hint =
+ typename MeshType<dim, spacedim>::active_cell_iterator(),
+ const std::vector<bool> &marked_vertices = {},
+ const RTree<std::pair<Point<spacedim>, unsigned int>> &
+ used_vertices_rtree = RTree<std::pair<Point<spacedim>, unsigned int>>{},
+ const double tolerance = 1.e-10,
+ const RTree<
+ std::pair<BoundingBox<spacedim>,
+ typename Triangulation<dim, spacedim>::active_cell_iterator>>
+ *relevant_cell_bounding_boxes_rtree = nullptr);
/**
* As compared to the functions above, this function identifies all active
* @endcode
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
Point<dim>>>
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>>
#endif
- find_all_active_cells_around_point(
- const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const double tolerance,
- const std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
- Point<dim>> & first_cell);
+ find_all_active_cells_around_point(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const double tolerance,
+ const std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
+ Point<dim>> & first_cell);
/**
* A variant of the previous function that internally calls one of the
* function find_all_active_cells_around_point() above.
*/
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
Point<dim>>>
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>>
#endif
- find_all_active_cells_around_point(
- const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const double tolerance = 1e-10,
- const std::vector<bool> & marked_vertices = {});
+ find_all_active_cells_around_point(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const double tolerance = 1e-10,
+ const std::vector<bool> & marked_vertices = {});
/**
* Return a list of all descendants of the given cell that are active. For
* @endcode
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- get_active_child_cells(const typename MeshType::cell_iterator &cell);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<typename MeshType::active_cell_iterator> get_active_child_cells(
+ const typename MeshType::cell_iterator &cell);
/**
* Extract the active cells around a given cell @p cell and return them in
* @endcode
*/
template <class MeshType>
- void
- get_active_neighbors(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void get_active_neighbors(
const typename MeshType::active_cell_iterator & cell,
std::vector<typename MeshType::active_cell_iterator> &active_neighbors);
* the predicated subdomain.
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_active_cell_halo_layer(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- &predicate);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::active_cell_iterator> compute_active_cell_halo_layer(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ &predicate);
/**
* all of those cells for which the @p predicate returns @p true.
*/
template <class MeshType>
- std::vector<typename MeshType::cell_iterator>
- compute_cell_halo_layer_on_level(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::cell_iterator &)>
- & predicate,
- const unsigned int level);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::cell_iterator> compute_cell_halo_layer_on_level(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::cell_iterator &)>
+ & predicate,
+ const unsigned int level);
/**
* @return A list of ghost cells
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_ghost_cell_halo_layer(const MeshType &mesh);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<
+ typename MeshType::
+ active_cell_iterator> compute_ghost_cell_halo_layer(const MeshType &mesh);
/**
* Extract and return the set of active cells within a geometric distance of
* See compute_active_cell_halo_layer().
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_active_cell_layer_within_distance(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- & predicate,
- const double layer_thickness);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::active_cell_iterator> compute_active_cell_layer_within_distance(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ & predicate,
+ const double layer_thickness);
/**
* Extract and return a set of ghost cells which are within a
* compute_active_cell_layer_within_distance().
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_ghost_cell_layer_within_distance(const MeshType &mesh,
- const double layer_thickness);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::active_cell_iterator> compute_ghost_cell_layer_within_distance(
+ const MeshType &mesh,
+ const double layer_thickness);
/**
* Compute and return a bounding box, defined through a pair of points
* to a BoundingBox object.
*/
template <class MeshType>
- std::pair<Point<MeshType::space_dimension>, Point<MeshType::space_dimension>>
- compute_bounding_box(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- &predicate);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::pair<
+ Point<MeshType::space_dimension>,
+ Point<MeshType::
+ space_dimension>> compute_bounding_box(const MeshType &mesh,
+ const std::function<bool(
+ const typename MeshType::
+ active_cell_iterator &)>
+ &predicate);
/**
* Compute a collection of bounding boxes so that all active cells for which
* linear.
*/
template <class MeshType>
- std::vector<BoundingBox<MeshType::space_dimension>>
- compute_mesh_predicate_bounding_box(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- & predicate,
- const unsigned int refinement_level = 0,
- const bool allow_merge = false,
- const unsigned int max_boxes = numbers::invalid_unsigned_int);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<BoundingBox<MeshType::space_dimension>> compute_mesh_predicate_bounding_box(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ & predicate,
+ const unsigned int refinement_level = 0,
+ const bool allow_merge = false,
+ const unsigned int max_boxes = numbers::invalid_unsigned_int);
/**
* Given an array of points, use the global bounding box description obtained
* stored locally, so the resulting list may not cover the entire domain.
*/
template <typename MeshType>
- std::list<std::pair<typename MeshType::cell_iterator,
- typename MeshType::cell_iterator>>
- get_finest_common_cells(const MeshType &mesh_1, const MeshType &mesh_2);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::list<std::pair<
+ typename MeshType::cell_iterator,
+ typename MeshType::cell_iterator>> get_finest_common_cells(const MeshType
+ &mesh_1,
+ const MeshType
+ &mesh_2);
/**
* Return true if the two triangulations are based on the same coarse mesh.
* @ref ConceptMeshType "MeshType concept".
*/
template <typename MeshType>
- bool
- have_same_coarse_mesh(const MeshType &mesh_1, const MeshType &mesh_2);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ bool have_same_coarse_mesh(const MeshType &mesh_1, const MeshType &mesh_2);
/** @} */
/**
* freedom on these.
*/
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- get_patch_around_cell(const typename MeshType::active_cell_iterator &cell);
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<typename MeshType::active_cell_iterator> get_patch_around_cell(
+ const typename MeshType::active_cell_iterator &cell);
/**
* or local grid refinement.
*/
template <typename MeshType>
- void
- collect_periodic_faces(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void collect_periodic_faces(
const MeshType & mesh,
const types::boundary_id b_id1,
const types::boundary_id b_id2,
* @ref GlossFaceOrientation "standard orientation".
*/
template <typename MeshType>
- void
- collect_periodic_faces(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void collect_periodic_faces(
const MeshType & mesh,
const types::boundary_id b_id,
const unsigned int direction,
* data with similar calls as the ones above.)
*/
template <typename DataType, typename MeshType>
- void
- exchange_cell_data_to_ghosts(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void exchange_cell_data_to_ghosts(
const MeshType & mesh,
const std::function<std_cxx17::optional<DataType>(
const typename MeshType::active_cell_iterator &)> &pack,
* communicated.
*/
template <typename DataType, typename MeshType>
- void
- exchange_cell_data_to_level_ghosts(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void exchange_cell_data_to_level_ghosts(
const MeshType & mesh,
const std::function<std_cxx17::optional<DataType>(
const typename MeshType::level_cell_iterator &)> &pack,
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- get_active_child_cells(const typename MeshType::cell_iterator &cell)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<typename MeshType::active_cell_iterator> get_active_child_cells(
+ const typename MeshType::cell_iterator &cell)
{
std::vector<typename MeshType::active_cell_iterator> child_cells;
template <class MeshType>
- void
- get_active_neighbors(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void get_active_neighbors(
const typename MeshType::active_cell_iterator & cell,
std::vector<typename MeshType::active_cell_iterator> &active_neighbors)
{
template <typename DataType,
typename MeshType,
typename MeshCellIteratorType>
- inline void
- exchange_cell_data(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ inline void exchange_cell_data(
const MeshType &mesh,
const std::function<
std_cxx17::optional<DataType>(const MeshCellIteratorType &)> &pack,
} // namespace internal
template <typename DataType, typename MeshType>
- inline void
- exchange_cell_data_to_ghosts(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ inline void exchange_cell_data_to_ghosts(
const MeshType & mesh,
const std::function<std_cxx17::optional<DataType>(
const typename MeshType::active_cell_iterator &)> &pack,
template <typename DataType, typename MeshType>
- inline void
- exchange_cell_data_to_level_ghosts(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ inline void exchange_cell_data_to_level_ghosts(
const MeshType & mesh,
const std::function<std_cxx17::optional<DataType>(
const typename MeshType::level_cell_iterator &)> &pack,
* @ingroup grid
*/
template <class MeshType>
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
class InterGridMap : public Subscriptor
{
public:
namespace
{
template <typename MeshType, typename OPType>
- void
- loop_over_active_or_level_cells(const MeshType & tria,
- const unsigned int level,
- const OPType & op)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void loop_over_active_or_level_cells(const MeshType & tria,
+ const unsigned int level,
+ const OPType & op)
{
if (level == numbers::invalid_unsigned_int)
{
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
inline std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
inline std::vector<
typename FEPointEvaluation<n_components,
dim,
typename MeshType,
typename VectorType,
typename value_type>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ concepts::is_dealii_vector_type<VectorType>
+ &&concepts::is_triangulation_or_dof_handler<MeshType>)
inline std::vector<value_type> evaluate_at_points(
const Utilities::MPI::RemotePointEvaluation<dim, spacedim> &cache,
const MeshType & mesh,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
inline std::vector<
typename FEPointEvaluation<n_components,
dim,
int dim,
int spacedim,
typename VectorType>
- DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_dealii_vector_type<VectorType> &&
+ concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
inline std::vector<
typename FEPointEvaluation<n_components,
dim,
template <int dim, typename Number>
class Function;
template <class MeshType>
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
class InterGridMap;
template <int dim, int spacedim>
class Mapping;
template <template <int, int> class MeshType, int dim, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
# ifndef _MSC_VER
std::map<typename MeshType<dim - 1, spacedim>::cell_iterator,
typename MeshType<dim, spacedim>::face_iterator>
# else
typename ExtractBoundaryMesh<MeshType, dim, spacedim>::return_type
# endif
- extract_boundary_mesh(const MeshType<dim, spacedim> & volume_mesh,
- MeshType<dim - 1, spacedim> & surface_mesh,
- const std::set<types::boundary_id> &boundary_ids)
+ extract_boundary_mesh(const MeshType<dim, spacedim> & volume_mesh,
+ MeshType<dim - 1, spacedim> & surface_mesh,
+ const std::set<types::boundary_id> &boundary_ids)
{
Assert((dynamic_cast<
const parallel::distributed::Triangulation<dim, spacedim> *>(
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices)
{
// first get the underlying triangulation from the mesh and determine
// vertices and used vertices
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices)
{
// Take a shortcut in the simple case.
if (mapping.preserves_vertex_locations() == true)
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<typename MeshType<dim, spacedim>::active_cell_iterator>
#else
typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type>
#endif
- find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &mesh,
- const unsigned int vertex)
+ find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &mesh,
+ const unsigned int vertex)
{
// make sure that the given vertex is
// an active vertex of the underlying
} // namespace internal
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator, Point<dim>>
#else
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>
#endif
- find_active_cell_around_point(
- const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<
- std::set<typename MeshType<dim, spacedim>::active_cell_iterator>>
- & vertex_to_cells,
- const std::vector<std::vector<Tensor<1, spacedim>>> &vertex_to_cell_centers,
- const typename MeshType<dim, spacedim>::active_cell_iterator &cell_hint,
- const std::vector<bool> & marked_vertices,
- const RTree<std::pair<Point<spacedim>, unsigned int>> &used_vertices_rtree,
- const double tolerance,
- const RTree<
- std::pair<BoundingBox<spacedim>,
- typename Triangulation<dim, spacedim>::active_cell_iterator>>
- *relevant_cell_bounding_boxes_rtree)
+ find_active_cell_around_point(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<
+ std::set<typename MeshType<dim, spacedim>::active_cell_iterator>>
+ &vertex_to_cells,
+ const std::vector<std::vector<Tensor<1, spacedim>>>
+ &vertex_to_cell_centers,
+ const typename MeshType<dim, spacedim>::active_cell_iterator &cell_hint,
+ const std::vector<bool> &marked_vertices,
+ const RTree<std::pair<Point<spacedim>, unsigned int>>
+ & used_vertices_rtree,
+ const double tolerance,
+ const RTree<
+ std::pair<BoundingBox<spacedim>,
+ typename Triangulation<dim, spacedim>::active_cell_iterator>>
+ *relevant_cell_bounding_boxes_rtree)
{
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
Point<dim>>
namespace BoundingBoxPredicate
{
template <class MeshType>
- std::tuple<BoundingBox<MeshType::space_dimension>, bool>
- compute_cell_predicate_bounding_box(
- const typename MeshType::cell_iterator &parent_cell,
- const std::function<
- bool(const typename MeshType::active_cell_iterator &)> &predicate)
+ DEAL_II_CXX20_REQUIRES(
+ concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::tuple<
+ BoundingBox<MeshType::space_dimension>,
+ bool> compute_cell_predicate_bounding_box(const typename MeshType::
+ cell_iterator &parent_cell,
+ const std::function<bool(
+ const typename MeshType::
+ active_cell_iterator &)>
+ &predicate)
{
bool has_predicate =
false; // Start assuming there's no cells with predicate inside
template <class MeshType>
- std::vector<BoundingBox<MeshType::space_dimension>>
- compute_mesh_predicate_bounding_box(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- & predicate,
- const unsigned int refinement_level,
- const bool allow_merge,
- const unsigned int max_boxes)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<BoundingBox<MeshType::space_dimension>> compute_mesh_predicate_bounding_box(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ & predicate,
+ const unsigned int refinement_level,
+ const bool allow_merge,
+ const unsigned int max_boxes)
{
// Algorithm brief description: begin with creating bounding boxes of all
// cells at refinement_level (and coarser levels if there are active cells)
namespace GridTools
{
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices)
{
// first get the underlying
// triangulation from the
template <int dim, template <int, int> class MeshType, int spacedim>
- unsigned int
- find_closest_vertex(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices)
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ unsigned int find_closest_vertex(const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices)
{
// Take a shortcut in the simple case.
if (mapping.preserves_vertex_locations() == true)
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<typename MeshType<dim, spacedim>::active_cell_iterator>
#else
typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type>
#endif
- find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &mesh,
- const unsigned int vertex)
+ find_cells_adjacent_to_vertex(const MeshType<dim, spacedim> &mesh,
+ const unsigned int vertex)
{
// make sure that the given vertex is
// an active vertex of the underlying
namespace
{
template <int dim, template <int, int> class MeshType, int spacedim>
- void
- find_active_cell_around_point_internal(
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
+ void find_active_cell_around_point_internal(
const MeshType<dim, spacedim> &mesh,
#ifndef _MSC_VER
std::set<typename MeshType<dim, spacedim>::active_cell_iterator>
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
typename MeshType<dim, spacedim>::active_cell_iterator
#else
typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type
#endif
- find_active_cell_around_point(const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices,
- const double tolerance)
+ find_active_cell_around_point(const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices,
+ const double tolerance)
{
return find_active_cell_around_point<dim, MeshType, spacedim>(
get_default_linear_mapping(mesh.get_triangulation()),
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator, Point<dim>>
#else
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>
#endif
- find_active_cell_around_point(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const std::vector<bool> & marked_vertices,
- const double tolerance)
+ find_active_cell_around_point(const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const std::vector<bool> &marked_vertices,
+ const double tolerance)
{
using active_cell_iterator = typename dealii::internal::
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type;
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
Point<dim>>>
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>>
#endif
- find_all_active_cells_around_point(const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const double tolerance,
- const std::vector<bool> &marked_vertices)
+ find_all_active_cells_around_point(const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const double tolerance,
+ const std::vector<bool> &marked_vertices)
{
const auto cell_and_point = find_active_cell_around_point(
mapping, mesh, p, marked_vertices, tolerance);
template <int dim, template <int, int> class MeshType, int spacedim>
+ DEAL_II_CXX20_REQUIRES(
+ (concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>))
#ifndef _MSC_VER
std::vector<std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
Point<dim>>>
ActiveCellIterator<dim, spacedim, MeshType<dim, spacedim>>::type,
Point<dim>>>
#endif
- find_all_active_cells_around_point(
- const Mapping<dim, spacedim> & mapping,
- const MeshType<dim, spacedim> &mesh,
- const Point<spacedim> & p,
- const double tolerance,
- const std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
- Point<dim>> & first_cell)
+ find_all_active_cells_around_point(
+ const Mapping<dim, spacedim> & mapping,
+ const MeshType<dim, spacedim> &mesh,
+ const Point<spacedim> & p,
+ const double tolerance,
+ const std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
+ Point<dim>> & first_cell)
{
std::vector<
std::pair<typename MeshType<dim, spacedim>::active_cell_iterator,
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_active_cell_halo_layer(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- &predicate)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::active_cell_iterator> compute_active_cell_halo_layer(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ &predicate)
{
std::vector<typename MeshType::active_cell_iterator> active_halo_layer;
std::vector<bool> locally_active_vertices_on_subdomain(
template <class MeshType>
- std::vector<typename MeshType::cell_iterator>
- compute_cell_halo_layer_on_level(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::cell_iterator &)>
- & predicate,
- const unsigned int level)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::cell_iterator> compute_cell_halo_layer_on_level(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::cell_iterator &)>
+ & predicate,
+ const unsigned int level)
{
std::vector<typename MeshType::cell_iterator> level_halo_layer;
std::vector<bool> locally_active_vertices_on_level_subdomain(
namespace
{
template <class MeshType>
- bool
- contains_locally_owned_cells(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ bool contains_locally_owned_cells(
const std::vector<typename MeshType::active_cell_iterator> &cells)
{
for (typename std::vector<
}
template <class MeshType>
- bool
- contains_artificial_cells(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ bool contains_artificial_cells(
const std::vector<typename MeshType::active_cell_iterator> &cells)
{
for (typename std::vector<
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_ghost_cell_halo_layer(const MeshType &mesh)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<
+ typename MeshType::
+ active_cell_iterator> compute_ghost_cell_halo_layer(const MeshType &mesh)
{
std::function<bool(const typename MeshType::active_cell_iterator &)>
predicate = IteratorFilters::LocallyOwnedCell();
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_active_cell_layer_within_distance(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- & predicate,
- const double layer_thickness)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::
+ vector<typename MeshType::active_cell_iterator> compute_active_cell_layer_within_distance(
+ const MeshType &mesh,
+ const std::function<bool(const typename MeshType::active_cell_iterator &)>
+ & predicate,
+ const double layer_thickness)
{
std::vector<typename MeshType::active_cell_iterator>
subdomain_boundary_cells, active_cell_layer_within_distance;
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- compute_ghost_cell_layer_within_distance(const MeshType &mesh,
- const double layer_thickness)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<
+ typename MeshType::
+ active_cell_iterator> compute_ghost_cell_layer_within_distance(const MeshType
+ &mesh,
+ const double
+ layer_thickness)
{
IteratorFilters::LocallyOwnedCell locally_owned_cell_predicate;
std::function<bool(const typename MeshType::active_cell_iterator &)>
template <class MeshType>
- std::pair<Point<MeshType::space_dimension>, Point<MeshType::space_dimension>>
- compute_bounding_box(
- const MeshType &mesh,
- const std::function<bool(const typename MeshType::active_cell_iterator &)>
- &predicate)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::pair<
+ Point<MeshType::space_dimension>,
+ Point<MeshType::
+ space_dimension>> compute_bounding_box(const MeshType &mesh,
+ const std::function<bool(
+ const typename MeshType::
+ active_cell_iterator &)>
+ &predicate)
{
std::vector<bool> locally_active_vertices_on_subdomain(
mesh.get_triangulation().n_vertices(), false);
template <typename MeshType>
- std::list<std::pair<typename MeshType::cell_iterator,
- typename MeshType::cell_iterator>>
- get_finest_common_cells(const MeshType &mesh_1, const MeshType &mesh_2)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::list<std::pair<
+ typename MeshType::cell_iterator,
+ typename MeshType::cell_iterator>> get_finest_common_cells(const MeshType
+ &mesh_1,
+ const MeshType
+ &mesh_2)
{
Assert(have_same_coarse_mesh(mesh_1, mesh_2),
ExcMessage("The two meshes must be represent triangulations that "
template <typename MeshType>
- bool
- have_same_coarse_mesh(const MeshType &mesh_1, const MeshType &mesh_2)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ bool have_same_coarse_mesh(const MeshType &mesh_1, const MeshType &mesh_2)
{
return have_same_coarse_mesh(mesh_1.get_triangulation(),
mesh_2.get_triangulation());
template <class MeshType>
- std::vector<typename MeshType::active_cell_iterator>
- get_patch_around_cell(const typename MeshType::active_cell_iterator &cell)
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ std::vector<typename MeshType::active_cell_iterator> get_patch_around_cell(
+ const typename MeshType::active_cell_iterator &cell)
{
Assert(cell->is_locally_owned(),
ExcMessage("This function only makes sense if the cell for "
template <typename MeshType>
- void
- collect_periodic_faces(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void collect_periodic_faces(
const MeshType & mesh,
const types::boundary_id b_id,
const unsigned int direction,
template <typename MeshType>
- void
- collect_periodic_faces(
+ DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+ void collect_periodic_faces(
const MeshType & mesh,
const types::boundary_id b_id1,
const types::boundary_id b_id2,
template <class MeshType>
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
InterGridMap<MeshType>::InterGridMap()
: source_grid(nullptr, typeid(*this).name())
, destination_grid(nullptr, typeid(*this).name())
template <class MeshType>
-void
-InterGridMap<MeshType>::make_mapping(const MeshType &source_grid,
- const MeshType &destination_grid)
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+void InterGridMap<MeshType>::make_mapping(const MeshType &source_grid,
+ const MeshType &destination_grid)
{
// first delete all contents
clear();
template <class MeshType>
-void
-InterGridMap<MeshType>::set_mapping(const cell_iterator &src_cell,
- const cell_iterator &dst_cell)
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+void InterGridMap<MeshType>::set_mapping(const cell_iterator &src_cell,
+ const cell_iterator &dst_cell)
{
// first set the map for this cell
mapping[src_cell->level()][src_cell->index()] = dst_cell;
template <class MeshType>
-void
-InterGridMap<MeshType>::set_entries_to_cell(const cell_iterator &src_cell,
- const cell_iterator &dst_cell)
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+void InterGridMap<MeshType>::set_entries_to_cell(const cell_iterator &src_cell,
+ const cell_iterator &dst_cell)
{
// first set the map for this cell
mapping[src_cell->level()][src_cell->index()] = dst_cell;
template <class MeshType>
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
typename InterGridMap<MeshType>::cell_iterator
-InterGridMap<MeshType>::operator[](const cell_iterator &source_cell) const
+ InterGridMap<MeshType>::operator[](const cell_iterator &source_cell) const
{
Assert(source_cell.state() == IteratorState::valid,
ExcInvalidKey(source_cell));
template <class MeshType>
-void
-InterGridMap<MeshType>::clear()
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+void InterGridMap<MeshType>::clear()
{
mapping.clear();
source_grid = nullptr;
template <class MeshType>
-const MeshType &
-InterGridMap<MeshType>::get_source_grid() const
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+const MeshType &InterGridMap<MeshType>::get_source_grid() const
{
return *source_grid;
}
template <class MeshType>
-const MeshType &
-InterGridMap<MeshType>::get_destination_grid() const
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+const MeshType &InterGridMap<MeshType>::get_destination_grid() const
{
return *destination_grid;
}
template <class MeshType>
-std::size_t
-InterGridMap<MeshType>::memory_consumption() const
+DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
+std::size_t InterGridMap<MeshType>::memory_consumption() const
{
return (MemoryConsumption::memory_consumption(mapping) +
MemoryConsumption::memory_consumption(source_grid) +