Giter Club home page Giter Club logo

polysolve's Introduction

PolySolve

Build codecov

This library contains a cross-platform Eigen wrapper for many different external linear solvers including (but not limited to):

  • CHOLMOD
  • Hypre
  • AMGCL
  • Pardiso

Example Usage

const std::string solver_name = "Hypre"
auto solver = Solver::create(solver_name, "");

// Configuration parameters like iteration or accuracy for iterative solvers
// solver->set_parameters(params);

// System sparse matrix
Eigen::SparseMatrix<double> A;

// Right-hand side
Eigen::VectorXd b;

// Solution
Eigen::VectorXd x(b.size());

solver->analyze_pattern(A, A.rows());
solver->factorize(A);
solver->solve(b, x);

You can use Solver::available_solvers() to obtain the list of available solvers.

Parameters

Polysolve uses a json file to provide parameters to the individual solvers. The following template can be used as a starting points, and a more detailed explanation of the parameters is below.

{
    "Eigen::LeastSquaresConjugateGradient": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Eigen::DGMRES": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Eigen::ConjugateGradient": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Eigen::BiCGSTAB": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Eigen::GMRES": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Eigen::MINRES": {
        "max_iter": 1000,
        "tolerance": 1e-6
    },
    "Pardiso": {
        "mtype": -1
    },
    "Hypre": {
        "max_iter": 1000,
        "pre_max_iter": 1000,
        "tolerance": 1e-6
    },
    "AMGCL": {
        "precond": {
            "relax": {
                "degree": 16,
                "type": "chebyshev",
                "power_iters": 100,
                "higher": 2,
                "lower": 0.008333333333,
                "scale": true
            },
            "class": "amg",
            "max_levels": 6,
            "direct_coarse": false,
            "ncycle": 2,
            "coarsening": {
                "type": "smoothed_aggregation",
                "estimate_spectral_radius": true,
                "relax": 1,
                "aggr": {
                    "eps_strong": 0
                }
            }
        },
        "solver": {
            "tol": 1e-10,
            "maxiter": 1000,
            "type": "cg"
        }
    }
}

Iterative solvers (AMGCL, Eigen Internal Solvers, HYPRE)

  • max_iter controls the solver's iterations, default 1000
  • conv_tol, tolerance controls the convergence tolerance, default 1e-10

Hypre Only

  • pre_max_iter, number of pre iterations, default 1

AMGCL Only

The default parameters of the AMGCL solver are:

{
    "precond": {
        "relax": {
            "degree": 16,
            "type": "chebyshev",
            "power_iters": 100,
            "higher": 2,
            "lower": 0.008333333333,
            "scale": true
        },
        "class": "amg",
        "max_levels": 6,
        "direct_coarse": false,
        "ncycle": 2,
        "coarsening": {
            "type": "smoothed_aggregation",
            "estimate_spectral_radius": true,
            "relax": 1,
            "aggr": {
                "eps_strong": 0
            }
        }
    },
    "solver": {
        "tol": 1e-10,
        "maxiter": 1000,
        "type": "cg"
    }
}

For a more details and options refer to the AMGCL documentation.

Pardiso

mtype, sets the matrix type, default 11

mtype Description
1 real and structurally symmetric
2 real and symmetric positive definite
-2 real and symmetric indefinite
3 complex and structurally symmetric
4 complex and Hermitian positive definite
-4 complex and Hermitian indefinite
6 complex and symmetric
11 real and nonsymmetric
13 complex and nonsymmetric

Troubleshooting

Compilation error: use of undeclared identifier 'SuiteSparse_config'

This error is cause by having a more recent version of SuiteSparse (โ‰ฅ v7.0.0) installed on your system than the version we download and build. We use @sergiud's fork of SuiteSparse which includes CMake support. However, the fork is not up to date with the latest version of SuiteSparse (currently v5.12.0 while the official release is at version v7.0.1). Version v7.0.0 changed the SuiteSparse_config.h header and no longer includes the necessary struct definitions.

Solution

For now, if you can, please downgrade (< v7.0.0) or uninstall your system version of SuiteSparse. In the meantime, we will work with the SuiteSparse developers to resolve this issue.

polysolve's People

Contributors

arvigj avatar daniel-zint avatar danielepanozzo avatar huangzizhou avatar jdumas avatar jiangzhongshi avatar map9959 avatar maxpaik16 avatar njsyw1997 avatar ryansynk avatar teseoch avatar xdarklemon avatar zfergus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

polysolve's Issues

`CppOptArmijo.cpp: error: 'Armijo' is not a member of 'cppoptlib'; did you mean 'cppoptlib::solver::linesearch::Armijo'?`

I have installed old cppoptlib from the commit referenced in recipes into ${prefix}/include/cppoptlib0, patched includes so that they point to cppoptlib0 folder, errors re missing headers are gone (as expected), but the build still fails:

/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/line_search/CppOptArmijo.cpp: In member function 'virtual double polysolve::nonlinear::line_search::CppOptArmijo::compute_descent_step_size(const polysolve::nonlinear::line_search::LineSearch::TVector&, const polysolve::nonlinear::line_search::LineSearch::TVector&, polysolve::nonlinear::Problem&, bool, double, const polysolve::nonlinear::line_search::LineSearch::TVector&, double)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/line_search/CppOptArmijo.cpp:21:39: error: 'Armijo' is not a member of 'cppoptlib'; did you mean 'cppoptlib::solver::linesearch::Armijo'?
   21 |         double step_size = cppoptlib::Armijo<Problem, 1>::linesearch(x, delta_x, objFunc, starting_step_size);
      |                                       ^~~~~~
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/line_search/CppOptArmijo.cpp:3:
/opt/local/include/cppoptlib/linesearch/armijo.h:7:7: note: 'cppoptlib::solver::linesearch::Armijo' declared here
    7 | class Armijo {
      |       ^~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/line_search/CppOptArmijo.cpp:21:53: error: expected primary-expression before '' token
   21 |         double step_size = cppoptlib::Armijo<Problem, 1>::linesearch(x, delta_x, objFunc, starting_step_size);
      |                                                     ^
make[2]: *** [CMakeFiles/polysolve.dir/src/polysolve/nonlinear/line_search/CppOptArmijo.cpp.o] Error 1

I switched to an older libfmt8 too. But no luck :(

I would like to update it in Macports, I have written ports for all new required dependencies, but I do not know how to proceed from this. It just does not seem to work.

Is there some special reason to use `cppoptlib` from 2018 instead of the current one?

polysolve does not build with the current version of cppoptlib, since its headers structure was changed since 2018, and this one does not exist:

In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.cpp:1:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.hpp:7:10: fatal error: cppoptlib/problem.h: No such file or directory
    7 | #include <cppoptlib/problem.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/polysolve.dir/src/polysolve/nonlinear/Problem.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/DescentStrategy.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Solver.hpp:3,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Solver.cpp:2:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.hpp:7:10: fatal error: cppoptlib/problem.h: No such file or directory
    7 | #include <cppoptlib/problem.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/DescentStrategy.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/BFGS.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/BFGS.cpp:3:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.hpp:7:10: fatal error: cppoptlib/problem.h: No such file or directory
    7 | #include <cppoptlib/problem.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/DescentStrategy.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/LBFGS.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/LBFGS.cpp:3:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.hpp:7:10: fatal error: cppoptlib/problem.h: No such file or directory
    7 | #include <cppoptlib/problem.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/polysolve.dir/src/polysolve/nonlinear/Solver.cpp.o] Error 1
make[2]: *** [CMakeFiles/polysolve.dir/src/polysolve/nonlinear/descent_strategies/BFGS.cpp.o] Error 1
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/descent_strategies/DescentStrategy.hpp:5,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Solver.hpp:3,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/BoxConstraintSolver.hpp:3,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/BoxConstraintSolver.cpp:1:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Problem.hpp:7:10: fatal error: cppoptlib/problem.h: No such file or directory
    7 | #include <cppoptlib/problem.h>
      |          ^~~~~~~~~~~~~~~~~~~~~

Is there some special reason to stay with the legacy version of this library or is it possible to amend the sources to use the current one?

(Or if the license allows, just bundle whatever headers are needed and drop an external dependency on it.)

Memory Spikes in Armijo Line-Search Algorithm

I'm running a simulation using PolyFEM, and after some time steps, the OS kills the process with an error message: 'Out of memory.'

I monitored the memory consumption and found that it remains stable, but suddenly it spikes in some time steps. Once it spikes, it stays at the same level until I call the build_basis() method in PolyFEM, at which point it releases the memory.

When I switch the line-search algorithm to Backtracking, the issue does not occur. It only happens when I use the Armijo or RobustArmijo algorithms.

I am unable to debug the code because the issue arises only in later time steps, and in the debug version, the code runs much slower. What could be causing the memory spike? Is there a potential workaround?

Eigen Solver not solving

Eigen::DGMRES has a large error

Eigen::ConjugateGradient, Eigen::BiCGSTAB, Eigen::GMRES, and Eigen::MINRES have large residual error on windows

Accelerate support is broken

In file included from /System/Library/Frameworks/vecLib.framework/Headers/vecLib.h:22,
                 from /System/Library/Frameworks/Accelerate.framework/Headers/Accelerate.h:20,
                 from /opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:4,
                 from /opt/local/include/eigen3/Eigen/AccelerateSupport:47,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:9:
/System/Library/Frameworks/vecLib.framework/Headers/vecLibTypes.h:86:26: error: two or more data types in declaration of 'vBool32'
   86 |         typedef __vector bool int                 vBool32;
      |                          ^~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:10:44: error: 'SparseFactorization_t' has not been declared
   10 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:11:7: error: no default argument for 'EnforceSquare_'
   11 | class AccelerateImpl;
      |       ^~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:25:68: error: 'SparseFactorizationCholesk' was not declared in this scope
   25 | using AccelerateLLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationCholesky, true>;
      |                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:25:101: error: template argument 3 is invalid
   25 | using AccelerateLLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationCholesky, true>;
      |                                                                                                     ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:39:69: error: 'SparseFactorizationLDLT' was not declared in this scope
   39 | using AccelerateLDLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLT, true>;
      |                                                                     ^~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:39:98: error: template argument 3 is invalid
   39 | using AccelerateLDLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLT, true>;
      |                                                                                                  ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:53:78: error: 'SparseFactorizationLDLTUnpivoted' was not declared in this scope
   53 | using AccelerateLDLTUnpivoted = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTUnpivoted, true>;
      |                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:53:116: error: template argument 3 is invalid
   53 | using AccelerateLDLTUnpivoted = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTUnpivoted, true>;
      |                                                                                                                    ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:67:72: error: 'SparseFactorizationLDLTSBK' was not declared in this scope
   67 | using AccelerateLDLTSBK = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTSBK, true>;
      |                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:67:104: error: template argument 3 is invalid
   67 | using AccelerateLDLTSBK = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTSBK, true>;
      |                                                                                                        ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:81:72: error: 'SparseFactorizationLDLTTPP' was not declared in this scope
   81 | using AccelerateLDLTTPP = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTTPP, true>;
      |                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:81:104: error: template argument 3 is invalid
   81 | using AccelerateLDLTTPP = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTTPP, true>;
      |                                                                                                        ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:94:52: error: 'SparseFactorizationQR' was not declared in this scope
   94 | using AccelerateQR = AccelerateImpl<MatrixType, 0, SparseFactorizationQR, false>;
      |                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:94:80: error: template argument 3 is invalid
   94 | using AccelerateQR = AccelerateImpl<MatrixType, 0, SparseFactorizationQR, false>;
      |                                                                                ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:107:61: error: 'SparseFactorizationCholeskyAtA' was not declared in this scope
  107 | using AccelerateCholeskyAtA = AccelerateImpl<MatrixType, 0, SparseFactorizationCholeskyAtA, false>;
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:107:98: error: template argument 3 is invalid
  107 | using AccelerateCholeskyAtA = AccelerateImpl<MatrixType, 0, SparseFactorizationCholeskyAtA, false>;
      |                                                                                                  ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:127:11: error: 'SparseOpaqueSymbolicFactorization' does not name a type
  127 |   typedef SparseOpaqueSymbolicFactorization SymbolicFactorization;
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:130:37: error: 'SymbolicFactorization' was not declared in this scope; did you mean 'NumericFactorization'?
  130 |   typedef AccelFactorizationDeleter<SymbolicFactorization> SymbolicFactorizationDeleter;
      |                                     ^~~~~~~~~~~~~~~~~~~~~
      |                                     NumericFactorization
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:130:58: error: template argument 1 is invalid
  130 |   typedef AccelFactorizationDeleter<SymbolicFactorization> SymbolicFactorizationDeleter;
      |                                                          ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:138:56: error: 'DenseVector_Double' was not declared in this scope
  138 | struct SparseTypesTrait<double> : SparseTypesTraitBase<DenseVector_Double, DenseMatrix_Double, SparseMatrix_Double,
      |                                                        ^~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:138:76: error: 'DenseMatrix_Double' was not declared in this scope
  138 | struct SparseTypesTrait<double> : SparseTypesTraitBase<DenseVector_Double, DenseMatrix_Double, SparseMatrix_Double,
      |                                                                            ^~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:138:96: error: 'SparseMatrix_Double' was not declared in this scope; did you mean 'SparseMatrixBase'?
  138 | struct SparseTypesTrait<double> : SparseTypesTraitBase<DenseVector_Double, DenseMatrix_Double, SparseMatrix_Double,
      |                                                                                                ^~~~~~~~~~~~~~~~~~~
      |                                                                                                SparseMatrixBase
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:139:56: error: 'SparseOpaqueFactorization_Double' was not declared in this scope
  139 |                                                        SparseOpaqueFactorization_Double> {};
      |                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:139:88: error: template argument 1 is invalid
  139 |                                                        SparseOpaqueFactorization_Double> {};
      |                                                                                        ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:139:88: error: template argument 2 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:139:88: error: template argument 3 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:139:88: error: template argument 4 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:28: error: 'DenseVector_Float' was not declared in this scope; did you mean 'ConstVectorFloat'?
  143 |     : SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
      |                            ^~~~~~~~~~~~~~~~~
      |                            ConstVectorFloat
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolverHypre.cpp: In member function 'virtual void polysolve::LinearSolverHypre::factorize(const polysolve::StiffnessMatrix&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolverHypre.cpp:104:45: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing]
  104 |         HYPRE_IJMatrixGetObject(A, (void **)&parcsr_A);
      |                                             ^~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:47: error: 'DenseMatrix_Float' was not declared in this scope
  143 |     : SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
      |                                               ^~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:66: error: 'SparseMatrix_Float' was not declared in this scope; did you mean 'SparseMatrixBase'?
  143 |     : SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
      |                                                                  ^~~~~~~~~~~~~~~~~~
      |                                                                  SparseMatrixBase
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolverHypre.cpp: In member function 'virtual void polysolve::LinearSolverHypre::solve(Eigen::Ref<const Eigen::Matrix<double, -1, 1>, 0, Eigen::InnerStride<1> >, Eigen::Ref<Eigen::Matrix<double, -1, 1>, 0, Eigen::InnerStride<1> >)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolverHypre.cpp:221:45: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing]
  221 |         HYPRE_IJVectorGetObject(b, (void **)&par_b);
      |                                             ^~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolverHypre.cpp:224:45: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing]
  224 |         HYPRE_IJVectorGetObject(x, (void **)&par_x);
      |                                             ^~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:86: error: 'SparseOpaqueFactorization_Float' was not declared in this scope
  143 |     : SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
      |                                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:117: error: template argument 1 is invalid
  143 |     : SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
      |                                                                                                                     ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:117: error: template argument 2 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:117: error: template argument 3 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:143:117: error: template argument 4 is invalid
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:148:44: error: 'SparseFactorization_t' has not been declared
  148 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:149:83: error: 'Solver_' was not declared in this scope; did you mean 'Solve'?
  149 | class AccelerateImpl : public SparseSolverBase<AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_> > {
      |                                                                                   ^~~~~~~
      |                                                                                   Solve
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:149:106: error: template argument 3 is invalid
  149 | class AccelerateImpl : public SparseSolverBase<AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_> > {
      |                                                                                                          ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:149:108: error: template argument 1 is invalid
  149 | class AccelerateImpl : public SparseSolverBase<AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>  {
      |                                                                                                            
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:320:44: error: 'SparseFactorization_t' has not been declared
  320 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:321:41: error: 'Solver_' was not declared in this scope; did you mean 'Solve'?
  321 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::compute(const MatrixType& a) {
      |                                         ^~~~~~~
      |                                         Solve
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:321:64: error: template argument 3 is invalid
  321 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::compute(const MatrixType& a) {
      |                                                                ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:321:81: error: 'MatrixType' does not name a type; did you mean 'MatrixType_'?
  321 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::compute(const MatrixType& a) {
      |                                                                                 ^~~~~~~~~~
      |                                                                                 MatrixType_
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: In function 'void Eigen::compute(const int&)':
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:324:3: error: 'm_nRows' was not declared in this scope
  324 |   m_nRows = a.rows();
      |   ^~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:324:15: error: request for member 'rows' in 'a', which is of non-class type 'const int'
  324 |   m_nRows = a.rows();
      |               ^~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:325:3: error: 'm_nCols' was not declared in this scope
  325 |   m_nCols = a.cols();
      |   ^~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:325:15: error: request for member 'cols' in 'a', which is of non-class type 'const int'
  325 |   m_nCols = a.cols();
      |               ^~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:327:3: error: 'AccelSparseMatrix' was not declared in this scope; did you mean 'SparseMatrix'?
  327 |   AccelSparseMatrix A{};
      |   ^~~~~~~~~~~~~~~~~
      |   SparseMatrix
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:330:29: error: 'A' was not declared in this scope
  330 |   buildAccelSparseMatrix(a, A, columnStarts);
      |                             ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:330:3: error: there are no arguments to 'buildAccelSparseMatrix' that depend on a template parameter, so a declaration of 'buildAccelSparseMatrix' must be available [-fpermissive]
  330 |   buildAccelSparseMatrix(a, A, columnStarts);
      |   ^~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:330:3: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:332:3: error: there are no arguments to 'doAnalysis' that depend on a template parameter, so a declaration of 'doAnalysis' must be available [-fpermissive]
  332 |   doAnalysis(A);
      |   ^~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:334:7: error: 'm_symbolicFactorization' was not declared in this scope
  334 |   if (m_symbolicFactorization) doFactorization(A);
      |       ^~~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:334:32: error: there are no arguments to doFactorization' that depend on a template parameter, so a declaration of 'doFactorization' must be available [-fpermissive]
  334 |   if (m_symbolicFactorization) doFactorization(A);
      |                                ^~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:336:3: error: 'm_isInitialized' was not declared in this scope
  336 |   m_isInitialized = true;
      |   ^~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: At global scope:
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:345:44: error: 'SparseFactorization_t' has not been declared
  345 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:346:41: error: 'Solver_' was not declared in this scope; did you mean 'Solve'?
  346 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::analyzePattern(const MatrixType& a) {
      |                                         ^~~~~~~
      |                                         Solve
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:346:64: error: template argument 3 is invalid
  346 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::analyzePattern(const MatrixType& a) {
      |                                                                ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:346:88: error: 'MatrixType' does not name a type; did you mean 'MatrixType_'?
  346 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::analyzePattern(const MatrixType& a) {
      |                                                                                        ^~~~~~~~~~
      |                                                                                        MatrixType_
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: In function 'void Eigen::analyzePattern(const int&)':
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:349:3: error: 'm_nRows' was not declared in this scope
  349 |   m_nRows = a.rows();
      |   ^~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:349:15: error: request for member 'rows' in 'a', which is of non-class type 'const int'
  349 |   m_nRows = a.rows();
      |               ^~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:350:3: error: 'm_nCols' was not declared in this scope
  350 |   m_nCols = a.cols();
      |   ^~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:350:15: error: request for member 'cols' in 'a', which is of non-class type 'const int'
  350 |   m_nCols = a.cols();
      |               ^~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:352:3: error: 'AccelSparseMatrix' was not declared in this scope; did you mean 'SparseMatrix'?
  352 |   AccelSparseMatrix A{};
      |   ^~~~~~~~~~~~~~~~~
      |   SparseMatrix
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:355:29: error: 'A' was not declared in this scope
  355 |   buildAccelSparseMatrix(a, A, columnStarts);
      |                             ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:355:3: error: there are no arguments to 'buildAccelSparseMatrix' that depend on a template parameter, so a declaration of 'buildAccelSparseMatrix' must be available [-fpermissive]
  355 |   buildAccelSparseMatrix(a, A, columnStarts);
      |   ^~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:357:3: error: there are no arguments to 'doAnalysis' that depend on a template parameter, so a declaration of 'doAnalysis' must be available [-fpermissive]
  357 |   doAnalysis(A);
      |   ^~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:359:3: error: 'm_isInitialized' was not declared in this scope
  359 |   m_isInitialized = true;
      |   ^~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: At global scope:
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:368:44: error: 'SparseFactorization_t' has not been declared
  368 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:369:41: error: 'Solver_' was not declared in this scope; did you mean 'Solve'?
  369 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::factorize(const MatrixType& a) {
      |                                         ^~~~~~~
      |                                         Solve
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:369:64: error: template argument 3 is invalid
  369 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::factorize(const MatrixType& a) {
      |                                                                ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:369:83: error: 'MatrixType' does not name a type; did you mean 'MatrixType_'?
  369 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::factorize(const MatrixType& a) {
      |                                                                                   ^~~~~~~~~~
      |                                                                                   MatrixType_
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: In function 'void Eigen::factorize(const int&)':
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:375:3: error: 'AccelSparseMatrix' was not declared in this scope; did you mean 'SparseMatrix'?
  375 |   AccelSparseMatrix A{};
      |   ^~~~~~~~~~~~~~~~~
      |   SparseMatrix
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:378:29: error: 'A' was not declared in this scope
  378 |   buildAccelSparseMatrix(a, A, columnStarts);
      |                             ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:378:3: error: there are no arguments to 'buildAccelSparseMatrix' that depend on a template parameter, so a declaration of 'buildAccelSparseMatrix' must be available [-fpermissive]
  378 |   buildAccelSparseMatrix(a, A, columnStarts);
      |   ^~~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:380:3: error: there are no arguments to 'doFactorization' that depend on a template parameter, so a declaration of 'doFactorization' must be available [-fpermissive]
  380 |   doFactorization(A);
      |   ^~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h: At global scope:
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:383:44: error: 'SparseFactorization_t' has not been declared
  383 | template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
      |                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:385:41: error: 'Solver_' was not declared in this scope; did you mean 'Solve'?
  385 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::_solve_impl(const MatrixBase<Rhs>& b,
      |                                         ^~~~~~~
      |                                         Solve
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:385:64: error: template argument 3 is invalid
  385 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::_solve_impl(const MatrixBase<Rhs>& b,
      |                                                                ^
/opt/local/include/eigen3/Eigen/src/AccelerateSupport/AccelerateSupport.h:385:6: error: too many template-parameter-lists
  385 | void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::_solve_impl(const MatrixBase<Rhs>& b,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp: In static member function 'static std::unique_ptr<polysolve::LinearSolver> polysolve::LinearSolver::create(const std::string&, const std::string&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:198:38: error: 'AccelerateLLT' was not declared in this scope
  198 |             RETURN_DIRECT_SOLVER_PTR(AccelerateLLT, "Eigen::AccelerateLLT");
      |                                      ^~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:124:57: note: in definition of macro 'RETURN_DIRECT_SOLVER_PTR'
  124 |         return std::make_unique<LinearSolverEigenDirect<EigenSolver< \
      |                                                         ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:24: error: template argument 1 is invalid
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |                        ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:24: note: in definition of macro 'RETURN_DIRECT_SOLVER_PTR'
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |                        ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:41: error: invalid operands of types '<unresolved overloaded function type>' and 'const char [21]' to binary 'operator>'
  124 |         return std::make_unique<LinearSolverEigenDirect<EigenSolver< \
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     |
      |                     <unresolved overloaded function type>
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:198:13: note: in expansion of macro 'RETURN_DIRECT_SOLVER_PTR'
  198 |             RETURN_DIRECT_SOLVER_PTR(AccelerateLLT, "Eigen::AccelerateLLT");
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:202:38: error: 'AccelerateLDLT' was not declared in this scope
  202 |             RETURN_DIRECT_SOLVER_PTR(AccelerateLDLT, "Eigen::AccelerateLDLT");
      |                                      ^~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:124:57: note: in definition of macro 'RETURN_DIRECT_SOLVER_PTR'
  124 |         return std::make_unique<LinearSolverEigenDirect<EigenSolver< \
      |                                                         ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:24: error: template argument 1 is invalid
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |                        ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:24: note: in definition of macro 'RETURN_DIRECT_SOLVER_PTR'
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |                        ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:125:41: error: invalid operands of types '<unresolved overloaded function type>' and 'const char [22]' to binary 'operator>'
  124 |         return std::make_unique<LinearSolverEigenDirect<EigenSolver< \
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     |
      |                     <unresolved overloaded function type>
  125 |             polysolve::StiffnessMatrix>>>(Name);                     \
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-91f7e3a4a44df4ca541cb46923d5593a49254efd/src/polysolve/LinearSolver.cpp:202:13: note: in expansion of macro 'RETURN_DIRECT_SOLVER_PTR'
  202 |             RETURN_DIRECT_SOLVER_PTR(AccelerateLDLT, "Eigen::AccelerateLDLT");
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/polysolve.dir/src/polysolve/LinearSolver.cpp.o] Error 1

Incompatibility with `libfmt10`? `error: 'fmt::v10::detail::type_is_unformattable_for<cppoptlib::Status, char> _' has incomplete type`

Is something wrong on my side or libfmt10 is unsupported?

/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_polysolve/polysolve/work/polysolve-73d98008631b8ae1617131cb4896f784ae2ec5fe/src/polysolve/nonlinear/Solver.cpp:511:21:   required from here
/opt/local/include/libfmt10/fmt/core.h:1576:63: error: 'fmt::v10::detail::type_is_unformattable_for<cppoptlib::Status, char> _' has incomplete type
 1576 |     type_is_unformattable_for<T, typename Context::char_type> _;
      |                                                               ^
/opt/local/include/libfmt10/fmt/core.h:1580:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
 1580 |       formattable,
      |       ^~~~~~~~~~~
/opt/local/include/libfmt10/fmt/core.h:1580:7: note: 'formattable' evaluates to false

May be related to using outdated cppoptlib: #63

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.