Commit bfa652bb authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#9 Fix Doxygen comments for bilinear form operator instances.

parent 02521347
......@@ -24,99 +24,103 @@ namespace HappyHeart
{
namespace LocalVariationalOperatorNS
{
class Ale final
: public BilinearLocalVariationalOperator<LocalMatrix>
namespace LocalVariationalOperatorNS
{
public:
//! \copydoc doxygen_hide_alias_self
using self = Ale;
/*!
* \brief Local operator for \a Ale.
*/
class Ale final
: public BilinearLocalVariationalOperator<LocalMatrix>
{
public:
//! Alias to unique pointer.
using unique_ptr = std::unique_ptr<self>;
//! \copydoc doxygen_hide_alias_self
using self = Ale;
//! Returns the name of the operator.
static const std::string& ClassName();
//! Alias to unique pointer.
using unique_ptr = std::unique_ptr<self>;
//! Returns the name of the operator.
static const std::string& ClassName();
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
//! Convenient alias.
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
public:
public:
/// \name Special members.
///@{
/// \name Special members.
///@{
/*!
* \brief Constructor.
*
* \param[in] unknown_list List of unknowns considered by the operators. Its type (vector_shared_ptr)
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
*/
explicit Ale(const ExtendedUnknown::vector_const_shared_ptr& unknown_list,
elementary_data_type&& elementary_data,
const scalar_parameter& density);
/*!
* \brief Constructor.
*
* \param[in] unknown_list List of unknowns considered by the operators. Its type (vector_shared_ptr)
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
* \param[in] density Density as a \a Parameter.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
*/
explicit Ale(const ExtendedUnknown::vector_const_shared_ptr& unknown_list,
elementary_data_type&& elementary_data,
const scalar_parameter& density);
//! Destructor.
~Ale();
//! Destructor.
~Ale();
//! Copy constructor.
Ale(const Ale&) = delete;
//! Copy constructor.
Ale(const Ale&) = delete;
//! Move constructor.
Ale(Ale&&) = delete;
//! Move constructor.
Ale(Ale&&) = delete;
//! Copy affectation.
Ale& operator=(const Ale&) = delete;
//! Copy affectation.
Ale& operator=(const Ale&) = delete;
//! Move affectation.
Ale& operator=(Ale&&) = delete;
//! Move affectation.
Ale& operator=(Ale&&) = delete;
///@}
///@}
//! Compute the elementary vector.
void ComputeEltArray();
//! Compute the elementary vector.
void ComputeEltArray();
//! Constant accessor to the former local velocity required by ComputeEltArray().
const std::vector<double>& GetFormerLocalVelocity() const noexcept;
//! Constant accessor to the former local velocity required by ComputeEltArray().
const std::vector<double>& GetFormerLocalVelocity() const noexcept;
//! Non constant accessor to the former local velocity required by ComputeEltArray().
std::vector<double>& GetNonCstFormerLocalVelocity() noexcept;
//! Non constant accessor to the former local velocity required by ComputeEltArray().
std::vector<double>& GetNonCstFormerLocalVelocity() noexcept;
private:
private:
//! Access to the density.
const scalar_parameter& GetDensity() const noexcept;
//! Access to the density.
const scalar_parameter& GetDensity() const noexcept;
private:
private:
//! Density.
const scalar_parameter& density_;
//! Density.
const scalar_parameter& density_;
/*!
* \brief Velocity obtained at previous time iteration expressed at the local level.
*
* \internal <b><tt>[internal]</tt></b> This is a work variable that should be used only within ComputeEltArray.
*/
std::vector<double> former_local_velocity_;
/*!
* \brief Velocity obtained at previous time iteration expressed at the local level.
*
* \internal <b><tt>[internal]</tt></b> This is a work variable that should be used only within ComputeEltArray.
*/
std::vector<double> former_local_velocity_;
};
};
} // namespace LocalVariationalOperatorNS
} // namespace LocalVariationalOperatorNS
} // namespace Advanced
......
......@@ -32,7 +32,10 @@ namespace HappyHeart
namespace LocalVariationalOperatorNS
{
/*!
* \brief Local operator for \a Bidomain.
*/
class Bidomain final
: public BilinearLocalVariationalOperator<LocalMatrix>,
public Crtp::LocalMatrixStorage<Bidomain, 9u>
......@@ -49,7 +52,7 @@ namespace HappyHeart
//! Returns the name of the operator.
static const std::string& ClassName();
//! Convenient typedef.
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
public:
......@@ -64,6 +67,11 @@ namespace HappyHeart
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
* \param[in] intracellular_trans_diffusion_tensor Intracellular trans diffusion tensor.
* \param[in] extracellular_trans_diffusion_tensor Extracellular trans diffusion tensor.
* \param[in] intracellular_fiber_diffusion_tensor Intracellular fiber diffusion tensor.
* \param[in] extracellular_fiber_diffusion_tensor Extracellular fiber diffusion tensor.
* \param[in] fibers Vectorial fibers.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
......
......@@ -149,7 +149,7 @@ namespace HappyHeart
private:
//! Convenient enum to tag each of the two \a Unknowns considered.
enum class UnknownIndex
{
vectorial = 0,
......
......@@ -29,6 +29,9 @@ namespace HappyHeart
namespace LocalVariationalOperatorNS
{
/*!
* \brief Local operator for \a Stokes.
*/
class Stokes final
: public BilinearLocalVariationalOperator<LocalSymmetricMatrix>,
public Crtp::LocalMatrixStorage<Stokes, 2u>
......@@ -42,6 +45,7 @@ namespace HappyHeart
//! Returns the name of the operator.
static const std::string& ClassName();
//! Convenient alias.
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
public:
......@@ -56,6 +60,7 @@ namespace HappyHeart
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
* \param[in] fluid_viscosity Viscosity of the fluid.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
......@@ -130,7 +135,7 @@ namespace HappyHeart
private:
//! Convenient enum to tag each of the two \a Unknowns considered.
enum class UnknownIndex
{
vectorial = 0,
......
......@@ -30,174 +30,192 @@ namespace HappyHeart
{
namespace LocalVariationalOperatorNS
{
class SurfacicBidomain final
: public BilinearLocalVariationalOperator<LocalMatrix>,
public Crtp::LocalMatrixStorage<SurfacicBidomain, 18u>,
public Crtp::LocalVectorStorage<SurfacicBidomain, 3ul>
namespace LocalVariationalOperatorNS
{
public:
//! \copydoc doxygen_hide_alias_self
using self = SurfacicBidomain;
/*!
* \brief Local operator for \a SurfacicBidomain.
*/
class SurfacicBidomain final
: public BilinearLocalVariationalOperator<LocalMatrix>,
public Crtp::LocalMatrixStorage<SurfacicBidomain, 18u>,
public Crtp::LocalVectorStorage<SurfacicBidomain, 3ul>
{
//! Alias to unique pointer.
using unique_ptr = std::unique_ptr<self>;
public:
//! Returns the name of the operator.
static const std::string& ClassName();
//! \copydoc doxygen_hide_alias_self
using self = SurfacicBidomain;
//! Alias to unique pointer.
using unique_ptr = std::unique_ptr<self>;
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
//! Returns the name of the operator.
static const std::string& ClassName();
//! Convenient alias.
using scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
public:
/// \name Special members.
///@{
public:
/*!
* \brief Constructor.
*
* \param[in] unknown_list List of unknowns considered by the operators. Its type (vector_shared_ptr)
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
*/
explicit SurfacicBidomain(const ExtendedUnknown::vector_const_shared_ptr& unknown_list,
elementary_data_type&& elementary_data,
const scalar_parameter& intracellular_trans_diffusion_tensor,
const scalar_parameter& extracellular_trans_diffusion_tensor,
const scalar_parameter& intracellular_fiber_diffusion_tensor,
const scalar_parameter& extracellular_fiber_diffusion_tensor,
const scalar_parameter& heterogeneous_conductivity_coefficient,
const FiberList<ParameterNS::Type::vector>& fibers,
const FiberList<ParameterNS::Type::scalar>& angles);
/// \name Special members.
///@{
//! Destructor.
~SurfacicBidomain();
/*!
* \brief Constructor.
*
* \param[in] unknown_list List of unknowns considered by the operators. Its type (vector_shared_ptr)
* is due to constraints from genericity; for current operator it is expected to hold exactly
* two unknowns (the first one vectorial and the second one scalar).
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
* \param[in] intracellular_trans_diffusion_tensor Intracellular trans diffusion tensor.
* \param[in] extracellular_trans_diffusion_tensor Extracellular trans diffusion tensor.
* \param[in] intracellular_fiber_diffusion_tensor Intracellular fiber diffusion tensor.
* \param[in] extracellular_fiber_diffusion_tensor Extracellular fiber diffusion tensor.
* \param[in] heterogeneous_conductivity_coefficient Heterogeneous conductivity coefficient.
* \param[in] fibers Fibers.
* \param[in] angles Angles. \todo #9 Should be completed.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
*/
explicit SurfacicBidomain(const ExtendedUnknown::vector_const_shared_ptr& unknown_list,
elementary_data_type&& elementary_data,
const scalar_parameter& intracellular_trans_diffusion_tensor,
const scalar_parameter& extracellular_trans_diffusion_tensor,
const scalar_parameter& intracellular_fiber_diffusion_tensor,
const scalar_parameter& extracellular_fiber_diffusion_tensor,
const scalar_parameter& heterogeneous_conductivity_coefficient,
const FiberList<ParameterNS::Type::vector>& fibers,
const FiberList<ParameterNS::Type::scalar>& angles);
//! Copy constructor.
SurfacicBidomain(const SurfacicBidomain&) = delete;
//! Destructor.
~SurfacicBidomain();
//! Move constructor.
SurfacicBidomain(SurfacicBidomain&&) = delete;
//! Copy constructor.
SurfacicBidomain(const SurfacicBidomain&) = delete;
//! Copy affectation.
SurfacicBidomain& operator=(const SurfacicBidomain&) = delete;
//! Move constructor.
SurfacicBidomain(SurfacicBidomain&&) = delete;
//! Move affectation.
SurfacicBidomain& operator=(SurfacicBidomain&&) = delete;
//! Copy affectation.
SurfacicBidomain& operator=(const SurfacicBidomain&) = delete;
///@}
//! Move affectation.
SurfacicBidomain& operator=(SurfacicBidomain&&) = delete;
//! Compute the elementary vector.
void ComputeEltArray();
///@}
private:
//! Compute the elementary vector.
void ComputeEltArray();
void ComputeContravariantBasis(const Advanced::LocalVariationalOperatorNS::InformationsAtQuadraturePoint& infos_at_quad_pt);
private:
private:
/*!
* \brief Compute contravariant basis.
*
* \param[in] infos_at_quad_pt Objects which stores many relevant data for the elementary computation at
* a given \a QuadraturePoint.
*/
void ComputeContravariantBasis(const Advanced::LocalVariationalOperatorNS::InformationsAtQuadraturePoint& infos_at_quad_pt);
//! Get the first diffusion tensor.
const scalar_parameter& GetIntracelluarTransDiffusionTensor() const noexcept;
private:
//! Get the second diffusion tensor.
const scalar_parameter& GetExtracelluarTransDiffusionTensor() const noexcept;
//! Get the first diffusion tensor.
const scalar_parameter& GetIntracelluarTransDiffusionTensor() const noexcept;
//! Get the thrid diffusion tensor.
const scalar_parameter& GetIntracelluarFiberDiffusionTensor() const noexcept;
//! Get the second diffusion tensor.
const scalar_parameter& GetExtracelluarTransDiffusionTensor() const noexcept;
//! Get the fourth diffusion tensor.
const scalar_parameter& GetExtracelluarFiberDiffusionTensor() const noexcept;
//! Get the thrid diffusion tensor.
const scalar_parameter& GetIntracelluarFiberDiffusionTensor() const noexcept;
//! Get the coefficient for Heterogeneous Conductivity.
const scalar_parameter& GetHeterogeneousConductivityCoefficient() const noexcept;
//! Get the fourth diffusion tensor.
const scalar_parameter& GetExtracelluarFiberDiffusionTensor() const noexcept;
//! Get the fiber.
const FiberList<ParameterNS::Type::vector>& GetFibers() const noexcept;
//! Get the coefficient for Heterogeneous Conductivity.
const scalar_parameter& GetHeterogeneousConductivityCoefficient() const noexcept;
//! Get the angles.
const FiberList<ParameterNS::Type::scalar>& GetAngles() const noexcept;
//! Get the fiber.
const FiberList<ParameterNS::Type::vector>& GetFibers() const noexcept;
private:
//! Get the angles.
const FiberList<ParameterNS::Type::scalar>& GetAngles() const noexcept;
//! \name Material parameters.
///@{
private:
//! First diffusion tensor = sigma_i_t.
const scalar_parameter& intracellular_trans_diffusion_tensor_;
//! \name Material parameters.
///@{
//! Second diffusion tensor = sigma_e_t.
const scalar_parameter& extracellular_trans_diffusion_tensor_;
//! First diffusion tensor = sigma_i_t.
const scalar_parameter& intracellular_trans_diffusion_tensor_;
//! Third diffusion tensor = sigma_i_l.
const scalar_parameter& intracellular_fiber_diffusion_tensor_;
//! Second diffusion tensor = sigma_e_t.
const scalar_parameter& extracellular_trans_diffusion_tensor_;
//! Fourth diffusion tensor = sigma_e_l.
const scalar_parameter& extracellular_fiber_diffusion_tensor_;
//! Third diffusion tensor = sigma_i_l.
const scalar_parameter& intracellular_fiber_diffusion_tensor_;
//! Coefficient for heterogeneous_conductivity.
const scalar_parameter& heterogeneous_conductivity_coefficient_;
//! Fourth diffusion tensor = sigma_e_l.
const scalar_parameter& extracellular_fiber_diffusion_tensor_;
//! Coefficient for heterogeneous_conductivity.
const scalar_parameter& heterogeneous_conductivity_coefficient_;
//! Fibers parameter.
const FiberList<ParameterNS::Type::vector>& fibers_;
//! Angles parameter.
const FiberList<ParameterNS::Type::scalar>& angles_;
//! Fibers parameter.
const FiberList<ParameterNS::Type::vector>& fibers_;
///@}
//! Angles parameter.
const FiberList<ParameterNS::Type::scalar>& angles_;
private:
///@}
/// \name Useful indexes to fetch the work matrices and vectors.
///@{
private:
//! Indexes for local matrices.
enum class LocalMatrixIndex : std::size_t
{
block_matrix1 = 0,
block_matrix2,
block_matrix3,
block_matrix4,
transposed_dphi,
transposed_dpsi,
dphi_sigma,
dpsi_sigma,
dphi_contravariant_metric_tensor,
dpsi_contravariant_metric_tensor,
tau_sigma,
tau_ortho_sigma,
covariant_basis,
contravariant_basis,
transposed_covariant_basis,
covariant_metric_tensor,
contravariant_metric_tensor,
reduced_contravariant_metric_tensor
};
/// \name Useful indexes to fetch the work matrices and vectors.
///@{
enum class LocalMatrixIndex : std::size_t
{
block_matrix1 = 0,
block_matrix2,
block_matrix3,
block_matrix4,
transposed_dphi,
transposed_dpsi,
dphi_sigma,
dpsi_sigma,
dphi_contravariant_metric_tensor,
dpsi_contravariant_metric_tensor,
tau_sigma,
tau_ortho_sigma,
covariant_basis,
contravariant_basis,
transposed_covariant_basis,
covariant_metric_tensor,
contravariant_metric_tensor,
reduced_contravariant_metric_tensor
};
//! Indexes for local vectors.
enum class LocalVectorIndex : std::size_t
{
tau_interpolate_ortho = 0,
tau_covariant_basis,
tau_ortho_covariant_basis
};
///@}
enum class LocalVectorIndex : std::size_t
{
tau_interpolate_ortho = 0,
tau_covariant_basis,
tau_ortho_covariant_basis
};
///@}
};
};
} // namespace LocalVariationalOperatorNS
} // namespace LocalVariationalOperatorNS
} // namespace Advanced
......
......@@ -34,7 +34,7 @@ namespace HappyHeart
/*!
* \brief Implementation of mass operator.
* \brief Implementation of mass operator with a weight.
*/
template<class ParameterT>
class VariableMass final
......@@ -67,6 +67,7 @@ namespace HappyHeart
* is due to constraints from genericity; for current operator it is expected to hold exactly
* one unknown.
* \param[in] elementary_data Elementary matrices and vectors that will perform the calculations.
* \param[in] parameter_factor \a Parameter which provides the weight considered at each \a QuadraturePoint.
*
* \internal <b><tt>[internal]</tt></b> This constructor must not be called manually: it is involved only in
* GlobalVariationalOperator<DerivedT, LocalVariationalOperatorT>::CreateLocalOperatorList() method.
......