Metis 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
MetisTypes.hpp File Reference

Core type aliases for numeric and symbolic Eigen/CasADi interop. More...

#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <casadi/casadi.hpp>
#include <limits>
Include dependency graph for MetisTypes.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Eigen::NumTraits< casadi::MX >
 NumTraits specialization for casadi::MX Required for Eigen's operator<< and other scalar-dependent operations. More...
class  metis::SymbolicArg
 Universal symbolic argument wrapper for Function inputs/outputs. More...

Namespaces

namespace  Eigen
namespace  metis

Typedefs

template<typename Scalar>
using metis::MetisMatrix = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
 Dynamic-size matrix for both numeric and symbolic backends.
template<typename Scalar>
using metis::MetisVector = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
 Dynamic-size column vector for both numeric and symbolic backends.
template<typename Scalar>
using metis::Vec2 = Eigen::Matrix<Scalar, 2, 1>
 Fixed-size vectors and matrices for performance-critical code.
template<typename Scalar>
using metis::Vec3 = Eigen::Matrix<Scalar, 3, 1>
template<typename Scalar>
using metis::Vec4 = Eigen::Matrix<Scalar, 4, 1>
template<typename Scalar>
using metis::Mat2 = Eigen::Matrix<Scalar, 2, 2>
template<typename Scalar>
using metis::Mat3 = Eigen::Matrix<Scalar, 3, 3>
template<typename Scalar>
using metis::Mat4 = Eigen::Matrix<Scalar, 4, 4>
using metis::NumericScalar = double
 Numeric scalar type.
using metis::NumericMatrix = MetisMatrix<NumericScalar>
 Eigen::MatrixXd equivalent.
using metis::NumericVector = MetisVector<NumericScalar>
 Eigen::VectorXd equivalent.
using metis::SymbolicScalar = casadi::MX
 CasADi MX symbolic scalar.
using metis::SymbolicMatrix = MetisMatrix<SymbolicScalar>
 Eigen matrix of MX elements.
using metis::SymbolicVector = MetisVector<SymbolicScalar>
 Eigen vector of MX elements.
using metis::SparseMatrix = Eigen::SparseMatrix<double>
 Sparse matrix types for efficient storage of large, sparse numeric data.
using metis::SparseTriplet = Eigen::Triplet<double>
 (row, col, value) triplet
template<typename MatrixType>
using metis::LLT = Eigen::LLT<MatrixType>
 Dense decomposition type aliases matching Eigen's decomposition templates. Use these in metis internals and downstream code rather than referencing Eigen directly.
template<typename MatrixType>
using metis::LDLT = Eigen::LDLT<MatrixType>
template<typename MatrixType>
using metis::PartialPivLU = Eigen::PartialPivLU<MatrixType>
template<typename MatrixType>
using metis::FullPivLU = Eigen::FullPivLU<MatrixType>
template<typename MatrixType>
using metis::ColPivHouseholderQR = Eigen::ColPivHouseholderQR<MatrixType>
template<typename MatrixType, typename Ord = Eigen::COLAMDOrdering<int>>
using metis::SparseQR = Eigen::SparseQR<MatrixType, Ord>
template<typename MatrixType>
using metis::SimplicialLLT = Eigen::SimplicialLLT<MatrixType>
template<typename MatrixType>
using metis::SimplicialLDLT = Eigen::SimplicialLDLT<MatrixType>

Functions

SymbolicScalar metis::sym (const std::string &name)
 Create a named symbolic scalar variable.
SymbolicScalar metis::sym (const std::string &name, int rows, int cols=1)
 Create a named symbolic matrix variable.
SymbolicVector metis::sym_vector (const std::string &name, int size)
 Create a named symbolic vector (returns SymbolicVector).
SymbolicVector metis::sym_vec (const std::string &name, int size)
 Create a symbolic vector preserving the CasADi primitive connection.
std::pair< SymbolicVector, SymbolicScalarmetis::sym_vec_pair (const std::string &name, int size)
 Create symbolic vector and return both SymbolicVector and underlying MX.
SymbolicScalar metis::as_mx (const SymbolicVector &v)
 Get the underlying MX representation of a SymbolicVector.
template<typename Derived>
casadi::MX metis::to_mx (const Eigen::MatrixBase< Derived > &e)
 Convert Eigen matrix of MX (or numeric) to CasADi MX.
Eigen::Matrix< casadi::MX, Eigen::Dynamic, Eigen::Dynamic > metis::to_eigen (const casadi::MX &m)
 Convert CasADi MX to Eigen matrix of MX.
SymbolicVector metis::as_vector (const casadi::MX &m)
 Convert CasADi MX vector to SymbolicVector (Eigen container of MX).

Detailed Description

Core type aliases for numeric and symbolic Eigen/CasADi interop.