Fix all the doxygen warnings.

This commit is contained in:
Antonio Sánchez
2025-02-01 00:00:31 +00:00
parent 9589cc4e7f
commit b1e74b1ccd
85 changed files with 829 additions and 2782 deletions

View File

@@ -16,7 +16,7 @@
#include "src/util/CXX11Meta.h"
/** \defgroup CXX11_TensorSymmetry_Module Tensor Symmetry Module
/** \defgroup TensorSymmetry_Module Tensor Symmetry Module
*
* This module provides a classes that allow for the definition of
* symmetries w.r.t. tensor indices.

View File

@@ -8,7 +8,6 @@ but more complex types such as strings are also supported.
You can manipulate a tensor with one of the following classes. They all are in
the namespace `::Eigen.`
### Class Tensor<data_type, rank>
This is the class to use to create a tensor and allocate memory for it. The
@@ -90,7 +89,7 @@ See Assigning to a `TensorRef` below.
## Accessing Tensor Elements
#### <data_type> tensor(index0, index1...)
#### data_type tensor(index0, index1...)
Return the element at position `(index0, index1...)` in tensor
`tensor`. You must pass as many parameters as the rank of `tensor`.

View File

@@ -428,7 +428,7 @@ struct ThreadProperties {
* \tparam input_mapper_properties : determine if the input tensors are matrix. If they are matrix, special memory
access is used to guarantee that always the memory access are coalesced.
*
* \tptaram IsFinal : determine if this is the final kernel. If so, the result will be written in a final output.
* \tparam IsFinal : determine if this is the final kernel. If so, the result will be written in a final output.
Otherwise, the result of contraction will be written iin a temporary buffer. This is the case when Tall/Skinny
contraction is used. So in this case, a final reduction step is required to compute final output.

View File

@@ -261,7 +261,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
// pos_j_base_powered[0] = ComplexScalar(1, 0);
// if (line_len > 1) {
// const ComplexScalar pos_j_base = ComplexScalar(
// numext::cos(M_PI / line_len), numext::sin(M_PI / line_len));
// numext::cos(EIGEN_PI / line_len), numext::sin(EIGEN_PI / line_len));
// pos_j_base_powered[1] = pos_j_base;
// if (line_len > 2) {
// const ComplexScalar pos_j_base_sq = pos_j_base * pos_j_base;
@@ -511,8 +511,8 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
template <int Dir>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_1D_merge(ComplexScalar* data, Index n, Index n_power_of_2) {
// Original code:
// RealScalar wtemp = std::sin(M_PI/n);
// RealScalar wpi = -std::sin(2 * M_PI/n);
// RealScalar wtemp = std::sin(EIGEN_PI/n);
// RealScalar wpi = -std::sin(2 * EIGEN_PI/n);
const RealScalar wtemp = m_sin_PI_div_n_LUT[n_power_of_2];
const RealScalar wpi =
(Dir == FFT_FORWARD) ? m_minus_sin_2_PI_div_n_LUT[n_power_of_2] : -m_minus_sin_2_PI_div_n_LUT[n_power_of_2];
@@ -600,7 +600,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
const Device EIGEN_DEVICE_REF m_device;
// This will support a maximum FFT size of 2^32 for each dimension
// m_sin_PI_div_n_LUT[i] = (-2) * std::sin(M_PI / std::pow(2,i)) ^ 2;
// m_sin_PI_div_n_LUT[i] = (-2) * std::sin(EIGEN_PI / std::pow(2,i)) ^ 2;
const RealScalar m_sin_PI_div_n_LUT[32] = {RealScalar(0.0),
RealScalar(-2),
RealScalar(-0.999999999999999),
@@ -634,7 +634,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
RealScalar(-1.71210344531737e-17),
RealScalar(-4.28025861329343e-18)};
// m_minus_sin_2_PI_div_n_LUT[i] = -std::sin(2 * M_PI / std::pow(2,i));
// m_minus_sin_2_PI_div_n_LUT[i] = -std::sin(2 * EIGEN_PI / std::pow(2,i));
const RealScalar m_minus_sin_2_PI_div_n_LUT[32] = {RealScalar(0.0),
RealScalar(0.0),
RealScalar(-1.00000000000000e+00),

View File

@@ -15,7 +15,7 @@
#include "../../Eigen/Householder"
/**
* \defgroup IterativeLinearSolvers_Module Iterative Solvers module
* \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
* This module aims to provide various iterative linear and non linear solver algorithms.
* It currently provides:
* - a Householder GMRES implementation
@@ -26,40 +26,48 @@
* - a IDRSTABL implementation
*
* Choosing the best solver for solving \c A \c x = \c b depends a lot on the preconditioner chosen as well as the
*properties of \c A. The following flowchart might help you. \dot width=50% digraph g { node [ fontname=Arial,
*fontsize=11]; edge [ fontname=Helvetica, fontsize=10 ]; A1[label="hermitian",shape="box"]; A2[label="positive
*definite",shape="box"]; CG[shape="plaintext"]; A3[label="ill conditioned",shape="box"]; A4[label="good
*preconditioner",shape="box"]; A5[label="flexible preconditioner",shape="box"]; A6[label="strongly
*indefinite",shape="box"]; A8[label="large imaginary eigenvalue",shape="box"]; A7[label="large imaginary
*eigenvalue",shape="box"];
*properties of \c A. The following flowchart might help you.
* \dot width=50%
* digraph g {
* node [ fontname=Arial, fontsize=11];
* edge [ fontname=Helvetica, fontsize=10 ];
* A1[label="hermitian", shape="box"];
* A2[label="positive definite", shape="box"];
* CG[shape="plaintext"];
* A3[label="ill conditioned", shape="box"];
* A4[label="good preconditioner", shape="box"];
* A5[label="flexible preconditioner", shape="box"];
* A6[label="strongly indefinite", shape="box"];
* A8[label="large imaginary eigenvalue", shape="box"];
* A7[label="large imaginary eigenvalue",shape="box"];
*
* SYMMLQ[shape="plaintext"];
* MINRES[shape="plaintext"];
* GCR[shape="plaintext"];
* GMRES[shape="plaintext"];
* IDRSTABL[shape="plaintext"];
* IDRS[shape="plaintext"];
* BICGSTABL[shape="plaintext"];
* BICGSTAB[shape="plaintext"];
* SYMMLQ[shape="plaintext"];
* MINRES[shape="plaintext"];
* GCR[shape="plaintext"];
* GMRES[shape="plaintext"];
* IDRSTABL[shape="plaintext"];
* IDRS[shape="plaintext"];
* BICGSTABL[shape="plaintext"];
* BICGSTAB[shape="plaintext"];
*
* A1 -> A2 [label="yes"];
* A2 -> CG [label="yes"];
* A2 -> A3 [label="no"];
* A3 -> SYMMLQ [label="yes"];
* A3 -> MINRES [label="no"];
* A1 -> A2 [label="yes"];
* A2 -> CG [label="yes"];
* A2 -> A3 [label="no"];
* A3 -> SYMMLQ [label="yes"];
* A3 -> MINRES [label="no"];
*
* A1 -> A4 [label="no"];
* A4 -> A5 [label="yes"];
* A5 -> GCR [label="yes"];
* A5 -> GMRES [label="no"];
* A1 -> A4 [label="no"];
* A4 -> A5 [label="yes"];
* A5 -> GCR [label="yes"];
* A5 -> GMRES [label="no"];
*
* A4 -> A6 [label="no"];
* A6 -> A8 [label="yes"];
* A6 -> A7 [label="no"];
* A7 -> BICGSTABL [label="yes"];
* A7 -> BICGSTAB [label="no"];
* A8 -> IDRSTABL [label="yes"];
* A8 -> IDRS [label="no"];
* A4 -> A6 [label="no"];
* A6 -> A8 [label="yes"];
* A6 -> A7 [label="no"];
* A7 -> BICGSTABL [label="yes"];
* A7 -> BICGSTAB [label="no"];
* A8 -> IDRSTABL [label="yes"];
* A8 -> IDRS [label="no"];
* }
* \enddot
* \code

View File

@@ -55,20 +55,20 @@ struct get_boxes_helper<ObjectList, VolumeList, int> {
*
* \param Scalar_ The underlying scalar type of the bounding boxes
* \param Dim_ The dimension of the space in which the hierarchy lives
* \param _Object The object type that lives in the hierarchy. It must have value semantics. Either
* bounding_box(_Object) must be defined and return an AlignedBox<Scalar_, Dim_> or bounding boxes must be provided to
* the tree initializer.
* \param Object_ The object type that lives in the hierarchy. It must have value semantics. Either
* `bounding_box(Object_)` must be defined and return an `AlignedBox<Scalar_, Dim_>` or bounding boxes
* must be provided to the tree initializer.
*
* This class provides a simple (as opposed to optimized) implementation of a bounding volume hierarchy analogous to a
* This class provides a simple (as opposed to optimized) implementation of a bounding volume hierarchy analogous to a
* Kd-tree. Given a sequence of objects, it computes their bounding boxes, constructs a Kd-tree of their centers and
* builds a BVH with the structure of that Kd-tree. When the elements of the tree are too expensive to be copied
* around, it is useful for _Object to be a pointer.
* around, it is useful for `Object_` to be a pointer.
*/
template <typename Scalar_, int Dim_, typename _Object>
template <typename Scalar_, int Dim_, typename Object_>
class KdBVH {
public:
enum { Dim = Dim_ };
typedef _Object Object;
typedef Object_ Object;
typedef std::vector<Object, aligned_allocator<Object> > ObjectList;
typedef Scalar_ Scalar;
typedef AlignedBox<Scalar, Dim> Volume;

View File

@@ -315,6 +315,16 @@ class EulerAngles : public RotationBase<EulerAngles<Scalar_, _System>, 3> {
EIGEN_EULER_ANGLES_TYPEDEFS(float, f)
EIGEN_EULER_ANGLES_TYPEDEFS(double, d)
// Specifically-referenced instantiations.
/** \typedef EulerAnglesXYZd
* \ingroup EulerAngles_Module
* Euler XYZ system with type double entries.
*/
/** \typedef EulerAnglesZYZf
* \ingroup EulerAngles_Module
* Euler ZYZ system with type float entries.
*/
namespace internal {
template <typename Scalar_, class _System>
struct traits<EulerAngles<Scalar_, _System> > {

View File

@@ -260,10 +260,11 @@ class EulerSystem {
friend struct internal::eulerangles_assign_impl;
};
#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) \
/** \ingroup EulerAngles_Module */ \
typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
/** Default XYZ Euler coordinate system.
* \ingroup EulerAngles_Module
*/
EIGEN_EULER_SYSTEM_TYPEDEF(X, Y, Z)
EIGEN_EULER_SYSTEM_TYPEDEF(X, Y, X)
EIGEN_EULER_SYSTEM_TYPEDEF(X, Z, Y)

View File

@@ -16,7 +16,7 @@
namespace Eigen {
/**
* \ingroup IterativeSolvers_Module
* \ingroup IterativeLinearSolvers_Module
* \brief iterative scaling algorithm to equilibrate rows and column norms in matrices
*
* This class can be used as a preprocessing tool to accelerate the convergence of iterative methods