26 #ifndef CASADI_FMU_HPP
27 #define CASADI_FMU_HPP
29 #include "shared_object.hpp"
30 #include "printable.hpp"
31 #include "sparsity.hpp"
38 class DaeBuilderInternal;
60 class CASADI_EXPORT
Fmu
62 public SWIG_IF_ELSE(PrintableCommon, Printable<Fmu>) {
74 const std::vector<std::string>& scheme_in,
75 const std::vector<std::string>& scheme_out,
76 const std::map<std::string, std::vector<size_t>>& scheme,
77 const std::vector<std::string>& aux);
82 const std::string& name()
const;
87 const std::string& instance_name()
const;
104 size_t n_out()
const;
107 size_t index_in(
const std::string& n)
const;
110 size_t index_out(
const std::string& n)
const;
113 const std::vector<size_t>& ired(
size_t ind)
const;
116 const std::vector<size_t>& ored(
size_t ind)
const;
119 double nominal_in(
size_t ind)
const;
122 double nominal_out(
size_t ind)
const;
125 double min_in(
size_t ind)
const;
128 double max_in(
size_t ind)
const;
131 std::vector<double> all_nominal_in(
size_t ind)
const;
134 std::vector<double> all_nominal_out(
size_t ind)
const;
137 std::string desc_in(
FmuMemory* m,
size_t id,
bool more =
true)
const;
140 bool provides_directional_derivatives()
const;
143 bool provides_adjoint_derivatives()
const;
146 bool can_be_instantiated_only_once_per_process()
const;
149 Sparsity jac_sparsity(
const std::vector<size_t>& osub,
const std::vector<size_t>& isub)
const;
153 return jac_sparsity(ored(oind), ired(iind));
157 Sparsity hess_sparsity(
const std::vector<size_t>& r,
const std::vector<size_t>& c)
const;
161 return hess_sparsity(ired(r), ired(c));
177 void free_mem(
void *mem)
const;
180 void free_instance(
void* instance)
const;
183 void set(
FmuMemory* m,
size_t ind,
const double* value)
const;
186 void request(
FmuMemory* m,
size_t ind)
const;
192 void get(
FmuMemory* m,
size_t ind,
double* value)
const;
195 void set_fwd(
FmuMemory* m, casadi_int nseed,
const casadi_int*
id,
const double* v)
const;
198 void set_fwd(
FmuMemory* m,
size_t ind,
const double* v)
const;
201 void request_fwd(
FmuMemory* m, casadi_int nsens,
const casadi_int*
id,
202 const casadi_int* wrt_id)
const;
205 void request_fwd(
FmuMemory* m, casadi_int ind)
const;
208 int eval_fwd(
FmuMemory* m,
bool independent_seeds)
const;
211 void get_fwd(
FmuMemory* m, casadi_int nsens,
const casadi_int*
id,
double* v)
const;
214 void get_fwd(
FmuMemory* m,
size_t ind,
double* v)
const;
217 void set_adj(
FmuMemory* m, casadi_int nseed,
218 const casadi_int*
id,
const double* v)
const;
221 void set_adj(
FmuMemory* m,
size_t ind,
const double* v)
const;
224 void request_adj(
FmuMemory* m, casadi_int nsens,
const casadi_int*
id,
225 const casadi_int* wrt_id)
const;
228 void request_adj(
FmuMemory* m, casadi_int ind)
const;
234 void get_adj(
FmuMemory* m, casadi_int nsens,
235 const casadi_int*
id,
double* v)
const;
238 void get_adj(
FmuMemory* m,
size_t ind,
double* v)
const;
244 const std::vector<std::string>& name_in,
const InputStruct* in)
const;
Helper class for Serialization.
static std::string type_name()
Get type name.
Sparsity hess_sparsity(size_t r, size_t c) const
Sparsity jac_sparsity(size_t oind, size_t iind) const
Helper class for Serialization.
GenericShared implements a reference counting framework similar for efficient and.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
std::string to_string(TypeFmi2 v)