* applicable, see the
* @ref threads "Parallel computing with multiple processors"
* module.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function,
+ * decltype(*std::declval<InputIterator>())> &&
+ * std::assignable_from<decltype(*std::declval<OutputIterator>()),
+ * std::invoke_result_t<Function,
+ * decltype(*std::declval<InputIterator>())>>)}
*/
template <typename InputIterator, typename OutputIterator, typename Function>
DEAL_II_CXX20_REQUIRES(
* applicable, see the
* @ref threads "Parallel computing with multiple processors"
* module.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function,
+ * decltype(*std::declval<InputIterator1>()),
+ * decltype(*std::declval<InputIterator2>())> &&
+ * std::assignable_from<decltype(*std::declval<OutputIterator>()),
+ * std::invoke_result_t<Function,
+ * decltype(*std::declval<InputIterator1>()),
+ * decltype(*std::declval<InputIterator2>())>>)}
*/
template <typename InputIterator1,
typename InputIterator2,
* applicable, see the
* @ref threads "Parallel computing with multiple processors"
* module.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function,
+ * decltype(*std::declval<InputIterator1>()),
+ * decltype(*std::declval<InputIterator2>()),
+ * decltype(*std::declval<InputIterator3>())> &&
+ * std::assignable_from<decltype(*std::declval<OutputIterator>()),
+ * std::invoke_result_t<Function,
+ * decltype(*std::declval<InputIterator1>()),
+ * decltype(*std::declval<InputIterator2>()),
+ * decltype(*std::declval<InputIterator3>())>>)}
*/
template <typename InputIterator1,
typename InputIterator2,
/**
* Take a range argument and call the given function with its begin and
* end.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function, Iterator, Iterator>)}
*/
template <typename Iterator, typename Function>
DEAL_II_CXX20_REQUIRES((std::invocable<Function, Iterator, Iterator>))
* applicable, see also the
* @ref threads "Parallel computing with multiple processors"
* module.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function, Iterator, Iterator>)}
*/
template <typename Iterator, typename Function>
DEAL_II_CXX20_REQUIRES((std::invocable<Function, Iterator, Iterator>))
* applicable, see also the
* @ref threads "Parallel computing with multiple processors"
* module.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function, Iterator, Iterator> &&
+ * std::convertible_to<std::invoke_result_t<Function, Iterator, Iterator>,
+ * ResultType>)}
*/
template <typename ResultType, typename Iterator, typename Function>
DEAL_II_CXX20_REQUIRES(
*
*
* @ingroup geomprimitives
+ *
+ * @dealiiConceptRequires{dim >= 0}
*/
template <int dim, typename Number = double>
DEAL_II_CXX20_REQUIRES(dim >= 0)
* Output operator for points. Print the elements consecutively, with a space
* in between.
* @relatesalso Point
+ *
+ * @dealiiConceptRequires{dim >= 0}
*/
template <int dim, typename Number>
DEAL_II_CXX20_REQUIRES(dim >= 0)
/**
* Input operator for points. Inputs the elements consecutively.
* @relatesalso Point
+ *
+ * @dealiiConceptRequires{dim >= 0}
*/
template <int dim, typename Number>
DEAL_II_CXX20_REQUIRES(dim >= 0)
* @deprecated Use std::thread or std::jthread instead.
*
* @ingroup CPP11
+ *
+ * @dealiiConceptRequires{(std::invocable<FunctionObjectType>)}
*/
template <typename FunctionObjectType>
DEAL_II_CXX20_REQUIRES((std::invocable<FunctionObjectType>))
{
/**
* Set the value of a std::promise object by evaluating the action.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function> &&
+ * std::convertible_to<std::invoke_result_t<Function>, RT>)}
*/
template <typename RT, typename Function>
DEAL_II_CXX20_REQUIRES(
* for the case where the return type is `void`. Consequently, we
* can't set a value. But we do evaluate the function object and
* call `std::promise::set_value()` without argument.
+ *
+ * @dealiiConceptRequires{(std::invocable<Function>)}
*/
template <typename Function>
DEAL_II_CXX20_REQUIRES((std::invocable<Function>))
* for more information.
*
* @ingroup CPP11
+ *
+ * @dealiiConceptRequires{(std::invocable<FunctionObjectType>)}
*/
template <typename FunctionObjectType>
DEAL_II_CXX20_REQUIRES((std::invocable<FunctionObjectType>))
* @note Currently only simple periodicity conditions (i.e. without offsets
* and rotation matrices - see also the documentation of
* GridTools::collect_periodic_faces()) are supported.
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
* mesh.
*
* @ingroup distributed
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
* Since the constructor of this class is deleted, no such objects
* can actually be created as this would be pointless given that
* MPI is not available.
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
*
*
* @ingroup distributed
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
* Specialization of the general template for the 1d case. There is
* currently no support for distributing 1d triangulations. Consequently,
* all this class does is throw an exception.
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<1, spacedim>)}
*/
template <int spacedim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<1, spacedim>))
* Since the constructor of this class is deleted, no such objects
* can actually be created as this would be pointless given that
* p4est is not available.
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
* return false;
* }
* @endcode
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
* parallel::distributed::SolutionTransfer for more information.
*
* @ingroup dofs
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
/**
* Constructor. Set the iterator to the default state and use the given
* predicate for filtering subsequent assignment and iteration.
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename Predicate>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
* If the cell <code>triangulation.begin_active()</code> does not have a
* subdomain_id equal to 13, then the iterator will automatically be
* advanced to the first cell that has.
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename Predicate>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
* automatically here.
*
* @relatesalso FilteredIterator
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename BaseIterator, typename Predicate>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
*
* @relatesalso FilteredIterator
* @ingroup CPP11
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename BaseIterator, typename Predicate>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
*
* @relatesalso FilteredIterator
* @ingroup CPP11
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename BaseIterator, typename Predicate, typename... Targs>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
*
* @relatesalso FilteredIterator
* @ingroup CPP11
+ *
+ * @dealiiConceptRequires{(std::predicate<Predicate, BaseIterator>)}
*/
template <typename BaseIterator, typename Predicate>
DEAL_II_CXX20_REQUIRES((std::predicate<Predicate, BaseIterator>))
* dimensions no manifold objects are copied by this function: you must
* attach new manifold objects to @p surface_mesh.
*
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <template <int, int> class MeshType, int dim, int spacedim>
DEAL_II_CXX20_REQUIRES(
*
* This function is used in the "Possibilities for extensions" section of
* step-38. It is also used in step-49 and step-53.
+ *
+ * @dealiiConceptRequires{(std::invocable<Transformation, Point<spacedim>> &&
+ * std::assignable_from<Point<spacedim> &,
+ * std::invoke_result_t<Transformation, Point<spacedim>>>)}
*/
template <int dim, typename Transformation, int spacedim>
DEAL_II_CXX20_REQUIRES(
* Triangulation::n_vertices() for the triangulation underlying the given mesh
* (as opposed to the value returned by Triangulation::n_used_vertices()).
* @return The index of the closest vertex found.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* Triangulation::n_vertices() for the triangulation underlying the given mesh
* (as opposed to the value returned by Triangulation::n_used_vertices()).
* @return The index of the closest vertex found.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* @note It isn't entirely clear at this time whether the function does the
* right thing with anisotropically refined meshes. It needs to be checked
* for this case.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* cell contains a point. For example, if two processors come together
* at one vertex and the function is called with this vertex, then one
* processor will return a locally owned cell and the other one a ghost cell.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* the mapping argument.
*
* @return An iterator into the mesh that points to the surrounding cell.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* GridTools::Cache object. Note, however, that in this case MeshType
* has to be Triangulation, so that it might be more appropriate to directly
* call the function above with argument `cache` in this case.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* auto all_cells = GridTools::find_all_active_cells_around_point(
* mapping, mesh, p, tolerance, first_pair);
* @endcode
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* functions find_active_cell_around_point() to obtain a first cell, and
* subsequently adds all other active non-artificial cells by calling the
* function find_all_active_cells_around_point() above.
+ *
+ * @dealiiConceptRequires{
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>}
*/
template <int dim, template <int, int> class MeshType, int spacedim>
DEAL_II_CXX20_REQUIRES(
* @code
* GridTools::get_active_child_cells<DoFHandler<dim> > (cell)
* @endcode
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* @code
* GridTools::get_active_neighbors<DoFHandler<dim>>(cell, active_neighbors)
* @endcode
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* is a function that takes in an active cell and returns a boolean.
* @return A list of active cells sharing at least one common vertex with
* the predicated subdomain.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* that level that share a common set of vertices with the subdomain
* but are not a part of it). Here, the "subdomain" consists of exactly
* all of those cells for which the @p predicate returns @p true.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* @ref ConceptMeshType "MeshType concept".
* @param[in] mesh A mesh (i.e. objects of type Triangulation or DoFHandler).
* @return A list of ghost cells
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* returns @p true.
*
* See compute_active_cell_halo_layer().
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
*
* Also see compute_ghost_cell_halo_layer() and
* compute_active_cell_layer_within_distance().
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* object as one may expect. However, BoundingBox has a conversion constructor
* from pairs of points, so the result of this function can still be assigned
* to a BoundingBox object.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* This function does not take into account the curvature of cells and thus it
* is not suited for handling curved geometry: the mapping is assumed to be
* linear.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* parallel::distributed::Triangulation when both meshes use the same
* Triangulation since, with a distributed Triangulation, not all cells are
* stored locally, so the resulting list may not cover the entire domain.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
*
* @tparam MeshType A type that satisfies the requirements of the
* @ref ConceptMeshType "MeshType concept".
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* ghost cells. For both, we know that these are in fact the real cells of
* the complete, parallel triangulation. We can also query the degrees of
* freedom on these.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* boundary indicators set. In general, this means that one must first set
* all boundary indicators on the coarse grid before performing any global
* or local grid refinement.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* @note This version of collect_periodic_faces() will not work on
* meshes with cells not in
* @ref GlossFaceOrientation "standard orientation".
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* you get the idea -- the code could, just as well, have exchanged
* material ids, user indices, boundary indicators, or any kind of other
* data with similar calls as the ones above.)
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename DataType, typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* function allows to provide a @p cell_filter function, which can be used to only
* communicate marked cells. In the default case, all relevant cells are
* communicated.
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <typename DataType, typename MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* equally well be Triangulation or PersistentTriangulation).
*
* @ingroup grid
+ *
+ * @dealiiConceptRequires{concepts::is_triangulation_or_dof_handler<MeshType>}
*/
template <class MeshType>
DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
* data stored in the triangulation.
*
* @ingroup grid aniso
+ *
+ * @dealiiConceptRequires{(concepts::is_valid_dim_spacedim<dim, spacedim>)}
*/
template <int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES((concepts::is_valid_dim_spacedim<dim, spacedim>))
*
* @warning This is a collective call that needs to be executed by all
* processors in the communicator.
+ *
+ * @dealiiConceptRequires{(concepts::is_dealii_vector_type<VectorType> &&
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>)}
*/
template <int n_components,
template <int, int>
*
* @warning This is a collective call that needs to be executed by all
* processors in the communicator.
+ *
+ * @dealiiConceptRequires{(concepts::is_dealii_vector_type<VectorType> &&
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>)}
*/
template <int n_components,
template <int, int>
*
* @warning This is a collective call that needs to be executed by all
* processors in the communicator.
+ *
+ * @dealiiConceptRequires{(concepts::is_dealii_vector_type<VectorType> &&
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>)}
*/
template <int n_components,
template <int, int>
*
* @warning This is a collective call that needs to be executed by all
* processors in the communicator.
+ *
+ * @dealiiConceptRequires{(concepts::is_dealii_vector_type<VectorType> &&
+ * concepts::is_triangulation_or_dof_handler<MeshType<dim, spacedim>>)}
*/
template <int n_components,
template <int, int>
* the general documentation of the namespace), but only for InVectors as in
* the documentation of the namespace, OutVector only Vector<double> and
* Vector<float>.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>
+ * &&concepts::is_writable_dealii_vector_type<OutVector>}
*/
template <int dim, class InVector, class OutVector, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector> &&
/**
* Call the integrate_difference() function, see above, with
* <tt>mapping=MappingQ@<dim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>
+ * &&concepts::is_writable_dealii_vector_type<OutVector>}
*/
template <int dim, class InVector, class OutVector, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector> &&
/**
* Same as above for hp.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>
+ * &&concepts::is_writable_dealii_vector_type<OutVector>}
*/
template <int dim, class InVector, class OutVector, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector> &&
/**
* Call the integrate_difference() function, see above, with
* <tt>mapping=MappingQ@<dim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>
+ * &&concepts::is_writable_dealii_vector_type<OutVector>}
*/
template <int dim, class InVector, class OutVector, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector> &&
* is chosen.
*
* @note Instantiated for type Vector<double> and Vector<float>.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>}
*/
template <int dim, int spacedim, class InVector>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector>)
* continuous again.
*
* See the general documentation of this namespace for further information.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Same as above but in an hp-context.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Call the @p interpolate() function above with
* <tt>mapping=MappingQ@<dim,spacedim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* (see the general documentation of the namespace), but only the same
* vector for InVector and OutVector. Other combinations must be
* instantiated by hand.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<InVector>
+ * &&concepts::is_writable_dealii_vector_type<OutVector>}
*/
template <int dim, class InVector, class OutVector, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<InVector> &&
* these objects separately (the order depends on what you want to get
* between cells), then each subsequent call will rewrite the intercell @p
* dofs of the previous one.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* only if the parallel partitioning is the same for both meshes (see the
* parallel::distributed::Triangulation<dim>::no_automatic_repartitioning
* flag).
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* continuous elements on grids with hanging nodes (locally refined grids):
* Without it - due to cellwise interpolation - the resulting output vector
* does not necessarily respect continuity requirements at hanging nodes.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @p intergridmap has to be initialized via InterGridMap::make_mapping
* pointing from a source DoFHandler to a destination DoFHandler.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* This function is only implemented for FiniteElements where the specified
* components are primitive.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* degree of the finite element in the DoFHandler @p dh, but more
* importantly it allows to fill location vectors for mappings that do not
* preserve vertex locations (like Eulerian mappings).
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @warning This function can only be used for distributed vector classes
* provided the boolean mask is empty, i.e. selecting the whole vector.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @note In contrast to subtract_mean_value(), this function can
* adjust a single component of a distributed vector.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <class VectorType, int dim, int spacedim = dim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* finite element function with mean value zero. In fact, it only works for
* Lagrangian elements. For all other elements, you will need to compute the
* mean value and subtract it right inside the evaluation routine.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* Calls the other compute_mean_value() function, see above, for the non-hp
* case. That means, it requires a single FiniteElement, a single Quadrature,
* and a single Mapping object.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
/**
* Call the other compute_mean_value() function, see above, with
* <tt>mapping=MappingQ@<dim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* the other, you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
*
* @note If the cell in which the point is found is not locally owned, an
* exception of type VectorTools::ExcPointNotAvailableHere is thrown.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
*
* @note If the cell in which the point is found is not locally owned, an
* exception of type VectorTools::ExcPointNotAvailableHere is thrown.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is <i>not</i> continuous, then you will get unpredictable values for
* points on or close to the boundary of the cell, as one would expect
* when trying to evaluate point values of discontinuous functions.
+ *
+ * @dealiiConceptRequires{concepts::is_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_dealii_vector_type<VectorType>)
* is true.
* @param[in] project_to_boundary_first If true, perform a projection on the
* boundary before projecting the interior of the function.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Call the project() function above, with
* <tt>mapping=MappingQ@<dim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Same as above, but with hp-capabilities.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Call the project() function above, with a collection of $Q_1$ mapping
* objects, i.e., with hp::StaticMappingQ1::mapping_collection.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* @endcode
* where <code>qp_data</code> is a CellDataStorage object, which stores
* quadrature point data.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* to use in case it was constructed with an <code>std::vector<const
* DoFHandler<dim>*></code>. It will be used internally in constructor of
* FEEvaluation object.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Same as above but for <code>n_q_points_1d =
* matrix_free.get_dof_handler().get_fe().degree+1</code>.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* Helper interface for the matrix-free implementation of project(): avoid
* instantiating the other helper functions for more than one VectorType
* by copying from a LinearAlgebra::distributed::Vector.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, typename VectorType, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Generic implementation of the project() function
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim,
int spacedim,
* number types for MatrixFree support. Check if we actually can use the
* MatrixFree implementation or need to use the matrix based one nonetheless
* based on the number of components.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <typename VectorType, int dim, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Specialization of project() for complex numbers or `dim < spacedim`,
* for which we are sure that we cannot use the MatrixFree implementation.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <typename VectorType, int dim, int spacedim>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
* vector is deleted.
*
* See the general documentation of this namespace for further information.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Call the create_right_hand_side() function, see above, with
* <tt>mapping=MappingQ@<dim@>(1)</tt>.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Like the previous set of functions, but for hp-objects.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
/**
* Like the previous set of functions, but for hp-objects.
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @see
* @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @see
* @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @see
* @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)
*
* @see
* @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+ *
+ * @dealiiConceptRequires{concepts::is_writable_dealii_vector_type<VectorType>}
*/
template <int dim, int spacedim, typename VectorType>
DEAL_II_CXX20_REQUIRES(concepts::is_writable_dealii_vector_type<VectorType>)