26 #ifndef CASADI_INTERPOLANT_IMPL_HPP
27 #define CASADI_INTERPOLANT_IMPL_HPP
29 #include "interpolant.hpp"
30 #include "function_internal.hpp"
31 #include "plugin_interface.hpp"
45 const std::vector<double>& grid,
46 const std::vector<casadi_int>& offset,
47 const std::vector<double>& values,
56 std::string
class_name()
const override {
return "Interpolant";}
62 size_t get_n_in()
override {
return 1+has_parametric_values()+has_parametric_grid();}
75 Sparsity get_sparsity_in(casadi_int i)
override;
76 Sparsity get_sparsity_out(casadi_int i)
override;
83 std::string get_name_in(casadi_int i)
override;
84 std::string get_name_out(casadi_int i)
override;
96 void init(
const Dict& opts)
override;
99 static std::vector<casadi_int> interpret_lookup_mode(
const std::vector<std::string>& modes,
100 const std::vector<double>& grid,
const std::vector<casadi_int>& offset,
101 const std::vector<casadi_int>& margin_left=std::vector<casadi_int>(),
102 const std::vector<casadi_int>& margin_right=std::vector<casadi_int>());
104 static void stack_grid(
const std::vector< std::vector<double> >& grid,
105 std::vector<casadi_int>& offset, std::vector<double>& stacked);
107 static void check_grid(
const std::vector< std::vector<double> >& grid);
108 static void check_grid(
const std::vector<casadi_int>& grid);
110 static std::vector<double> meshgrid(
const std::vector< std::vector<double> >& grid);
114 const std::vector<double>& grid,
115 const std::vector<casadi_int>& offset,
116 const std::vector<double>& values,
122 static Function construct(
const std::string& solver,
const std::string& name,
123 const std::vector<double>& grid,
124 const std::vector<casadi_int>& offset,
125 const std::vector<double>& values,
129 typedef Function (* DoInline)(
const std::string& name,
130 const std::vector<double>& grid,
131 const std::vector<casadi_int>& offset,
132 const std::vector<double>& values,
142 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
143 static std::mutex mutex_solvers_;
198 casadi_int arg_values()
const;
199 casadi_int arg_grid()
const;
204 casadi_int coeff_size()
const;
205 static casadi_int coeff_size(
const std::vector<casadi_int>& offset, casadi_int m);
209 bool arg_values(casadi_int i)
const;
210 bool arg_grid(casadi_int i)
const;
Helper class for Serialization.
Internal class for Function.
std::vector< std::string > lookup_modes_
static const Options options_
Options.
std::string serialize_base_function() const override
String used to identify the immediate FunctionInternal subclass.
std::vector< casadi_int > offset_
size_t get_n_out() override
Number of function inputs and outputs.
std::vector< double > grid_
bool has_parametric_grid() const
Is parametric?
std::string class_name() const override
Get type name.
std::vector< double > values_
size_t get_n_in() override
Number of function inputs and outputs.
bool get_diff_in(casadi_int i) override
Which inputs are differentiable?
static const std::string infix_
Infix.
bool has_parametric_values() const
Is parametric?
const Options & get_options() const override
Options.
static std::map< std::string, Plugin > solvers_
Collection of solvers.
Interface for accessing input and output data structures.
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Options metadata for a class.