Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
VulcanTypes.hpp
Go to the documentation of this file.
1// Vulcan Core Types
2// Type aliases for Vulcan engineering utilities
3// Re-exports commonly used Janus types for dual numeric/symbolic compatibility
4#pragma once
5
6#include <janus/core/JanusTypes.hpp>
7
8namespace vulcan {
9
10// =============================================================================
11// Fixed-Size Matrix/Vector Templates (re-exported from Janus)
12// =============================================================================
13// These are templated on Scalar, so they work with both double and casadi::MX
14
15using janus::Mat2;
16using janus::Mat3;
17using janus::Mat4;
18using janus::Vec2;
19using janus::Vec3;
20using janus::Vec4;
21
22// =============================================================================
23// Dynamic-Size Matrix/Vector Templates
24// =============================================================================
25
27template <typename Scalar> using Matrix = janus::JanusMatrix<Scalar>;
28
30template <typename Scalar> using Vector = janus::JanusVector<Scalar>;
31
32// =============================================================================
33// Concrete Numeric Types (for when you specifically need double)
34// =============================================================================
35
36using NumericScalar = janus::NumericScalar; // double
37using NumericMatrix = janus::NumericMatrix; // Eigen::MatrixXd
38using NumericVector = janus::NumericVector; // Eigen::VectorXd
39
40// Convenience aliases for fixed-size numeric types
41using Vec2d = Vec2<double>;
42using Vec3d = Vec3<double>;
43using Vec4d = Vec4<double>;
44using Mat2d = Mat2<double>;
45using Mat3d = Mat3<double>;
46using Mat4d = Mat4<double>;
47
48// =============================================================================
49// Concrete Symbolic Types (for when you specifically need casadi::MX)
50// =============================================================================
51
52using SymbolicScalar = janus::SymbolicScalar; // casadi::MX
54 janus::SymbolicMatrix; // Eigen::Matrix<casadi::MX, Dynamic, Dynamic>
56 janus::SymbolicVector; // Eigen::Matrix<casadi::MX, Dynamic, 1>
57
58// Convenience aliases for fixed-size symbolic types
59using Vec2s = Vec2<SymbolicScalar>;
60using Vec3s = Vec3<SymbolicScalar>;
61using Vec4s = Vec4<SymbolicScalar>;
62using Mat2s = Mat2<SymbolicScalar>;
63using Mat3s = Mat3<SymbolicScalar>;
64using Mat4s = Mat4<SymbolicScalar>;
65
66// =============================================================================
67// Symbolic Utilities (re-exported for convenience)
68// =============================================================================
69
70using janus::as_mx; // Convert SymbolicVector to casadi::MX
71using janus::as_vector; // Convert casadi::MX to SymbolicVector
72using janus::sym; // Create scalar symbolic variable
73using janus::sym_vec; // Create symbolic vector (returns SymbolicVector)
74using janus::sym_vector; // Alias for sym_vec
75using janus::to_eigen; // Convert casadi::MX to Eigen matrix
76using janus::to_mx; // Convert Eigen matrix to casadi::MX
77
78} // namespace vulcan
Definition Aerodynamics.hpp:11
Mat3< double > Mat3d
Definition VulcanTypes.hpp:45
janus::SymbolicVector SymbolicVector
Definition VulcanTypes.hpp:55
janus::SymbolicMatrix SymbolicMatrix
Definition VulcanTypes.hpp:53
janus::NumericScalar NumericScalar
Definition VulcanTypes.hpp:36
janus::JanusVector< Scalar > Vector
Dynamic-size vector template.
Definition VulcanTypes.hpp:30
Vec2< SymbolicScalar > Vec2s
Definition VulcanTypes.hpp:59
janus::NumericMatrix NumericMatrix
Definition VulcanTypes.hpp:37
Vec3< SymbolicScalar > Vec3s
Definition VulcanTypes.hpp:60
Vec3< double > Vec3d
Definition VulcanTypes.hpp:42
janus::JanusMatrix< Scalar > Matrix
Dynamic-size matrix template (use with Scalar = double or SymbolicScalar).
Definition VulcanTypes.hpp:27
Mat4< double > Mat4d
Definition VulcanTypes.hpp:46
Mat2< double > Mat2d
Definition VulcanTypes.hpp:44
janus::SymbolicScalar SymbolicScalar
Definition VulcanTypes.hpp:52
Vec4< SymbolicScalar > Vec4s
Definition VulcanTypes.hpp:61
Mat2< SymbolicScalar > Mat2s
Definition VulcanTypes.hpp:62
Vec2< double > Vec2d
Definition VulcanTypes.hpp:41
Vec4< double > Vec4d
Definition VulcanTypes.hpp:43
Mat4< SymbolicScalar > Mat4s
Definition VulcanTypes.hpp:64
janus::NumericVector NumericVector
Definition VulcanTypes.hpp:38
Mat3< SymbolicScalar > Mat3s
Definition VulcanTypes.hpp:63