fix the solver traits the template parameter of the class should model

This commit is contained in:
Sébastien Loriot 2015-08-24 17:58:21 +02:00
parent 92342d3ef1
commit 0f1a5b8fed
1 changed files with 17 additions and 17 deletions

View File

@ -136,8 +136,8 @@ struct Skel_polyhedron_items_3: CGAL::Polyhedron_items_with_id_3 {
/// boost::property_map<TriangleMesh, CGAL::vertex_point_t>::const_type. /// boost::property_map<TriangleMesh, CGAL::vertex_point_t>::const_type.
/// \endcode /// \endcode
/// ///
/// @tparam SparseLinearAlgebraTraits_d /// @tparam SolverTraits_
/// a model of `SparseLinearAlgebraTraitsWithFactor_d`.<br> /// a model of `NormalEquationSparseLinearAlgebraTraits_d`.<br>
/// <b>%Default:</b> If \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available /// <b>%Default:</b> If \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available
/// and `CGAL_EIGEN3_ENABLED` is defined, then an overload of `Eigen_solver_traits` is provided as default parameter: /// and `CGAL_EIGEN3_ENABLED` is defined, then an overload of `Eigen_solver_traits` is provided as default parameter:
/// \code /// \code
@ -154,7 +154,7 @@ struct Skel_polyhedron_items_3: CGAL::Polyhedron_items_with_id_3 {
template <class TriangleMesh, template <class TriangleMesh,
class Traits_ = Default, class Traits_ = Default,
class VertexPointMap_ = Default, class VertexPointMap_ = Default,
class SparseLinearAlgebraTraits_d_ = Default> class SolverTraits_ = Default>
class Mean_curvature_flow_skeletonization class Mean_curvature_flow_skeletonization
{ {
// Public types // Public types
@ -177,16 +177,16 @@ public:
#ifndef DOXYGEN_RUNNING #ifndef DOXYGEN_RUNNING
typedef typename Default::Get< typedef typename Default::Get<
SparseLinearAlgebraTraits_d_, SolverTraits_,
#if defined(CGAL_EIGEN3_ENABLED) #if defined(CGAL_EIGEN3_ENABLED)
CGAL::Eigen_solver_traits< CGAL::Eigen_solver_traits<
Eigen::SparseLU< Eigen::SparseLU<
CGAL::Eigen_sparse_matrix<double>::EigenType, CGAL::Eigen_sparse_matrix<double>::EigenType,
Eigen::COLAMDOrdering<int> > > Eigen::COLAMDOrdering<int> > >
#else #else
SparseLinearAlgebraTraits_d_ // no parameter provided, and Eigen is not enabled: so don't compile! SolverTraits_ // no parameter provided, and Eigen is not enabled: so don't compile!
#endif #endif
>::type SparseLinearAlgebraTraits_d; >::type SolverTraits;
#endif #endif
/// @cond CGAL_DOCUMENT_INTERNAL /// @cond CGAL_DOCUMENT_INTERNAL
@ -286,7 +286,7 @@ private:
/** Storing the weights for edges. */ /** Storing the weights for edges. */
std::vector<double> m_edge_weight; std::vector<double> m_edge_weight;
/** The sparse solver. */ /** The sparse solver. */
SparseLinearAlgebraTraits_d m_solver; SolverTraits m_solver;
/** Assign a unique id to a new vertex. */ /** Assign a unique id to a new vertex. */
int m_vertex_id_count; int m_vertex_id_count;
@ -617,12 +617,12 @@ public:
nrows = nver * 2; nrows = nver * 2;
} }
// Assemble linear system At * A * X = At * B // Assemble linear system At * A * X = At * B
typename SparseLinearAlgebraTraits_d::Matrix A(nrows, nver); typename SolverTraits::Matrix A(nrows, nver);
assemble_LHS(A); assemble_LHS(A);
typename SparseLinearAlgebraTraits_d::Vector X(nver), Bx(nrows); typename SolverTraits::Vector X(nver), Bx(nrows);
typename SparseLinearAlgebraTraits_d::Vector Y(nver), By(nrows); typename SolverTraits::Vector Y(nver), By(nrows);
typename SparseLinearAlgebraTraits_d::Vector Z(nver), Bz(nrows); typename SolverTraits::Vector Z(nver), Bz(nrows);
assemble_RHS(Bx, By, Bz); assemble_RHS(Bx, By, Bz);
MCFSKEL_DEBUG(std::cerr << "before solve\n";) MCFSKEL_DEBUG(std::cerr << "before solve\n";)
@ -887,7 +887,7 @@ private:
} }
/// Assemble the left hand side. /// Assemble the left hand side.
void assemble_LHS(typename SparseLinearAlgebraTraits_d::Matrix& A) void assemble_LHS(typename SolverTraits::Matrix& A)
{ {
MCFSKEL_DEBUG(std::cerr << "start LHS\n";) MCFSKEL_DEBUG(std::cerr << "start LHS\n";)
@ -948,9 +948,9 @@ private:
} }
/// Assemble the right hand side. /// Assemble the right hand side.
void assemble_RHS(typename SparseLinearAlgebraTraits_d::Vector& Bx, void assemble_RHS(typename SolverTraits::Vector& Bx,
typename SparseLinearAlgebraTraits_d::Vector& By, typename SolverTraits::Vector& By,
typename SparseLinearAlgebraTraits_d::Vector& Bz) typename SolverTraits::Vector& Bz)
{ {
MCFSKEL_DEBUG(std::cerr << "start RHS\n";) MCFSKEL_DEBUG(std::cerr << "start RHS\n";)
@ -1356,8 +1356,8 @@ private:
template <class TriangleMesh, template <class TriangleMesh,
class Traits_, class Traits_,
class VertexPointMap_, class VertexPointMap_,
class SparseLinearAlgebraTraits_d_> class SolverTraits_>
std::size_t Mean_curvature_flow_skeletonization<TriangleMesh, Traits_, VertexPointMap_, SparseLinearAlgebraTraits_d_>::collapse_short_edges() std::size_t Mean_curvature_flow_skeletonization<TriangleMesh, Traits_, VertexPointMap_, SolverTraits_>::collapse_short_edges()
{ {
std::size_t cnt=0, prev_cnt=0; std::size_t cnt=0, prev_cnt=0;