* </ul>
* Many other examples, as well as much theoretical underpinning for the
* implementation in deal.II, is provided in the
- * @ref GlossGeometryPaper "geometry paper".
+ * @ref geometry_paper "geometry paper".
*
* In deal.II, a Manifold is seen as a collection of points, together
* with a notion of distance between points (on the manifold). New
};
+#ifndef DOXYGEN
namespace internal
{
template <int rank, int dim, typename T, typename U>
DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number>::operator Number &()
{
// We cannot use Assert inside a CUDA kernel
-#ifndef __CUDA_ARCH__
+# ifndef __CUDA_ARCH__
Assert(dim != 0,
ExcMessage("Cannot access an object of type Tensor<0,0,Number>"));
-#endif
+# endif
return value;
}
DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number>::operator const Number &() const
{
// We cannot use Assert inside a CUDA kernel
-#ifndef __CUDA_ARCH__
+# ifndef __CUDA_ARCH__
Assert(dim != 0,
ExcMessage("Cannot access an object of type Tensor<0,0,Number>"));
-#endif
+# endif
return value;
}
}
-#ifdef __INTEL_COMPILER
+# ifdef __INTEL_COMPILER
template <int dim, typename Number>
DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE
DEAL_II_CUDA_HOST_DEV Tensor<0, dim, Number> &
value = p.value;
return *this;
}
-#endif
+# endif
template <int dim, typename Number>
DEAL_II_CONSTEXPR inline bool
Tensor<0, dim, Number>::operator==(const Tensor<0, dim, OtherNumber> &p) const
{
-#if defined(DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING)
+# if defined(DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING)
Assert(!(std::is_same<Number, adouble>::value ||
std::is_same<OtherNumber, adouble>::value),
ExcMessage(
"The Tensor equality operator for ADOL-C taped numbers has not yet "
"been extended to support advanced branching."));
-#endif
+# endif
return numbers::values_are_equal(value, p.value);
}
val *= s;
}
-#ifdef __CUDA_ARCH__
+# ifdef __CUDA_ARCH__
template <typename Number, typename OtherNumber>
DEAL_II_CONSTEXPR inline DEAL_II_ALWAYS_INLINE DEAL_II_CUDA_HOST_DEV void
multiply_assign_scalar(std::complex<Number> &, const OtherNumber &)
printf("This function is not implemented for std::complex<Number>!\n");
assert(false);
}
-#endif
+# endif
} // namespace ComplexWorkaround
} // namespace internal
Tensor<0, dim, Number>::norm_square() const
{
// We cannot use Assert inside a CUDA kernel
-#ifndef __CUDA_ARCH__
+# ifndef __CUDA_ARCH__
Assert(dim != 0,
ExcMessage("Cannot access an object of type Tensor<0,0,Number>"));
-#endif
+# endif
return numbers::NumberTraits<Number>::abs_square(value);
}
std::integral_constant<int, dim>)
{
// We cannot use Assert in a CUDA kernel
-#ifndef __CUDA_ARCH__
+# ifndef __CUDA_ARCH__
AssertIndexRange(i, dim);
-#endif
+# endif
return values[i];
}
std::integral_constant<int, 0>)
{
// We cannot use Assert in a CUDA kernel
-#ifndef __CUDA_ARCH__
+# ifndef __CUDA_ARCH__
Assert(
false,
ExcMessage(
"Cannot access elements of an object of type Tensor<rank,0,Number>."));
-#endif
+# endif
return Uninitialized<ArrayElementType>::value;
}
} // namespace TensorSubscriptor
template <int rank_, int dim, typename Number>
constexpr unsigned int Tensor<rank_, dim, Number>::n_independent_components;
+#endif // DOXYGEN
/* ----------------- Non-member functions operating on tensors. ------------ */
T data;
# endif
};
+} // namespace Threads
+/**
+ * @}
+ */
+# ifndef DOXYGEN
+namespace Threads
+{
// ----------------- inline and template functions --------------------------
template <typename T>
inline T &
ThreadLocalStorage<T>::get()
{
-# ifdef DEAL_II_WITH_THREADS
+# ifdef DEAL_II_WITH_THREADS
return data.local();
-# else
+# else
return data;
-# endif
+# endif
}
inline T &
ThreadLocalStorage<T>::get(bool &exists)
{
-# ifdef DEAL_II_WITH_THREADS
+# ifdef DEAL_II_WITH_THREADS
return data.local(exists);
-# else
+# else
exists = true;
return data;
-# endif
+# endif
}
template <typename T>
inline
-# ifdef DEAL_II_WITH_THREADS
+# ifdef DEAL_II_WITH_THREADS
tbb::enumerable_thread_specific<T> &
-# else
+# else
T &
-# endif
+# endif
ThreadLocalStorage<T>::get_implementation()
{
return data;
inline void
ThreadLocalStorage<T>::clear()
{
-# ifdef DEAL_II_WITH_THREADS
+# ifdef DEAL_II_WITH_THREADS
data.clear();
-# else
+# else
data = T{};
-# endif
+# endif
}
} // namespace Threads
-/**
- * @}
- */
-
+# endif // DOXYGEN
//---------------------------------------------------------------------------
DEAL_II_NAMESPACE_CLOSE
operator<<(std::ostream &out, const BlockMask &mask);
+#ifndef DOXYGEN
// -------------------- inline functions ---------------------
inline BlockMask::BlockMask(const std::vector<bool> &block_mask)
{
return block_mask != mask.block_mask;
}
-
+#endif // DOXYGEN
DEAL_II_NAMESPACE_CLOSE
std::ostream &
operator<<(std::ostream &out, const ComponentMask &mask);
-
+#ifndef DOXYGEN
// -------------------- inline functions ---------------------
inline ComponentMask::ComponentMask(const std::vector<bool> &component_mask)
{
return component_mask != mask.component_mask;
}
-
+#endif // DOXYGEN
DEAL_II_NAMESPACE_CLOSE
* geometry, but their common uses can be easily described simply through
* examples. An exhaustive discussion of how, where, and why this class
* is used is provided in the
- * @ref GlossGeometryPaper "geometry paper".
+ * @ref geometry_paper "geometry paper".
*
*
* <h3>Common use case: Creating a new vertex</h3>
* Construct a TriangulationDescription::Description. In contrast
* to the function above, this function is also responsible for creating
* a serial triangulation and for its partitioning (by calling the
- * provided `std::functions' objects). Internally only selected processes (
+ * provided `std::function` objects). Internally only selected processes (
* every n-th/each root of a group of size group_size) create a serial
* triangulation and the TriangulationDescription::Description for all
* processes in its group, which is communicated.
*
* @param M11 The internal matrix for the first cell obtained as result.
* @param M12 The external matrix for the first cell obtained as result.
- * @param M12 The external matrix for the second cell obtained as result.
+ * @param M21 The external matrix for the second cell obtained as result.
* @param M22 The internal matrix for the second cell obtained as result.
* @param fe1 The FEValues object describing the local trial function
* space for the first cell. #update_values and #update_JxW_values must be
// explicit instantiations
# include "trilinos_sparse_matrix.inst"
-
+# ifndef DOXYGEN
// TODO: put these instantiations into generic file
namespace TrilinosWrappers
{
dealii::LinearAlgebra::distributed::Vector<double> &,
const dealii::LinearAlgebra::distributed::Vector<double> &) const;
-# ifdef DEAL_II_WITH_MPI
-# ifdef DEAL_II_TRILINOS_WITH_TPETRA
+# ifdef DEAL_II_WITH_MPI
+# ifdef DEAL_II_TRILINOS_WITH_TPETRA
template void
SparseMatrix::vmult(
dealii::LinearAlgebra::TpetraWrappers::Vector<double> &,
SparseMatrix::vmult(
dealii::LinearAlgebra::TpetraWrappers::Vector<float> &,
const dealii::LinearAlgebra::TpetraWrappers::Vector<float> &) const;
-# endif
+# endif
template void
SparseMatrix::vmult(
dealii::LinearAlgebra::EpetraWrappers::Vector &,
const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
-# endif
+# endif
template void
SparseMatrix::Tvmult(MPI::Vector &, const MPI::Vector &) const;
dealii::LinearAlgebra::distributed::Vector<double> &,
const dealii::LinearAlgebra::distributed::Vector<double> &) const;
-# ifdef DEAL_II_WITH_MPI
-# ifdef DEAL_II_TRILINOS_WITH_TPETRA
+# ifdef DEAL_II_WITH_MPI
+# ifdef DEAL_II_TRILINOS_WITH_TPETRA
template void
SparseMatrix::Tvmult(
dealii::LinearAlgebra::TpetraWrappers::Vector<double> &,
SparseMatrix::Tvmult(
dealii::LinearAlgebra::TpetraWrappers::Vector<float> &,
const dealii::LinearAlgebra::TpetraWrappers::Vector<float> &) const;
-# endif
+# endif
template void
SparseMatrix::Tvmult(
dealii::LinearAlgebra::EpetraWrappers::Vector &,
const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
-# endif
+# endif
template void
SparseMatrix::vmult_add(MPI::Vector &, const MPI::Vector &) const;
dealii::LinearAlgebra::distributed::Vector<double> &,
const dealii::LinearAlgebra::distributed::Vector<double> &) const;
-# ifdef DEAL_II_WITH_MPI
-# ifdef DEAL_II_TRILINOS_WITH_TPETRA
+# ifdef DEAL_II_WITH_MPI
+# ifdef DEAL_II_TRILINOS_WITH_TPETRA
template void
SparseMatrix::vmult_add(
dealii::LinearAlgebra::TpetraWrappers::Vector<double> &,
SparseMatrix::vmult_add(
dealii::LinearAlgebra::TpetraWrappers::Vector<float> &,
const dealii::LinearAlgebra::TpetraWrappers::Vector<float> &) const;
-# endif
+# endif
template void
SparseMatrix::vmult_add(
dealii::LinearAlgebra::EpetraWrappers::Vector &,
const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
-# endif
+# endif
template void
SparseMatrix::Tvmult_add(MPI::Vector &, const MPI::Vector &) const;
dealii::LinearAlgebra::distributed::Vector<double> &,
const dealii::LinearAlgebra::distributed::Vector<double> &) const;
-# ifdef DEAL_II_WITH_MPI
-# ifdef DEAL_II_TRILINOS_WITH_TPETRA
+# ifdef DEAL_II_WITH_MPI
+# ifdef DEAL_II_TRILINOS_WITH_TPETRA
template void
SparseMatrix::Tvmult_add(
dealii::LinearAlgebra::TpetraWrappers::Vector<double> &,
SparseMatrix::Tvmult_add(
dealii::LinearAlgebra::TpetraWrappers::Vector<float> &,
const dealii::LinearAlgebra::TpetraWrappers::Vector<float> &) const;
-# endif
+# endif
template void
SparseMatrix::Tvmult_add(
dealii::LinearAlgebra::EpetraWrappers::Vector &,
const dealii::LinearAlgebra::EpetraWrappers::Vector &) const;
-# endif
+# endif
} // namespace TrilinosWrappers
+# endif // DOXYGEN
DEAL_II_NAMESPACE_CLOSE