cgal/Surface_mesh_parameterization/doc_tex/Surface_mesh_parameterization/solvers.tex

69 lines
2.3 KiB
TeX

\section{Sparse Linear Algebra}
Parameterizing triangle meshes requires both efficient representation
of sparse matrices and efficient iterative or direct linear
solvers. We provide links to standard libraries ({\sc Taucs})
and include a separate package devoted to OpenNL sparse linear solver.
\subsection{List of Solvers and Concept}
We provide an interface to several sparse linear solvers, as models
of the \ccc{SparseLinearAlgebraTraits_d} concept:
\begin{itemize}
\item OpenNL \cite{cgal:l-nmdgp-05} is shipped with \cgal. This is the default solver:
\ccc{OpenNL::DefaultLinearSolverTraits<COEFFTYPE, MATRIX, VECTOR, SOLVER>} in OpenNL package \\
\ccc{OpenNL::SymmetricLinearSolverTraits<COEFFTYPE, MATRIX, VECTOR, SOLVER>} in OpenNL package \\
\item {\sc Taucs} is a state-of-the-art direct solver for sparse symmetric matrices.
\ccc{CGAL::Taucs_solver_traits<T>} \\
\ccc{CGAL::Taucs_symmetric_solver_traits<T>} \\
\end{itemize}
\subsection{{\sc Taucs} Solver Example}
The examples provided so far use the default sparse linear solver
OpenNL.
\ccc{Taucs_parameterization.C} computes the default parameterization
method (Floater Mean Value Coordinates with a circular border), but
specifically instantiates the {\sc Taucs} solver.
The differences with the first example \ccc{Simple_parameterization.C} are:
\begin{ccExampleCode}
#include <CGAL/Taucs_solver_traits.h>
...
//***************************************
// Floater Mean Value Coordinates parameterization
// (circular border) with TAUCS solver
//***************************************
// Circular border parameterizer (the default)
typedef CGAL::Circular_border_arc_length_parameterizer_3<Parameterization_polyhedron_adaptor>
Border_parameterizer;
// TAUCS solver
typedef CGAL::Taucs_solver_traits<double> Solver;
// Floater Mean Value Coordinates parameterization
// (circular border) with TAUCS solver
typedef CGAL::Mean_value_coordinates_parameterizer_3<Parameterization_polyhedron_adaptor,
Border_parameterizer,
Solver>
Parameterizer;
Parameterizer::Error_code err = CGAL::parameterize(mesh_adaptor, Parameterizer());
...
\end{ccExampleCode}