26#define eigen_assert( cond ) GISMO_ASSERT( cond, "" )
29#define EIGEN_MATRIXBASE_PLUGIN <gsMatrix/gsMatrixAddons.h>
30#define EIGEN_PLAINOBJECTBASE_PLUGIN <gsMatrix/gsPlainObjectBaseAddons.h>
33#include <gsEigen/Core>
35#if defined(gsMpfr_ENABLED)
36#include <unsupported/Eigen/MPRealSupport>
39#if defined(gsGmp_ENABLED)
40#include <unsupported/Eigen/MPQClassSupport>
43#include <gsEigen/Dense>
44#include <gsEigen/Sparse>
45#include <gsEigen/StdVector>
46#include <gsEigen/Geometry>
54#ifdef GISMO_WITH_SUPERLU
55#include <gsEigen/SuperLUSupport>
58#ifdef GISMO_WITH_PARDISO
59#include <gsEigen/PardisoSupport>
62#ifdef GISMO_WITH_PASTIX
63#include <gsEigen/PaStiXSupport>
77#ifdef GISMO_WITH_PYBIND11
78#include <pybind11/eigen.h>
83#undef EIGEN_MATRIXBASE_PLUGIN
84#undef EIGEN_PLAINOBJECTBASE_PLUGIN
90using gsEigen::internal::cast;
99template<
typename Derived>
100inline bool (
isnumber)(
const gsEigen::MatrixBase<Derived>& x)
101{
return ((x.array() == x.array())).all(); }
108template<
typename Derived>
109inline bool isfinite(
const gsEigen::MatrixBase<Derived>& x)
110{
return ( (x - x).array() == (x - x).array()).all(); }
116using gsEigen::Dynamic ;
122using gsEigen::RowMajor;
123using gsEigen::ColMajor;
124using gsEigen::AutoAlign;
126template<
class T,
int _Rows,
int _Cols>
class gsAsMatrix ;
127template<
class T,
int _Rows,
int _Cols>
class gsAsConstMatrix ;
129template<
class T,
int _Rows>
class gsAsVector ;
130template<
class T,
int _Rows>
class gsAsConstVector ;
133template <
int Dim,
int Change>
136 enum { D = Change+Dim<0 ? 0 : Dim + Change };
139struct ChangeDim<Dynamic, Change>
141 enum { D = Dynamic };
157 typedef gsEigen::ConjugateGradient<gsEigen::SparseMatrix<T,0,index_t>,
158 gsEigen::Lower|gsEigen::Upper, gsEigen::IdentityPreconditioner>
CGIdentity;
161 typedef gsEigen::ConjugateGradient<gsEigen::SparseMatrix<T,0,index_t>,
162 gsEigen::Lower|gsEigen::Upper, gsEigen::DiagonalPreconditioner<T> >
CGDiagonal;
165 typedef gsEigen::BiCGSTAB<gsEigen::SparseMatrix<T,0,index_t>,
169 typedef gsEigen::BiCGSTAB<gsEigen::SparseMatrix<T,0,index_t>,
173 typedef gsEigen::BiCGSTAB<gsEigen::SparseMatrix<T,0,index_t>,
177 typedef gsEigen::SimplicialLDLT<gsEigen::SparseMatrix<T,0,index_t> >
SimplicialLDLT;
180 typedef gsEigen::SimplicialLLT<gsEigen::SparseMatrix<T,0,index_t> >
SimplicialLLT;
183 typedef gsEigen::SparseLU<gsEigen::SparseMatrix<T,0,index_t>,
187 typedef gsEigen::SparseQR<gsEigen::SparseMatrix<T,0,index_t>,
190 #ifdef GISMO_WITH_SUPERLU
192 typedef gsEigen::SuperLU<gsEigen::SparseMatrix<T,0,index_t> > SuperLU;
195 #ifdef GISMO_WITH_PARDISO
197 typedef gsEigen::PardisoLDLT<gsEigen::SparseMatrix<T,0,int> > PardisoLDLT;
198 typedef gsEigen::PardisoLLT <gsEigen::SparseMatrix<T,0,int> > PardisoLLT;
199 typedef gsEigen::PardisoLU <gsEigen::SparseMatrix<T,0,int> > PardisoLU;
Adjugate extension for Eigen matrix objects.
BlockDiag extension for Eigen matrix objects.
BlockTranspose extension for Eigen matrix objects.
Wraps pointers as matrix objects.
Extra forward declarations related to the Eigen library.
Mathematical functions for use in G+Smo.
Wraps a matrix and attaches a block structure to it.
Provides declaration of Matrix class.
Provides declaration of Point class.
Provides declaration of the gsSparseMatrix class.
abstract interfaces for solvers and wrapper around Eigen solvers
Provides declaration of SparseVector class (wrapping Eigen)
Provides declaration of Vector class.
The G+Smo namespace, containing all definitions for the library.
bool() isnumber(const gsEigen::MatrixBase< Derived > &x)
Check if all the entires if the matrix x are not NAN (not a number)
Definition gsLinearAlgebra.h:100
bool isfinite(const gsEigen::MatrixBase< Derived > &x)
Check if all the entires if the matrix x are not INF (infinite)
Definition gsLinearAlgebra.h:109
Adaptor for Eigen types.
Definition gsLinearAlgebra.h:150
gsEigen::SimplicialLDLT< gsEigen::SparseMatrix< T, 0, index_t > > SimplicialLDLT
Direct LDLt factorization.
Definition gsLinearAlgebra.h:177
gsEigen::ConjugateGradient< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::Lower|gsEigen::Upper, gsEigen::IdentityPreconditioner > CGIdentity
Congugate gradient without preconditioner (identity as preconditioner)
Definition gsLinearAlgebra.h:158
gsEigen::SparseLU< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::COLAMDOrdering< index_t > > SparseLU
Sparse LU solver.
Definition gsLinearAlgebra.h:184
gsEigen::SimplicialLLT< gsEigen::SparseMatrix< T, 0, index_t > > SimplicialLLT
Direct LLt factorization.
Definition gsLinearAlgebra.h:180
gsEigen::ConjugateGradient< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::Lower|gsEigen::Upper, gsEigen::DiagonalPreconditioner< T > > CGDiagonal
Congugate gradient with diagonal (Jacobi) preconditioner.
Definition gsLinearAlgebra.h:162
gsEigen::BiCGSTAB< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::IdentityPreconditioner > BiCGSTABIdentity
BiCGSTAB without preconditioner (identity as preconditioner)
Definition gsLinearAlgebra.h:174
gsEigen::BiCGSTAB< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::DiagonalPreconditioner< T > > BiCGSTABDiagonal
BiCGSTAB with Diagonal (Jacobi) preconditioner.
Definition gsLinearAlgebra.h:170
gsEigen::BiCGSTAB< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::IncompleteLUT< T, index_t > > BiCGSTABILUT
BiCGSTAB with Incomplete LU factorization with dual-threshold strategy.
Definition gsLinearAlgebra.h:166
gsEigen::SparseQR< gsEigen::SparseMatrix< T, 0, index_t >, gsEigen::COLAMDOrdering< index_t > > SparseQR
Sparse QR solver.
Definition gsLinearAlgebra.h:188