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

Alias elimination, BLT decomposition, and structural analysis passes. More...

#include "Function.hpp"
#include "JanusError.hpp"
#include "JanusTypes.hpp"
#include "Sparsity.hpp"
#include <algorithm>
#include <casadi/casadi.hpp>
#include <limits>
#include <numeric>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for StructuralTransforms.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  janus::StructuralTransformOptions
 Options for structural simplification and analysis passes. More...
struct  janus::AliasSubstitution
 A single eliminated alias or trivial affine variable relation. More...
struct  janus::AliasEliminationResult
 Result of alias elimination on a selected residual block. More...
struct  janus::StructuralBlock
 One diagonal block in a block-triangular decomposition. More...
struct  janus::BLTDecomposition
 Block-triangular decomposition and tearing metadata for a selected block. More...
struct  janus::StructuralAnalysis
 Combined alias-elimination and BLT analysis pass. More...
struct  janus::detail::AliasCandidate
struct  janus::detail::TarjanState

Namespaces

namespace  janus
namespace  janus::detail
 Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)).

Functions

void janus::detail::validate_options (const StructuralTransformOptions &opts, const std::string &context)
void janus::detail::validate_selected_block (const Function &fn, const StructuralTransformOptions &opts, const std::string &context)
std::vector< int > janus::detail::make_index_vector (int n)
std::vector< casadi::MX > janus::detail::mx_elements (const casadi::MX &v)
casadi::MX janus::detail::vertcat_subset (const std::vector< casadi::MX > &elems, const std::vector< int > &indices)
std::vector< int > janus::detail::find_row_nonzeros (const casadi::MX &A, int row)
bool janus::detail::has_no_free_symbols (const casadi::MX &expr)
bool janus::detail::coefficients_are_constant (const casadi::MX &A, int row, const std::vector< int > &nz_cols)
bool janus::detail::try_make_alias_candidate (const casadi::MX &expr, const casadi::MX &state_symbol, const std::vector< int > &active_var_indices, const StructuralTransformOptions &opts, AliasCandidate &candidate)
std::vector< int > janus::detail::erase_value (const std::vector< int > &values, int erased_index)
std::vector< int > janus::detail::casadi_to_int (const std::vector< casadi_int > &values)
void janus::detail::tarjan_visit (int node, TarjanState &state)
std::vector< std::vector< int > > janus::detail::strongly_connected_components (const std::vector< std::vector< int > > &adjacency, const std::vector< bool > &removed)
std::vector< int > janus::detail::tearing_recommendation (const casadi::Sparsity &incidence, const std::vector< int > &row_indices, const std::vector< int > &col_indices)
AliasEliminationResult janus::alias_eliminate (const Function &fn, const StructuralTransformOptions &opts={})
 Eliminate trivial affine alias rows from a selected residual block.
BLTDecomposition janus::block_triangularize (const Function &fn, const StructuralTransformOptions &opts={})
 Compute a block-triangular decomposition of a selected residual block.
StructuralAnalysis janus::structural_analyze (const Function &fn, const StructuralTransformOptions &opts={})
 Run alias elimination followed by BLT decomposition.

Detailed Description

Alias elimination, BLT decomposition, and structural analysis passes.